必须严格遵循角色定义→通信协议→终止条件三层设计逻辑:先用structured_chat_zero_shot_react_description初始化agent并绑定专属工具,再通过sequentialchain、routerchain或teamsupervisor构建通信协议,最后设置max_iterations=12和统一final_output:终止标识符。
☞☞☞AI 智能聊天, 问答助手, AI 智能搜索, 多模态理解力帮你轻松跨越从0到1的创作门槛☜☜☜

你需要让多个AI智能体自动分工协作完成复杂任务,比如一个查资料、一个写报告、一个做校对,全程无需人工干预。LangChain提供了AgentExecutor、TeamAgent、Router等核心组件,但直接拼接容易陷入死循环或指令丢失,必须严格遵循角色定义→通信协议→终止条件三层设计逻辑。
定义各Agent的角色与工具权限
第一步:用AgentType.STRUCTURED_CHAT_ZERO_SHOT_REACT_DESCRIPTION初始化每个Agent,禁止使用OPENAI_FUNCTIONS类型——它在多Agent间转发时会丢弃tool_call_id导致链路断裂。
第二步:为每个Agent显式绑定专属工具集,例如ResearchAgent只配TavilySearchResults和WebBrowser,WritingAgent只配LLMChain(带prompt模板)和FileWriterTool。不这样做会导致Agent越权调用工具,比如校对Agent擅自发起网络搜索。
第三步:在Agent的system_message中用自然语言写明角色边界,例如“你仅负责将输入文本按学术规范重写,不得修改原始数据、不得访问外部API、不得生成新事实”。LangChain不校验语义,全靠这段文字约束行为。
构建Agent间通信协议
方法一:用SequentialChain硬编排执行顺序
把ResearchAgent输出→传给WritingAgent输入→再传给ProofreadingAgent。适合流程固定、无分支的场景,但无法应对“资料不足需重查”这类动态反馈。
方法二:用RouterChain实现条件路由
先定义路由判断prompt:“如果输入含‘错误’‘矛盾’‘缺失’字眼,路由至ProofreadingAgent;若含‘最新’‘2024后’,路由至ResearchAgent;其余走WritingAgent”。【路由prompt必须包含明确关键词,不能写‘根据语义判断’——LLM会随意解释】
方法三:用TeamSupervisor协调(LangChain 0.1.16+)
部署一个独立的Supervisor Agent,它不执行任务,只接收各Agent返回的next_step字段(如“需要补充实验数据”),然后调用Router决定下一步调谁。这要求每个Agent在output_parser中强制注入next_step键值对。
设置终止条件防止无限循环
在AgentExecutor初始化时传入max_iterations=12,超过即强制中断。默认值是15,但实测中第9次迭代后LLM开始重复输出相同内容,12是安全阈值。
每个Agent的final_answer prompt必须包含唯一终止标识符,例如“FINAL_OUTPUT:”,且所有Agent统一用该标识符。Router只识别这个字符串,识别到就停止调度并返回结果。漏掉这个标识符会导致流程永远卡在最后一步。
在Supervisor Agent的prompt末尾追加硬性指令:“当收到含‘FINAL_OUTPUT:’的响应时,立即返回完整响应内容,不得添加任何前缀、后缀或解释性文字”。否则它会自己包装一层JSON导致下游解析失败。










