拓十年匠心定制 · 商业建站与技术教学双线并行 咨询热线:400-886-1026 service@lmnt.cn
ARTICLE DETAIL

资讯详情

深耕网站建设与运营推广的一线实战洞察。

正面硬刚OpenAI!智谱AI ChatGLM3 基座大模型 Agent 与 Code Interpreter 实战配置指南

正面硬刚OpenAI!智谱AI ChatGLM3 基座大模型 Agent 与 Code Interpreter 实战配置指南

1. ChatGLM3 的 Agent 与 Code Interpreter 到底能做什么

智谱AI 在 2023 年 10 月推出的 ChatGLM3,是国内第三代全自研基座大模型。它最值得开发者关注的两个能力,一个是 Agent 智能体,另一个是 Code Interpreter 代码解释器。前者让模型能自主规划任务、调用工具、操作数据库甚至控制操作系统;后者让模型能根据你的自然语言需求生成代码并直接执行,自动完成数据分析、文件处理、图表绘制等复杂任务。

这两个能力组合起来,意味着你可以用 ChatGLM3 搭建一个能“自己动手干活”的 AI 应用,而不是只会聊天的问答机器人。适合谁?适合想在国内环境下快速跑通大模型 Agent 链路的开发者、想用代码解释器做数据分析的工程师、以及想对比国产模型与 OpenAI 实际表现的团队。

我试过在本地和云端两种方式接入 ChatGLM3 的 Agent 与 Code Interpreter 能力,踩过一些配置上的坑。这篇文章会给出可复制的config.toml与settings.json骨架,演示通过 TaoToken 统一 Key/API 通道调用 ChatGLM3 的完整配置,并附上 Agent 任务与代码解释器的验证步骤。你跟着做,大概 20 分钟能跑通整条链路。

2. 前置准备:TaoToken 统一通道与 Key 获取

在开始写配置之前,先把调用通道准备好。TaoToken 提供统一的 API 入口,你不需要为每个模型单独维护一套 Key 和 Base URL。官网地址是 https://taotoken.net/?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,API 入口是 https://taotoken.net/api 。

第一步,注册并登录后进入控制台,地址是 https://taotoken.net/console?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。在控制台里找到 API Keys 管理页面,地址是 https://taotoken.net/api-keys?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,创建一个新的 Key。这个 Key 就是你后续所有请求的凭证,格式通常是一串以sk-开头的字符串。

第二步,确认你要调用的模型名称。ChatGLM3 在 TaoToken 通道里的模型标识一般写作glm-3或chatglm3,具体以接入文档为准。接入文档地址是 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,里面会列出当前支持的模型清单和对应的调用参数。

注意:Key 只创建一次,复制后妥善保存。页面关闭后无法再次查看完整 Key,只能重新生成。

第三步,如果你打算长期做编码类 Agent 任务,可以了解一下 Coding Plan,地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 。它针对高频代码生成和 Agent 调用场景做了额度优化,比按量计费更适合持续开发。

3. 可复制配置:config.toml 与 settings.json 骨架

下面给出两个配置文件骨架。config.toml用于 Python 侧读取模型参数,settings.json用于 Agent 工具链和 Code Interpreter 的运行时设置。你可以直接复制后替换 Key 和模型名。

先看config.toml:

[api] base_url = "https://taotoken.net/api" api_key = "sk-你的TaoToken密钥" model = "glm-3" timeout = 60 max_retries = 3 [agent] enable_tool_call = true max_tool_rounds = 5 tool_timeout = 30 [code_interpreter] enable = true work_dir = "./sandbox" max_exec_time = 20 allowed_imports = ["pandas", "numpy", "matplotlib", "json", "csv"]

再看settings.json:

{ "llm": { "provider": "taotoken", "base_url": "https://taotoken.net/api", "api_key": "sk-你的TaoToken密钥", "model": "glm-3", "temperature": 0.3, "top_p": 0.9 }, "agent": { "system_prompt": "你是一个能调用工具完成任务的智能体。需要计算或数据处理时,生成 Python 代码并请求执行。", "tools": ["code_interpreter", "web_search", "file_reader"], "max_iterations": 8 }, "code_interpreter": { "sandbox": true, "work_dir": "./sandbox", "timeout_seconds": 20, "capture_output": true } }

这两个文件的分工是:config.toml偏底层连接参数,settings.json偏 Agent 行为策略。实际项目里你可以只保留一个,但分开写更清晰,方便后续切换模型或调整工具集。

提示:work_dir建议指向一个独立目录,不要直接指向项目根目录,避免代码解释器执行时误操作其他文件。

4. 验证请求:Agent 任务与 Code Interpreter 跑通

配置写好后,先做一次最小请求验证通道是否通。用 Python 发一个 chat completions 请求:

