ReAct 技术与 Function Call 技术介绍
1. ReAct 技术
ReAct 是一种用于增强语言模型推理能力的技术,通过在模型的推理过程中引入“思考”(thought)步骤,帮助模型更好地理解和规划下一步行动。-
核心思想:
- ReAct 在传统的“行动-观察”(action-observation)循环中加入了“思考”步骤,使得模型在每一步行动后能够对观察结果进行总结和思考,从而调整后续的行动计划。
- 这种方法通过显式地注入与任务解决相关的常识性知识,提高了模型的决策准确率。
-
工作流程:
- 思考(Thought):模型对当前问题进行分析,思考下一步需要采取的行动。
- 行动(Action):模型决定调用哪些工具或函数,并提供必要的参数。
- 观察(Observation):工具执行后返回结果,模型对结果进行观察。
- 响应(Response):根据观察结果,模型生成最终的用户响应。
-
优势:
- 提高推理能力:通过显式的思考步骤,模型能够更好地理解问题并规划解决方案。
- 增强决策准确性:模型在每一步都能根据观察结果调整后续行动,减少了错误决策。
2. Function Call 技术
Function Call 是一种允许语言模型调用外部工具或函数的技术,用于扩展模型的能力。-
核心思想:
- Function Call 允许模型在推理过程中调用外部工具(如API、数据库查询等),获取实时数据或执行复杂操作。
- 这种技术使得模型能够处理超出其预训练知识范围的任务。
-
工作流程:
- 用户提问:用户向模型提出问题。
- 模型分析:模型分析问题,决定需要调用的外部工具及其参数。
- 调用工具:模型生成一个工具调用请求(ToolCall),并发送给外部工具。
- 工具响应:外部工具执行请求并返回结果。
- 生成回答:模型根据工具返回的结果生成最终的用户响应。
-
优势:
- 扩展模型能力:通过调用外部工具,模型能够处理更复杂的任务。
- 获取实时数据:模型可以调用API获取实时数据,提高回答的准确性和时效性。
示例:使用 ReAct 和 Function Call 构建天气查询 Agent
假设我们构建一个能够回答天气问题的Agent,其工作流程如下:- 思考:用户输入“北京的天气怎么样?”Agent分析问题,决定需要调用天气查询工具。
-
行动:Agent调用
get_weather
函数,传入参数location="北京"
。 -
观察:
get_weather
函数返回结果“天气晴朗”。 - 响应:Agent根据返回结果生成回答“北京的天气晴朗。”