首页
学习
活动
专区
圈层
工具
发布
首页
学习
活动
专区
圈层
工具
MCP广场
社区首页 >专栏 >深入理解Agent中的ReAct模式

深入理解Agent中的ReAct模式

作者头像
GeekLiHua
发布2025-08-24 08:25:04
发布2025-08-24 08:25:04
44100
代码可运行
举报
文章被收录于专栏:JavaJava
运行总次数:0
代码可运行

深入理解Agent中的ReAct模式

1. ReAct 模式的核心理念

ReAct 是 “Reasoning and Acting”(推理与行动)的缩写,其核心思想是让智能体在面对任务时,通过推理规划行动步骤,并根据行动的结果进行观察反馈,不断循环这一过程,直至完成任务。这种模式模拟了人类解决问题的思维方式,即先思考怎么做,然后采取行动,再根据行动的结果调整后续的思考和行动。

2. ReAct 模式的运作流程

2.1 循环机制

在 ReAct 模式下,智能体的运行遵循一个持续的循环:

  1. Thought(思考):智能体首先接收用户提交的任务,对任务进行深入分析,确定解决问题的关键信息和推理步骤,规划接下来要采取的行动。例如,当用户提出 “查询明天北京到上海的高铁车次,并预订一等座车票” 的任务时,智能体在思考阶段会分析出需要先查询高铁车次信息,再进行车票预订操作。
  2. Action(行动):根据思考阶段的规划,智能体决定是否调用工具来执行任务。如果需要,它会选择合适的工具并传入相应的参数。工具可以是各种外部服务或 API,如在上述例子中,智能体可能会调用 12306 的车次查询 API 来获取北京到上海明天的高铁车次信息。
  3. Observation(观察):智能体观察工具的执行结果。例如,车次查询 API 返回了明天北京到上海的高铁车次列表,智能体将获取到这个结果,并对其进行分析。
  4. 循环:智能体根据观察到的结果,再次进入思考阶段,判断当前是否已经完成任务或者是否需要进一步采取行动。如果仍然需要行动,它会重复 Thought -> Action -> Observation 的流程。比如,在获取车次列表后,智能体思考下一步需要预订一等座车票,于是再次进入行动阶段调用车票预订工具进行操作。
  5. Final Answer(最终答案):当智能体认为任务已完成时,它会输出最终答案。在预订车票成功后,智能体可能会返回 “已成功预订明天北京到上海的 [具体车次] 一等座车票” 作为最终答案。
2.2 系统提示词的关键作用

为什么大模型能够按照 ReAct 模式进行思考和行动呢?这主要得益于系统提示词(System Prompt)。系统提示词与用户问题一同发送给大模型,它明确规定了模型的角色、运行规则以及各种环境信息等。一个典型的 ReAct 系统提示词通常包含以下几个关键部分:

  1. 职责描述:清晰地告知模型需要解决任务,并将任务分解为多个步骤。要求模型对于每个步骤,先使用 “thought” 标签进行思考,然后用 “action” 标签调用工具,工具执行结果通过 “observation” 返回,持续这个思考和行动的过程,直至有足够信息给出 “final answer”。
  2. 示例:提供具体的 ReAct 流程示例,包括用户提问、模型思考、调用工具、观察结果、再次思考并给出最终答案的完整对话示例,帮助模型理解并遵循交互规范。
  3. 注意事项:说明一些操作上的注意要点。
  4. 环境信息:向大模型提供当前的操作系统、目录以及目录下的文件列表等相关环境信息。

通过将这样的系统提示词与用户任务一同提交给大模型,大模型就能按照 ReAct 模式的规范输出答案。例如,当我们将包含 ReAct 规范的系统提示词和 “写一个简单的 Python 脚本,计算 1 到 100 的整数和” 的任务提交给大模型时,大模型会首先在 “thought” 标签中思考需要使用 Python 的循环和累加功能来实现计算,然后使用 “action” 标签请求调用文本编辑工具创建一个 Python 脚本文件,并写入计算代码。工具执行结果(如文件创建成功、代码写入成功等)会作为 “observation” 返回给智能体主程序,智能体主程序将其加入历史消息列表,并再次发送给大模型。当脚本运行并得到计算结果后,大模型在 “thought” 之后会返回一个 “final answer”,整个回答过程结束。

