增加对GLM-4大模型的支持
还没有人认领这个 Issue。
评估
调研方向
从调用 tiktoken.encoding_for_model 的 camel/model_backend.py 开始,使用 GLM_4 和提供的 BASE_URL 重现报告中的命令。跟踪模型名称和 token 编码的选择过程。当可以通过此命令调用 GLM-4,且不再出现报告中的 tokenizer KeyError 时,即表示完成。
由索引模型根据 Issue 内容生成。
描述
调用方法:
export BASE_URL="https://open.bigmodel.cn/api/paas/v4/"
export OPENAI_API_KEY="XXXXXXXXXXXXXXXXXXXX"
python run.py --task "[Develop a snake game]" --name "[snamer03]" --model=GLM_4
错误日志:
...
Note that we must ONLY discuss the product modality and do not discuss anything else! Once we all have expressed our opinion(s) and agree with the results of the discussion unanimously, any of us must actively terminate the discussion by replying with only one line, which starts with a single word , followed by our final product modality without any other words, e.g., " PowerPoint".
Traceback (most recent call last):
File "/Users/rui/anaconda3/envs/ChatDev_conda_env/lib/python3.9/site-packages/tenacity/init.py", line 382, in call
result = fn(*args, **kwargs)
File "/Users/rui/workbrench/ChatDev/camel/utils.py", line 157, in wrapper
return func(self, *args, **kwargs)
File "/Users/rui/workbrench/ChatDev/camel/agents/chat_agent.py", line 239, in step
response = self.model_backend.run(messages=openai_messages)
File "/Users/rui/workbrench/ChatDev/camel/model_backend.py", line 68, in run
encoding = tiktoken.encoding_for_model(self.model_type.value)
File "/Users/rui/anaconda3/envs/ChatDev_conda_env/lib/python3.9/site-packages/tiktoken/model.py", line 70, in encoding_for_model
raise KeyError(
KeyError: 'Could not automatically map glm-4 to a tokeniser. Please use tiktok.get_encoding to explicitly get the tokeniser you expect.'
The above exception was the direct cause of the following exception:
Traceback (most recent call last):
File "/Users/rui/workbrench/ChatDev/run.py", line 135, in
chat_chain.execute_chain()
File "/Users/rui/workbrench/ChatDev/chatdev/chat_chain.py", line 168, in execute_chain
self.execute_step(phase_item)
File "/Users/rui/workbrench/ChatDev/chatdev/chat_chain.py", line 138, in execute_step
self.chat_env = self.phases[phase].execute(self.chat_env,
File "/Users/rui/workbrench/ChatDev/chatdev/phase.py", line 295, in execute
self.chatting(chat_env=chat_env,
File "/Users/rui/workbrench/ChatDev/chatdev/utils.py", line 79, in wrapper
return func(*args, **kwargs)
File "/Users/rui/workbrench/ChatDev/chatdev/phase.py", line 133, in chatting
assistant_response, user_response = role_play_session.step(input_user_msg, chat_turn_limit == 1)
File "/Users/rui/workbrench/ChatDev/camel/agents/role_playing.py", line 247, in step
assistant_response = self.assistant_agent.step(user_msg_rst)
File "/Users/rui/anaconda3/envs/ChatDev_conda_env/lib/python3.9/site-packages/tenacity/init.py", line 289, in wrapped_f
return self(f, *args, **kw)
File "/Users/rui/anaconda3/envs/ChatDev_conda_env/lib/python3.9/site-packages/tenacity/init.py", line 379, in call
do = self.iter(retry_state=retry_state)
File "/Users/rui/anaconda3/envs/ChatDev_conda_env/lib/python3.9/site-packages/tenacity/init.py", line 326, in iter
raise retry_exc from fut.exception()
tenacity.RetryError: RetryError[<Future at 0x119747fd0 state=finished raised KeyError>]
代码定位:
/site-packages/tiktoken/model.py
MODEL_TO_ENCODING: dict[str, str] = {
# chat
"gpt-4": "cl100k_base",
"gpt-3.5-turbo": "cl100k_base",
# text
"text-davinci-003": "p50k_base",
"text-davinci-002": "p50k_base",
"text-davinci-001": "r50k_base",
"text-curie-001": "r50k_base",
"text-babbage-001": "r50k_base",
"text-ada-001": "r50k_base",
"davinci": "r50k_base",
"curie": "r50k_base",
"babbage": "r50k_base",
"ada": "r50k_base",
# code
"code-davinci-002": "p50k_base",
"code-davinci-001": "p50k_base",
"code-cushman-002": "p50k_base",
"code-cushman-001": "p50k_base",
"davinci-codex": "p50k_base",
"cushman-codex": "p50k_base",
# edit
"text-davinci-edit-001": "p50k_edit",
"code-davinci-edit-001": "p50k_edit",
# embeddings
"text-embedding-ada-002": "cl100k_base",
# old embeddings
"text-similarity-davinci-001": "r50k_base",
"text-similarity-curie-001": "r50k_base",
"text-similarity-babbage-001": "r50k_base",
"text-similarity-ada-001": "r50k_base",
"text-search-davinci-doc-001": "r50k_base",
"text-search-curie-doc-001": "r50k_base",
"text-search-babbage-doc-001": "r50k_base",
"text-search-ada-doc-001": "r50k_base",
"code-search-babbage-code-001": "r50k_base",
"code-search-ada-code-001": "r50k_base",
# open source
"gpt2": "gpt2",
}
def encoding_for_model(model_name: str) -> Encoding:
"""Returns the encoding used by a model."""
encoding_name = None
if model_name in MODEL_TO_ENCODING:
encoding_name = MODEL_TO_ENCODING[model_name]
else:
# Check if the model matches a known prefix
# Prefix matching avoids needing library updates for every model version release
# Note that this can match on non-existent models (e.g., gpt-3.5-turbo-FAKE)
for model_prefix, model_encoding_name in MODEL_PREFIX_TO_ENCODING.items():
if model_name.startswith(model_prefix):
return get_encoding(model_encoding_name)
if encoding_name is None:
raise KeyError(
f"Could not automatically map {model_name} to a tokeniser. "
"Please use `tiktok.get_encoding` to explicitly get the tokeniser you expect."
) from None
return get_encoding(encoding_name)
- 主要语言
- Python
- 星标
- 34.5k
- 派生
- 4.3k
- PR 合并指标
- 30 天内没有已合并 PR
环境准备
- 提供 Dockerfile 或 Docker Compose 文件
- 没有 Pull Request 模板
- 没有贡献指南
从这里开始
- 先读完整个 Issue,再读项目的贡献指南。
- 在 Issue 下留言说明你要接手 —— 这能避免两个人做同样的事。
- Fork 仓库,在一个分支上完成修改。
- 提交 Pull Request,并在描述里引用这个 Issue 编号。
OpenBMB/ChatDev 的其他 Issue
-
难度 1/5 1 小时以内 新手友好度 76/100
-
CodeReviewModification never shows the programmer the six review regulations, so fixes are made blind to the checklist they are re-reviewed against可能已有人在做 关联的 PR 仍在进行中或已合并。 未关闭
难度 1/5 1-3 小时 新手友好度 78/100
-
难度 1/5 1 小时以内 新手友好度 85/100
-
难度 4/5 3-5 天 新手友好度 35/100
-
FunctionManager silently drops tool modules containing dataclasses with postponed annotations可能已有人在做 @inchang-ing 于 17 天前认领。 未关闭
难度 3/5 1-2 天 新手友好度 72/100
相似的 Issue
-
难度 2/5 1-3 小时 新手友好度 72/100
huggingface/sentence-transformers#4186 ·
维护者通常 5 天内回复
-
documentation good first issue
难度 2/5 半天 新手友好度 72/100
sujithputta02/Esapay#13 ·
-
bot-triaged module: correctness (silent) module: mps module: NaNs and Infs triage review
难度 2/5 半天 新手友好度 62/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 68/100
维护者通常 1 天内回复
-
难度 2/5 1-3 小时 新手友好度 62/100
SCIInstitute/SCIRun#2842 ·
维护者通常 3 天内回复