配置不是调参玩具,它直接决定 Agent 是"听话的助手"还是"脱缰的野马"。这一节把最常被误用、也最值得花时间的几个配置项讲透:human_input_mode、max_consecutive_auto_reply、system_message。
三个档位,代价各异:
我们的判断:开发期用 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})
这个参数限制一个 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="你协助完成任务。")
它定义 Agent 是什么人、该做什么、不该做什么。写得模糊,Agent 就自由发挥;写得具体,产出更可控。我们建议写明"角色 + 职责 + 禁止项"。
system_msg = """你是数据分析师。 职责:把业务问题转成可执行的查询,并解释结果。 禁止:不要编造不存在的数据字段,不确定时明说。""" # 明确的禁止项能显著减少幻觉
第三章 3.1 提过强弱分工,这里补两个易漏项:response_format(要求模型返回特定结构)和 seed(固定随机,便于复现)。调试时用 seed 能让同样输入产出一致,方便对比改动效果。
我们反对一上来就堆参数——先让它能跑,再让它听话,最后让它便宜。
把前面几项合起来,一个"上线前灰度"的 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}) # 平时自动,关键处人拍板,连续自动回有上限
我们主张把配置当作"给 Agent 立规矩",规矩越少越准,Agent 越听话。
把配置当作"给 Agent 立规矩"来理解,很多纠结会消失。比如 max_consecutive_auto_reply 是"最多自嗨几轮",system_message 里的禁止项是"红线在哪",human_input_mode 是"人什么时候能喊停"。规矩立清楚,Agent 才既不脱节也不失控。我们评审配置时,第一件事就是看这些"规矩"是否自洽。
有人反过来:先堆一堆参数试图"调优",结果某个 max_consecutive_auto_reply 设太大,两个 Agent 聊到账单爆才发现。正确顺序是先让它能跑(默认参数),再按阶段加约束。参数越多,出问题的面越大,每加一个都要想清楚"为什么必须加"。这条纪律能挡掉绝大多数配置引发的事故。
⚠️ 上线直接 NEVER 又没终止条件,等于把失控对话交给模型自由发挥,风险极高。
💡 配置项就是"对话即编排"的调节阀,拧对了编排既可控又省钱。