diff --git a/metagpt/utils/token_counter.py b/metagpt/utils/token_counter.py index a57871de7..d68b9e752 100644 --- a/metagpt/utils/token_counter.py +++ b/metagpt/utils/token_counter.py @@ -406,13 +406,17 @@ SPARK_TOKENS = { def count_message_tokens(messages, model="gpt-3.5-turbo-0125"): """Return the number of tokens used by a list of messages.""" if "claude" in model: - # rough estimation for models newer than claude-2.1 - vo = anthropic.Client() - num_tokens = 0 - for message in messages: - for key, value in message.items(): - num_tokens += vo.count_tokens(str(value)) - return num_tokens + # rough estimation for models newer than claude-2.1, needs api_key or auth_token + ac = anthropic.Client() + system_prompt = "" + new_messages = [] + for msg in messages: + if msg.get("role") == "system": + system_prompt = msg.get("content") + else: + new_messages.append(msg) + num_tokens = ac.beta.messages.count_tokens(messages=new_messages, model=model, system=system_prompt) + return num_tokens.get("input_tokens", 0) try: encoding = tiktoken.encoding_for_model(model) except KeyError: diff --git a/setup.py b/setup.py index 658c82219..1fe74b64d 100644 --- a/setup.py +++ b/setup.py @@ -98,7 +98,7 @@ extras_require["android_assistant"] = [ setup( name="metagpt", - version="0.8.1", + version="1.0.0", description="The Multi-Agent Framework", long_description=long_description, long_description_content_type="text/markdown",