FEATURED · 精选文章

AutoGen 双 Agent 代码审查:10 分钟用 TaoToken 跑通

发布时间 / 2026/9/20 14:36:42
来源 / 创域科博编辑部
栏目 / 资讯中心
AutoGen 双 Agent 代码审查:10 分钟用 TaoToken 跑通 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度1. 双 Agent 代码审查任务为什么是 AutoGen 而不是一次 PromptAutoGen 双 Agent 代码审查听起来要配两个模型、写一堆回调。实际跑通后最花时间的反而是选模型 ID。我在 TaoToken 创建 Key把https://taotoken.net/api填进model_config然后让两个 Agent 接力处理一份提交全程不到 10 分钟。这里先交代任务背景我想审查一个真实的 PR diff里面既有 SQL 拼接风险也有数据库连接未关闭的问题。如果只丢给一个大模型一次 Prompt它很可能只列出最常见的一两个点然后开始给修复建议把风险清单和修复方案混在一起。用 AutoGen 的好处是能把“找风险”和“做总结”拆成两个角色让模型各自只做一件事输出结构更干净。我选择 AutoGen 而不是 LangGraph 或其他框架原因很简单两个角色之间的数据流是线性的不需要复杂的状态机。AutoGen 的ConversableAgent天然支持我把 reviewer 的输出直接作为 summarizer 的输入代码量只有十几行。而且在模型配置上AutoGen 接受任何 OpenAI 兼容的base_url这意味着我不用改框架源码只要把 TaoToken 的 Base URL 塞进配置就能让两个 Agent 共用一把 Key。对于想快速验证“多个 Agent 协作审查”的场景来说这个组合是成本最低的路径。任务里有一个角色分配Kimi K2.7 Code 负责定位风险另一个 Agent 负责总结。我实际测试时两个 Agent 都用了同一个模型 ID只是系统提示词不同。一个限定它“只准列风险不准给修复方案”另一个限定它“只准总结不准新增细节”。这样即使底层是同一个模型输出也会因为角色边界而明显区分。如果你希望更严格的模型隔离也可以在config_list里加第二条记录给第二个 Agent 配不同的模型TaoToken 的统一网关允许同一把 Key 访问模型广场里的不同模型ID 以广场展示为准。跑完这个流程我最大的感受是双 Agent 的价值不在“两个模型”而在“两次约束”。第一次约束让模型聚焦风险点第二次约束让模型把风险整理成可读报告。AutoGen 只是把这两次约束变成了两个对象而 TaoToken 负责让这两个对象都能用同一套 API 配置访问模型。下面从拿到 Key 开始逐步展开可复现的步骤。2. TaoToken 接 AutoGenBase URL 与 model_config 的关键配置接入 AutoGen 只需要三步在 TaoToken 创建 API Key把https://taotoken.net/api作为base_url把模型广场上 Kimi K2.7 Code 的模型 ID 填进model字段。这三个值是一个完整的 OpenAI 兼容三元组AutoGen 底层会用它向/chat/completions发起请求。有一个容易踩的细节base_url不要加/v1。有些兼容网关要求客户端传https://api.example.com/v1但 TaoToken 的约定是根路径https://taotoken.net/api。如果画蛇添足加上/v1会得到 404。我第一次跑的时候就在这个点上浪费了半分钟后来检查请求路径才发现多拼了一段。所以脚本里就直接写干净地址不要动它。model_config的写法在 AutoGen 中长这样import os llm_config { config_list: [ { model: kimi-k2.7-code, # 以 TaoToken 模型广场实际展示为准 base_url: https://taotoken.net/api, api_key: os.getenv(TAOTOKEN_API_KEY, YOUR_API_KEY), } ], temperature: 0.2, }注意model字段不是随便填的。Kimi K2.7 Code 在模型广场里的 ID 可能是形如kimi-k2.7-code的字符串也可能包含版本日期或组织前缀。最稳妥的做法是登录 TaoToken 控制台打开模型广场从页面复制当前可用的模型 ID不要靠记忆手打。我在不同时间点看到过同系列模型 ID 微调过以页面为准是最不容易出错的。api_key建议通过环境变量传入而不是硬编码在脚本里。这样脚本可以放心分享Key 不会被提交到 Git 历史。如果你是本地跑直接在终端export TAOTOKEN_API_KEY你的Key就好。如果是在 IDE 里运行也可以在运行配置里加环境变量。注意TaoToken 的 Key 创建入口在控制台不是模型对话页。打开 TaoToken 控制台创建 Key 后复制下来即可。temperature我设为 0.2让模型在“找风险”这种确定性任务上少一点随机发挥。如果你想看更发散的结果可以调到 0.7但代码审查场景下低温度更容易稳定复现。对于第二个总结 Agent我也用同一个llm_config不额外设温度因为总结是从已有文本里提炼低温度同样适用。这些配置准备好之后下一步就是写两个 Agent 的完整脚本。我在下一节给出可以直接跑的版本里面包含了示例提交、两个系统提示词以及顺序调用的逻辑。3. 可运行脚本Kimi K2.7 Code 定位风险总结 Agent 收口下面的脚本使用pyautogen安装命令是pip install pyautogen。脚本会先让 review Agent 审查一段提交再让 summary Agent 把风险整理成结论。为了一次跑通我把示例提交放在commit_diff里它模拟了一个真实的 PR把参数化 SQL 改成了字符串拼接同时又没关闭数据库连接。import os from autogen import ConversableAgent TAOTOKEN_API_KEY os.getenv(TAOTOKEN_API_KEY, YOUR_API_KEY) BASE_URL https://taotoken.net/api MODEL_ID kimi-k2.7-code # 以 TaoToken 模型广场实际展示为准 llm_config { config_list: [ { model: MODEL_ID, base_url: BASE_URL, api_key: TAOTOKEN_API_KEY, } ], temperature: 0.2, } reviewer_system_message 你是一名资深代码审查员。你只做一件事找出提交中的安全、性能、正确性风险。 对每条风险按以下格式输出 文件位置 | 风险描述 | 严重程度(高/中/低) 不要给修复建议不要解释背景不要总结。 .strip() summarizer_system_message 你是一名技术负责人。你会收到审查员写出的风险列表请把它整理成一份测试报告 先写总体结论再按严重程度从高到低列风险最后给一行建议。 不要新增技术细节不要评价审查员。 .strip() reviewer ConversableAgent( namereviewer, system_messagereviewer_system_message, llm_configllm_config, human_input_modeNEVER, max_consecutive_auto_reply1, ) summarizer ConversableAgent( namesummarizer, system_messagesummarizer_system_message, llm_configllm_config, human_input_modeNEVER, max_consecutive_auto_reply1, ) user_proxy ConversableAgent( nameuser_proxy, human_input_modeNEVER, llm_configFalse, ) commit_diff --- a/app.py b/app.py -1,9 1,9 import sqlite3 def get_user(uid): conn sqlite3.connect(app.db) cur conn.cursor() - cur.execute(SELECT * FROM users WHERE id ?, (uid,)) cur.execute(SELECT * FROM users WHERE id uid) return cur.fetchone() # 第一步让 reviewer 定位风险 review_result user_proxy.initiate_chat( reviewer, messagef请审查这份代码提交\n{commit_diff}, max_turns1, ) risks reviewer.last_message()[content] # 第二步让 summarizer 总结 summary_result user_proxy.initiate_chat( summarizer, messagef这是审查员的结果请整理成总结\n{risks}, max_turns1, ) print(\n--- 最终总结 ---\n) print(summarizer.last_message()[content])这个脚本的精髓在两个系统提示词。第一个提示词把 review Agent 限制成“只输出风险”并且指定了输出格式避免它跑偏去讲课。第二个提示词把 summary Agent 限制成“只整理已有内容”并且要求按严重程度排序这样最终报告可以直接贴到 PR 评论里。两个 Agent 都设置了max_consecutive_auto_reply1防止它们在拿到结果后继续互相对话把流程变成无限对话。user_proxy只负责转发消息不触发任何模型调用。运行后会先看到审查员的风险列表再看到最终总结。在我本地跑出的结果中审查员准确识别了 SQL 注入和资源句柄泄漏总结 Agent 把两条风险合并成“高优先级”和“中优先级”并在建议里写了“改用参数化查询并关闭连接”。整个调用链用了两次模型请求耗时约一分钟Token 消耗取决于模型回复长度。如果你需要换第二个 Agent 的模型不要改reviewer的配置而是在llm_config的config_list里增加一条新模型记录。AutoGen 支持传入多个配置它默认会选第一条但你可以为summarizer单独建一个llm_config指向另一个model字段。TaoToken 的模型广场上有多种模型可选ID 以实际页面为准我这里只展示单模型分饰两角的变体因为它最适合 10 分钟跑通。脚本跑通后还需要几步验证确保这次调用真的进入了 TaoToken 的账本而且模型 ID 没有选错。下一节给出检查清单。4. 10 分钟跑通检查清单从 Key 到控制台对账以下清单是我实际跑通后整理的每一步都标了参考耗时。如果你按顺序执行10 分钟是足够的前提是网络稳定且 API Key 已经建好。步骤操作参考耗时验证点1打开 TaoToken 官网并创建 API Key1 分钟Key 字符串以sk-开头保存到环境变量2安装 pyautogen2 分钟pip install pyautogen无报错3在模型广场复制 Kimi K2.7 Code 的模型 ID1 分钟ID 与脚本中MODEL_ID一致4运行上面的 Python 脚本2-4 分钟控制台输出“最终总结”内容包含风险项5打开 TaoToken 控制台查看调用记录1 分钟能看到 2 次模型调用Token 用量与运行输出吻合重点检查第 5 步。TaoToken 控制台会记录每一条调用的模型、Token、时间。如果运行后控制台里没有新增记录说明 Base URL 或 Key 配错了请求没有真正发到 TaoToken。如果记录显示模型是空白的多半是模型 ID 没匹配上回到模型广场重新复制。最容易出错的三个地方一是base_url多了/v1二是model字段写成了聊天页面里的名称而不是接口 ID三是环境变量没有生效脚本里用了YOUR_API_KEY占位符。前两个会直接报 404 或 400第三个会报 401。我建议在脚本开头加一行print(TAOTOKEN_API_KEY[:5])确认 Key 真的读进来了。另一个验证点是max_turns1。如果去掉这个参数AutoGen 默认会继续多轮对话甚至触发代码执行导致 Token 消耗超出预期。10 分钟跑通的目标下必须限制对话轮数。我脚本里同时用了max_consecutive_auto_reply1和max_turns1双保险。如果你用的是 AutoGen 0.4 以上版本ConversableAgent的 import 路径可能变成autogen_agentchat。我上面的脚本基于经典pyautogen0.2.x这是最容易搜到示例、也最稳定的写法。如果你必须用新版模型配置的参数名会不同但 Base URL 和 Key 的语义不变。我这里不展开新版迁移因为快速上手场景下经典版足够。还有一点不要在生产库或生产服务器上直接运行这个脚本的审查结果。脚本只负责生成结论任何修复 SQL 或数据库连接的语句都要由你人工确认后执行。AutoGen 的 Agent 没有执行权限设计上也应该如此。如果未来有 Agent 想直接连数据库跑ALTER TABLE你要在系统提示词里明确禁止或者根本不给它数据库权限。5. 跑通后在模型对话里复核模型 ID在 Coding Plan 里看配额脚本运行成功不代表任务结束你还需要确认这次调用的模型确实是 Kimi K2.7 Code而不是某个语义接近的别名。最直接的方式是打开 模型对话在页面里找到同一个模型发一条同样的审查 Prompt比对回复风格。如果模型对话页没有列出你脚本里填的 ID说明 ID 已经过期或改名回到模型广场重新复制。对于长期跑代码审查的用户我建议看一下 Coding Plan。双 Agent 跑一次审查至少消耗两次请求如果每天要审几十个 PRToken 会很快累积。Coding Plan 会显示当前套餐的已用额度和剩余量这样你能知道什么时候该调整单次审查的max_turns或者把模型换成更便宜的版本。注意具体价格和套餐内容以 TaoToken 官网展示为准我这里不做数字断言。如果你还没有创建 Key或者想再开一个只用于脚本调用的独立 Key可以到 控制台创建 Key。用独立 Key 的好处是可以在控制台按 Key 维度查看 Token 消耗把“测试 AutoGen”和“生产环境其他工具”的账分开。我的习惯是每个工具项目建一把独立 Key这样跑完脚本后打开控制台就能看到这次双 Agent 审查到底花了多少 Token。整个流程走下来10 分钟是个很现实的目标前 3 分钟处理 Key 和脚本配置中间 3-5 分钟跑模型最后 1 分钟对账。之后你再想加第三个 Agent比如一个专门检查依赖版本的 Agent只需要按照同样的base_url和model_config复制一份配置改一下system_message就行。AutoGen 的扩展成本不在模型接入而在角色设计。TaoToken 在这里只是一个稳定的 API 基线它不参与审查逻辑只负责把 Key 和 Base URL 变成可用的模型调用通道。下次你遇到更复杂的审查任务比如同时检查 SQL 注入、内存泄漏和并发问题可以把每个检查点拆成一个独立 Agent。每个 Agent 都用 TaoToken 配置但提示词各自负责一个维度。最后用总结 Agent 合并结果。这样一来你实际上是在用 AutoGen 组装一个轻量的代码审查流水线而 TaoToken 保证了所有模型都能通过一个标准接口访问。这就是快速上手这条路径最大的价值先用最简单的双 Agent 跑通再按需扩展。 告别海外账号与网络限制稳定直连全球优质大模型限时半价接入中。 点击领取海量免费额度
RELATED — 相关阅读

相关资讯

LATEST — 最新资讯

最新发布

TODAY — 本日精选

新闻

WEEKLY — 本周精选

新闻

MONTHLY — 本月精选

新闻