3.4 智能体配置与参数调优


3.4 智能体配置与参数调优

配置不是调参玩具,它直接决定 Agent 是"听话的助手"还是"脱缰的野马"。这一节把最常被误用、也最值得花时间的几个配置项讲透:human_input_mode、max_consecutive_auto_reply、system_message。

human_input_mode:人在哪环出现

三个档位,代价各异:

  • ALWAYS:每轮都问你。最稳,但最慢,只适合调试。
  • TERMINATE:只在模型说"终止"或出错时问你。折中,上线常用。
  • NEVER:全自动。最快,但出错没人拦。

我们的判断:开发期用 ALWAYS 看清每一步,验证逻辑后用 TERMINATE 留个刹车,真正无人值守才上 NEVER。

from autogen import UserProxyAgent import os cfg = {"model": "gpt-4o-mini", "api_key": os.environ.get("OPENAI_API_KEY")} # 调试:每轮都问,看清 Agent 在想什么 debug_exec = UserProxyAgent("exec", human_input_mode="ALWAYS", code_execution_config={"use_docker": False}) # 上线:只在终止/出错时介入 prod_exec = UserProxyAgent("exec", human_input_mode="TERMINATE", code_execution_config={"use_docker": False})

max_consecutive_auto_reply:防自嗨

这个参数限制一个 Agent 连续自动回复的最大次数。设小一点能防止两个 Agent 你一句我一句停不下来烧钱。我们一般设 10 以内。

from autogen import ConversableAgent cfg = {"model": "gpt-4o-mini", "api_key": os.environ.get("OPENAI_API_KEY")} agent = ConversableAgent("a", llm_config=cfg, max_consecutive_auto_reply=8, # 连续自动回最多 8 次 system_message="你协助完成任务。")

system_message:角色的灵魂

它定义 Agent 是什么人、该做什么、不该做什么。写得模糊,Agent 就自由发挥;写得具体,产出更可控。我们建议写明"角色 + 职责 + 禁止项"。

system_msg = """你是数据分析师。 职责:把业务问题转成可执行的查询,并解释结果。 禁止:不要编造不存在的数据字段,不确定时明说。""" # 明确的禁止项能显著减少幻觉

llm_config 的细分

第三章 3.1 提过强弱分工,这里补两个易漏项:response_format(要求模型返回特定结构)和 seed(固定随机,便于复现)。调试时用 seed 能让同样输入产出一致,方便对比改动效果。

调优的实用顺序

  1. 先定 human_input_mode(开发 ALWAYS)。
  2. 再写清 system_message(限职责和禁止项)。
  3. 然后压温度、设 max_consecutive_auto_reply。
  4. 最后才做强弱模型分工降本。

我们反对一上来就堆参数——先让它能跑,再让它听话,最后让它便宜。

一个完整配置示例

把前面几项合起来,一个"上线前灰度"的 Agent 长这样:TERMINATE 留刹车、限制连续自动回、写清禁止项。

from autogen import AssistantAgent, UserProxyAgent import os cfg = {"model": "gpt-4o-mini", "api_key": os.environ.get("OPENAI_API_KEY")} brain = AssistantAgent( "brain", llm_config=cfg, max_consecutive_auto_reply=8, system_message="""你是数据分析师。 职责:把业务问题转成查询并解释。 禁止:编造不存在的字段,不确定明说。""", ) hand = UserProxyAgent("hand", human_input_mode="TERMINATE", code_execution_config={"use_docker": False}) # 平时自动,关键处人拍板,连续自动回有上限

调优的常见误区

  • 一上来堆参数:先让它能跑,再调。
  • 温度调很高想"更有创意":函数调用场景会吐非法结构。
  • 以为 system_message 越长越好:过长反而稀释重点,三句清楚胜过三段模糊。

我们主张把配置当作"给 Agent 立规矩",规矩越少越准,Agent 越听话。

配置即规矩

把配置当作"给 Agent 立规矩"来理解,很多纠结会消失。比如 max_consecutive_auto_reply 是"最多自嗨几轮",system_message 里的禁止项是"红线在哪",human_input_mode 是"人什么时候能喊停"。规矩立清楚,Agent 才既不脱节也不失控。我们评审配置时,第一件事就是看这些"规矩"是否自洽。

一个调优顺序的反面教材

有人反过来:先堆一堆参数试图"调优",结果某个 max_consecutive_auto_reply 设太大,两个 Agent 聊到账单爆才发现。正确顺序是先让它能跑(默认参数),再按阶段加约束。参数越多,出问题的面越大,每加一个都要想清楚"为什么必须加"。这条纪律能挡掉绝大多数配置引发的事故。

本节要点回顾

  • human_input_mode 三档对应稳/折中/快,按阶段切换。
  • max_consecutive_auto_reply 防自嗨烧钱。
  • system_message 写清职责与禁止项,比堆参数更管用。

⚠️ 上线直接 NEVER 又没终止条件,等于把失控对话交给模型自由发挥,风险极高。

💡 配置项就是"对话即编排"的调节阀,拧对了编排既可控又省钱。


作者与出处
原作者: 灏天文库
来源:灏天文库
整理: 灏天文库整理
由灏天文库平台收录,内容或由平台用户上传,仅供学习交流
发布者: 作者: 灏天文库 转发
评论区 (0)
U