3. 具体案例分析

假设我们有一个智能文档处理 Agent,用户的任务是 “在文档中查找关键词‘人工智能’,并将包含该关键词的段落字体颜色改为红色,然后保存文档”。

  1. Thought 阶段
  • 智能体分析任务,思考到首先需要打开文档读取内容,然后在文档内容中查找关键词 “人工智能”,找到包含该关键词的段落,接着修改这些段落的字体颜色为红色,最后保存修改后的文档。
  1. Action 阶段
  • 调用文档读取工具,如 Python 的docx库相关函数来打开并读取文档内容。
  • 调用文本查找工具,在读取的文档内容中查找关键词 “人工智能”。
  • 调用文档编辑工具,根据查找到的关键词位置,定位包含该关键词的段落,并修改其字体颜色为红色。
  • 调用文档保存工具,将修改后的文档保存。
  1. Observation 阶段
  • 文档读取工具返回文档的内容信息。
  • 文本查找工具返回包含关键词 “人工智能” 的段落位置信息。
  • 文档编辑工具返回段落字体颜色修改成功的确认信息。
  • 文档保存工具返回文档保存成功的结果。
  1. 循环与 Final Answer 阶段
  • 智能体在每次观察到工具执行结果后,思考下一步行动。在所有工具执行完成且确认任务达成后,输出 “已成功在文档中查找关键词‘人工智能’,并将相关段落字体颜色改为红色,文档已保存” 作为最终答案。

4.贪吃蛇案例

我们编写一段prompt,用大语言模型进行演示:

代码语言:javascript
代码运行次数:0
运行
复制
你是一个智能任务处理助手,需严格按照ReAct模式解决用户问题。请遵循以下规则:
1. 面对任务先进行思考(用【Thought】标记),分析任务目标、所需步骤及可能调用的工具。
2. 根据思考结果执行行动(用【Action】标记),格式为工具名称+参数,例如【Action:天气查询工具,城市=北京,日期=2025-08-22】。
3. 工具返回结果后进行观察(用【Observation】标记),总结关键信息。
4. 重复Thought-Action-Observation循环,直至可给出最终答案(用【Final Answer】标记)。

示例:
用户:查一下明天上海的天气,然后推荐适合的穿搭。
【Thought】我需要先查明天上海的天气,再根据天气推荐穿搭。首先调用天气查询工具。
【Action:天气查询工具,城市=上海,日期=2025-08-22】
【Observation:上海明天多云转晴,气温25-32℃,风力3级】
【Thought】天气较热,适合穿透气的短袖短裤,再带把遮阳伞。信息足够,可给出答案。
【Final Answer:上海明天多云转晴,气温25-32℃,适合穿短袖短裤等清凉衣物,建议携带遮阳伞。】

现在请处理用户问题:

我们把这一段内容输入给豆包,就会获得以下内容,大模型基本就可以自己做一个贪吃蛇了,这个时候只需要把在代码里面加上,编译器的文件写入,编辑,运行的方法,就可以完全通过命令的方式,让Agent来写代码了:

在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
在这里插入图片描述
本文参与 腾讯云自媒体同步曝光计划,分享自作者个人站点/博客。
原始发表:2025-08-24,如有侵权请联系 cloudcommunity@tencent.com 删除

本文分享自 作者个人站点/博客 前往查看

如有侵权,请联系 cloudcommunity@tencent.com 删除。

本文参与 腾讯云自媒体同步曝光计划  ,欢迎热爱写作的你一起参与!

评论
登录后参与评论
0 条评论
热度
最新
推荐阅读
目录
  • 深入理解Agent中的ReAct模式
    • 1. ReAct 模式的核心理念
    • 2. ReAct 模式的运作流程
      • 2.1 循环机制
      • 2.2 系统提示词的关键作用
    • 3. 具体案例分析
    • 4.贪吃蛇案例
领券
问题归档专栏文章快讯文章归档关键词归档开发者手册归档开发者手册 Section 归档