import requests import json url = "https://taotoken.net/api/v1/chat/completions" headers = { "Authorization": "Bearer sk-你的TaoToken密钥", "Content-Type": "application/json" } payload = { "model": "glm-3", "messages": [ {"role": "user", "content": "用一句话说明什么是 Agent"} ], "temperature": 0.3 } resp = requests.post(url, headers=headers, json=payload, timeout=60) print(resp.status_code) print(resp.json()["choices"][0]["message"]["content"])

如果返回 200 并且有正常文本输出,说明 Key 和 Base URL 都正确。接下来验证 Agent 工具调用能力。构造一个需要模型主动生成代码并执行的任务:

payload = { "model": "glm-3", "messages": [ {"role": "system", "content": "你可以调用 code_interpreter 工具。需要计算时生成 Python 代码。"}, {"role": "user", "content": "帮我计算 1 到 100 的平方和,并输出结果。"} ], "tools": [ { "type": "function", "function": { "name": "code_interpreter", "description": "执行 Python 代码并返回输出", "parameters": { "type": "object", "properties": { "code": {"type": "string", "description": "要执行的 Python 代码"} }, "required": ["code"] } } } ], "tool_choice": "auto" } resp = requests.post(url, headers=headers, json=payload, timeout=60) data = resp.json() print(json.dumps(data, ensure_ascii=False, indent=2))

正常情况下,你会看到返回的tool_calls字段里包含一段 Python 代码,类似sum([i*i for i in range(1, 101)])。这说明 ChatGLM3 的 Agent 能力已经被激活,模型知道该调用工具而不是直接口算。

然后你在本地执行这段代码,把结果作为tool角色消息回传,就能拿到最终答案。完整链路是:用户提问 → 模型生成工具调用 → 本地执行 → 结果回传 → 模型总结。Code Interpreter 的验证同理,只是执行环境换成沙箱,并且要捕获 stdout 和生成的图表文件。

如果你想直接在网页端体验模型对话效果,可以访问模型对话入口 https://taotoken.net/model-chat?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,先手动问几个问题感受一下 ChatGLM3 的语义和逻辑表现,再回到代码里调参。

5. 本篇常见错排查

报错一:401 Unauthorized。最常见的原因是 Key 复制时带了空格,或者Authorization头里少了Bearer前缀。检查headers里的字符串,确保是Bearer sk-xxx的格式。另外确认 Key 没有过期或被删除。

报错二:404 model not found。模型名写错了。ChatGLM3 在不同通道里的标识可能不同,去接入文档 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 确认当前可用的模型名。不要凭记忆写chatglm3-6b之类的本地权重名,API 通道用的是服务端模型标识。

报错三:Agent 不调用工具,直接给答案。这通常是 system prompt 不够明确,或者tool_choice设成了none。把 system prompt 改成“必须通过 code_interpreter 工具完成计算”,并把tool_choice设为auto或强制指定函数名。另外temperature太高也会让模型倾向于自由发挥,调到 0.2 到 0.4 之间更稳。

报错四:Code Interpreter 执行超时。检查max_exec_time和timeout_seconds是否设得太短。数据处理类任务如果涉及大文件读取,20 秒可能不够,适当调到 60 秒。同时确认work_dir目录存在且有写权限。

报错五:返回内容被截断。检查max_tokens参数。Agent 任务因为要生成代码和推理步骤,输出长度往往比普通对话长。如果没显式设置,部分通道默认值可能偏小,建议设为 2048 或更高。

注意:如果以上都排查过还是不通,优先用模型对话入口手动发一条消息,确认账号和通道本身没问题,再回到代码层排查。

6. 长期编码与 Agent 场景的通道选择

跑通单次请求只是第一步。如果你打算把 ChatGLM3 的 Agent 和 Code Interpreter 能力接入到日常编码流程或自动化任务里,调用频率会明显上升。这时候按量计费的通道可能不如套餐划算。Coding Plan 地址是 https://taotoken.net/coding-plan?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= ,它针对代码生成和 Agent 多轮调用做了额度优化,适合持续开发场景。

另外,如果你用的是 Claude Code 这类编码工具,TaoToken 也提供了对应的接入方式,文档在 https://taotoken.net/doc?utm_source=taotoken_aicg_blog_end&utm_medium=csdn&utm_campaign=rewrite&utm_content= 里有说明。核心思路是一样的:统一 Base URL 加统一 Key,模型名按需切换。

最后说一个实际经验:Agent 任务的稳定性很大程度上取决于工具描述的质量。code_interpreter的description写得越清楚,模型越知道什么时候该调用它。我一般会在描述里加上“当需要精确计算、数据处理或文件操作时使用此工具”,比只写“执行代码”效果好很多。你可以根据自己业务场景调整这段描述,这是提升 Agent 成功率最直接的手段。

返回列表