ReAct 是 “Reasoning and Acting”(推理与行动)的缩写,其核心思想是让智能体在面对任务时,通过推理规划行动步骤,并根据行动的结果进行观察反馈,不断循环这一过程,直至完成任务。这种模式模拟了人类解决问题的思维方式,即先思考怎么做,然后采取行动,再根据行动的结果调整后续的思考和行动。
在 ReAct 模式下,智能体的运行遵循一个持续的循环:
为什么大模型能够按照 ReAct 模式进行思考和行动呢?这主要得益于系统提示词(System Prompt)。系统提示词与用户问题一同发送给大模型,它明确规定了模型的角色、运行规则以及各种环境信息等。一个典型的 ReAct 系统提示词通常包含以下几个关键部分:
通过将这样的系统提示词与用户任务一同提交给大模型,大模型就能按照 ReAct 模式的规范输出答案。例如,当我们将包含 ReAct 规范的系统提示词和 “写一个简单的 Python 脚本,计算 1 到 100 的整数和” 的任务提交给大模型时,大模型会首先在 “thought” 标签中思考需要使用 Python 的循环和累加功能来实现计算,然后使用 “action” 标签请求调用文本编辑工具创建一个 Python 脚本文件,并写入计算代码。工具执行结果(如文件创建成功、代码写入成功等)会作为 “observation” 返回给智能体主程序,智能体主程序将其加入历史消息列表,并再次发送给大模型。当脚本运行并得到计算结果后,大模型在 “thought” 之后会返回一个 “final answer”,整个回答过程结束。
假设我们有一个智能文档处理 Agent,用户的任务是 “在文档中查找关键词‘人工智能’,并将包含该关键词的段落字体颜色改为红色,然后保存文档”。
docx
库相关函数来打开并读取文档内容。
我们编写一段prompt,用大语言模型进行演示:
你是一个智能任务处理助手,需严格按照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来写代码了: