第25章:Agent 策略深度解析——FC vs CoT 源码对比
1. 项目背景第 8 章我们用 Agent 搭了一个行程规划助手——配置策略、添加工具、写好 Prompt,AI 就自己跑起来了。但当 Agent 在 8 步后陷入循环(反复调同一个工具但结果不满意),或者明明有搜索工具却不去调用(Agent 认为"不需要搜索"),你就需要从源码级理解 Agent 的决策机制。Dify 的 Agent 有两种策略:Function Calling(FC)Agent和Chain-of-Thought(CoT)Agent。它们的核心差异不在于"能不能调用工具"(两种都能调用),而在于工具调用的触发机制和决策过程的透明度。FC Agent 依赖 LLM 原生的 Function Calling 能力——模型被训练成能输出结构化的 JSON({"name": "get_weather", "arguments": {"city": "Beijing"}})。Dify 解析 JSON 后执行工具,把结果返回给 LLM。这个流程稳定、快速,但只有高级模型(GPT-4、Claude)支持。CoT Agent 不依赖模型的 Function Calling 能力,而是通过精心设计的 Prompt 模板,让 LLM 以纯文本形式输出"思考:…动作:工具名[参数]"。Dify 用正则解析这行文本后执行工具。兼容所有模型(包括开源的小模型),但文本解析容易出错——LLM 多打了空格、少写了引号、用了中文冒号——正则就匹配失败。场景一:CoT Agent