news 2026/7/1 16:31:23

AI Agent 架构设计:ReAct、CoT与Tool Use三大范式对比

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
AI Agent 架构设计:ReAct、CoT与Tool Use三大范式对比

AI Agent 架构设计:ReAct、CoT与Tool Use三大范式对比

AI Agent 的推理能力直接决定了其解决问题的效果。目前业界形成了三种主流的推理架构范式:Chain-of-Thought (CoT)ReActTool Use。本文将深入对比三者的原理、适用场景和代码实现。

一、Chain-of-Thought (CoT):让模型"先想后答"

核心思想

CoT 通过在 Prompt 中引导模型逐步展示推理过程,而非直接给出答案。研究表明,让模型"说出思考过程"能显著提升复杂任务(数学、逻辑推理)的准确率。

经典示例

# CoT Prompt 示例cot_prompt = """请逐步思考并回答下面的问题:问题:一个农场里有鸡和兔,头共35个,脚共94只。鸡和兔各有多少只?

思考过程:1. 假设全是鸡,35个头应该有 35 x 2 = 70 只脚2. 实际有94只脚,多出 94 - 70 = 24 只脚3. 每只兔比鸡多2只脚,所以兔有 24 / 2 = 12 只4. 鸡有 35 - 12 = 23 只

答案:鸡23只,兔12只"""

优缺点

优点 缺点 ------------ 无需外部工具,纯文本推理 无法获取实时信息 显著提升逻辑任务准确率 幻觉问题无法避免 实现简单,成本低 不能执行代码或调用API

二、ReAct:推理与行动交替进行

核心思想

ReAct(Reasoning + Acting)是CoT + 工具调用的结合。Agent 在每一步交替执行:1.Thought(思考):分析当前状态,决定下一步2.Action(行动):调用工具或输出结果3.Observation(观察):获取工具返回的结果

ReAct 循环流程

用户输入 -> Thought -> Action -> Observation -> Thought -> Action -> ... -> 最终答案

Python 实现示例

import re

class ReActAgent: def __init__(self, llm, tools): self.llm = llm self.tools = tools self.scratchpad = "" # 思考记录 def run(self, query, max_steps=5): self.scratchpad = f"Question: {query} " for step in range(max_steps): # 1. Thought:思考下一步 thought_prompt = self.scratchpad + " Thought:" thought = self.llm(thought_prompt) self.scratchpad += f"Thought: {thought} " # 2. Action:决定行动 action_prompt = self.scratchpad + " Action:" action_text = self.llm(action_prompt) self.scratchpad += f"Action: {action_text} " # 解析 Action action_match = re.search(r'[(.?)(?:((.?)))?]', action_text) if not action_match: return action_text # 直接输出答案 tool_name = action_match.group(1) tool_input = action_match.group(2) or "" # 3. Observation:执行工具 if tool_name in self.tools: obs = self.toolstool_name self.scratchpad += f"Observation: {obs} " else: return f"Tool '{tool_name}' not found" return self.scratchpad

工具定义

tools = { "Search": lambda q: f"搜索结果:关于'{q}'的相关信息...", "Calculator": lambda expr: str(eval(expr)) # 注意:生产环境需安全沙箱}

优缺点

优点 缺点 ------------ 推理与工具调用无缝结合 循环次数可能过多,成本高 可追溯每一步决策过程 对 Prompt 工程要求高 能处理需要实时信息的任务 可能陷入循环或重复调用

三、Tool Use (Function Calling):结构化工具调用

核心思想

Tool Use 是一种结构化输出范式。LLM 不直接生成文本,而是输出函数调用参数(JSON格式),由外部系统执行函数后将结果返回给模型。

OpenAI Function Calling 示例

import openai

functions = [ { "name": "get_weather", "description": "获取指定城市的天气信息", "parameters": { "type": "object", "properties": { "city": {"type": "string", "description": "城市名称"}, "date": {"type": "string", "description": "日期,格式YYYY-MM-DD"} }, "required": ["city"] } }]

response = openai.chat.completions.create( model="gpt-4", messages=[{"role": "user", "content": "北京明天天气怎么样?"}], functions=functions, function_call="auto")

模型可能返回函数调用:

{"name": "get_weather", "arguments": "{"city": "北京", "date": "2025-01-16"}"}

与 ReAct 的对比

特性 ReAct | Tool Use -------------|---------- 输出格式 自由文本 | 结构化JSON 可解析性 需正则/LLM解析 | 直接解析 可控性 较低 | 高(参数可校验) 适用场景 探索性任务 | 确定性工具调用 主流框架 LangChain ReAct | OpenAI Functions, Claude Tools

四、三种范式对比总结

维度 CoT | ReAct | Tool Use -----------|-------|----------核心能力纯推理 | 推理+行动 | 结构化工具调用信息来源仅训练数据 | 实时工具 | 实时工具复杂度低 | 中 | 中成本最低 | 较高(多轮调用) | 较低(单轮/少轮)可追溯性中(需查看推理链) | 高(完整Thought-Action-Observation) | 中(仅工具调用记录)推荐场景数学/逻辑推理 | 复杂多步骤任务 | 确定性API调用

五、如何选择?

  • 纯逻辑问题-> 用CoT
  • 需要查信息再回答-> 用ReAct
  • 与外部API/数据库交互-> 用Tool Use
  • 生产环境复杂任务->ReAct + Tool Use 混合(如 LangChain Agent)

六、LangChain 中的统一实现

from langchain.agents import Tool, AgentExecutor, create_react_agentfrom langchain import hubfrom langchain_openai import ChatOpenAI

llm = ChatOpenAI(model="gpt-4")tools = [Tool(name="Search", func=search_func, description="搜索工具")]prompt = hub.pull("hwchase17/react")agent = create_react_agent(llm, tools, prompt)executor = AgentExecutor(agent=agent, tools=tools, verbose=True)executor.invoke({"input": "查找今天的热门AI新闻"})

LangChain 将三种范式统一封装,开发者可以灵活组合使用。

---

总结:没有最好的范式,只有最合适的场景。理解三者差异,才能在项目中做出正确选择。
版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/7/1 16:30:48

罗技PUBG压枪宏:5分钟掌握精准射击的核心技巧

罗技PUBG压枪宏:5分钟掌握精准射击的核心技巧 【免费下载链接】logitech-pubg PUBG no recoil script for Logitech gaming mouse / 绝地求生 罗技 鼠标宏 项目地址: https://gitcode.com/gh_mirrors/lo/logitech-pubg 在《绝地求生》(PUBG&#…

作者头像 李华
网站建设 2026/7/1 16:28:45

LLM推理KV Cache优化实战:显存压缩与成本分析

LLM推理KV Cache优化实战:显存压缩与成本分析 部署大模型推理服务时,你很快会发现:显存瓶颈不在模型权重,而在KV Cache。一个70B模型单卡A100(80GB)部署时,权重仅占约35GB,但若并发8…

作者头像 李华
网站建设 2026/7/1 16:25:38

【计算机毕业设计案例】基于 SpringBoot 的校园兼职招聘信息管理系统的设计与实现 基于 SpringBoot 的高校助学兼职统筹服务系统(程序+文档+讲解+定制)

博主介绍:✌️码农一枚 ,专注于大学生项目实战开发、讲解和毕业🚢文撰写修改等。全栈领域优质创作者,博客之星、掘金/华为云/阿里云/InfoQ等平台优质作者、专注于Java、小程序技术领域和毕业项目实战 ✌️技术范围:&am…

作者头像 李华
网站建设 2026/7/1 16:24:24

AI Agent 工具调用(Tool Use)实战指南

AI Agent 工具调用(Tool Use)实战指南工具调用(Tool Use / Function Calling)是 AI Agent 从"会思考"到"能动手"的关键能力。本文将从原理到实战,全面讲解如何为 Agent 设计、注册和调用工具。一、…

作者头像 李华