系列文章目录
- task00 环境配置+前言
- task01 初识智能体
- task02 智能体发展史
- task03 大语言模型基础
- task04 智能体经典范式构建
- task05 基于低代码平台的智能体搭建
- task06 框架应用开发实战
文章目录
- 系列文章目录
- 前言
- 一、现代智能体
-
- [1.1 环境准备与基础工具定义](#1.1 环境准备与基础工具定义)
- 二、ReAct
-
- [2.1 为什么提出 ReAct](#2.1 为什么提出 ReAct)
- [2.2 ReAct核心循环](#2.2 ReAct核心循环)
- [2.3 工具的定义与实现](#2.3 工具的定义与实现)
-
- [借助 SerpApi 实现结构化搜索](#借助 SerpApi 实现结构化搜索)
- [2.4 实现 ReAct agent](#2.4 实现 ReAct agent)
- [2.5 调式技巧](#2.5 调式技巧)
- [2.6 评价一下 ReAct](#2.6 评价一下 ReAct)
- 三、Plan-and-Solve
- 四、Reflection
- 总结
前言
一、现代智能体
-
之前学会提示工程,学会了怎么让大模型说话,但是这远远不够,大模型的潜力才开发了一点,智能体是让大模型真正能够提供实际作用的途径。
-
聚焦于其中最具代表性的三种,并一步步从零实现它们:
ReAct (Reasoning and Acting): 一种将"思考"和"行动"紧密结合的范式,让智能体边想边做,动态调整。
Plan-and-Solve: 一种"三思而后行"的范式,智能体首先生成一个完整的行动计划,然后严格执行。
Reflection: 一种赋予智能体"反思"能力的范式,通过自我批判和修正来优化结果。
1.1 环境准备与基础工具定义
- 安装依赖库
shell
pip install openai python-dotenv
-
通过环境变量配置 API 密钥
.env file
LLM_API_KEY="YOUR-API-KEY"
LLM_MODEL_ID="YOUR-MODEL"
LLM_BASE_URL="YOUR-URL" -
按照教程代码封装 LLM 调用函数并测试

二、ReAct
ReAct由 Shunyu Yao 于 2022 年提出,其核心思想是模仿人类解决问题的方式,将推理 (Reasoning) 与行动 (Acting) 显式地结合起来,形成一个"思考-行动-观察"的循环。
2.1 为什么提出 ReAct
- 举个例子,要查"华为最新手机",大模型很可能给出下面这样的案例
-
纯思维链(CoT):
模型直接推理:"我记得2023年是Mate 60...所以最新应该是Mate 70"
- 问题:它的知识冻结在训练截止日,可能给出过时答案,甚至编造不存在的型号(幻觉)。
-
纯行动(直接调工具):
模型一上来就调搜索:Search[华为手机]
-
问题:搜出来一堆结果,它不知道该关注"最新"还是"性价比",可能直接把搜索摘要当答案甩给你。
-
想想如果是我们面对这个问题会怎么办,反正我是这么想的:
① 先想"我需要查最新款"
|→ ② 搜索"华为2024最新手机"
|→ ③ 看到结果发现有Mate 70和Pura 70
|→ ④ 再想"哪个更新?"
|→ ⑤ 二次搜索确认
|→ ⑥ 综合得出答案。 -
这也正是
ReAct的思考路径。
2.2 ReAct核心循环
核心循环:Thought → Action → Observation

| 步骤 | ReAct对应 | 案例体现 |
|---|---|---|
| Thought | 分析现状、规划下一步 | Thought: 需要搜索华为2024年发布的旗舰机型 |
| Action | 调用工具 | Action: Search[华为最新手机型号] |
| Observation | 工具返回结果 | Observation: [1] Mate 70于2024年11月发布... |
- 关键在于 :
Observation会成为下一轮Thought的输入。
2.3 工具的定义与实现
- 之前学过
SHRDLU的物理机械臂,ReAct的工具就是它的现代智能数字版:
| 智能体组件 | 比喻 | Search工具 |
|---|---|---|
| LLM | 大脑 | 负责思考"该搜什么" |
| Tools | 手脚 | 负责执行搜索、计算等 |
| ReAct 循环 | 神经系统 | 把大脑指令传给手脚,把感官反馈传回大脑 |
借助 SerpApi 实现结构化搜索
-
首先,需要安装依赖库:
pip install google-search-results
-
同时,需要前往 SerpApi官网 注册一个免费账户,获取API密钥,并将其添加项目根目录下的 .env 文件中:
.env file
... (保留之前的LLM配置)
SERPAPI_API_KEY="YOUR_SERPAPI_API_KEY"
-
实现搜索工具的核心逻辑
-
一个良好定义的工具应包含以下三个核心要素:
| 要素 | 说明 | 举例 |
|---|---|---|
| 名称 (Name) | 一个简洁、唯一的标识符,供智能体在 Action 中调用 | 例如 Search |
| 描述 (Description) | 一段清晰的自然语言描述,说明这个工具的用途。 这是整个机制中最关键的部分,因为大语言模型会依赖这段描述来判断何时使用哪个工具。 还要设定清晰的边界 | "一个实时网页搜索引擎。当你需要回答时事新闻、产品参数、股价、天气等时效性信息,或你的内部知识可能已过时时,必须使用此工具。不要用于回答常识性问题(如'地球有几大洲')。" |
| 执行逻辑 (Execution Logic) | 真正执行任务的函数或方法 | 通过代码实现 |
- 运行教程代码,这时已经测试通了调用工具获取外部搜索信息

2.4 实现 ReAct agent
-
下面来一一拆解
-
提示词

- 使用了 Python 多行字符串(三引号)定义模板
- 采用占位符 {tools} 、 {question} 和 {history} 实现动态内容注入
- 严格定义了输出格式,要求 LLM 按照 Thought: 和 Action: 的结构输出
- 明确了两种 Action 类型:工具调用和最终回答
2.5 调式技巧
- 打印完整提示词,防止出现历史记录污染。
- 必看原始输出,别太相信解析器
parse_out。 - 工具的输入要做清洗,尤其是前后空格和感叹号
2.6 评价一下 ReAct
三、Plan-and-Solve
四、Reflection
总结

-
某电商初创公司现在希望使用"客服智能体"来代替真人客服实现降本增效,它需要具备以下功能:
a. 理解用户的退款申请理由
b. 查询用户的订单信息和物流状态
c. 根据公司政策智能地判断是否应该批准退款
d. 生成一封得体的回复邮件并发送至用户邮箱
e. 如果判断决策存在一定争议(自我置信度低于阈值),能够进行自我反思并给出更审慎的建议
- 此时作为该产品的负责人:
- 你会选择本章的哪种范式(或哪些范式的组合)作为系统的核心架构?
- 这个系统需要哪些工具?请列出至少3个工具及其功能描述。
- 如何设计提示词来确保智能体的决策既符合公司利益,又能保持对用户的友好态度?
- 这个产品上线后可能面临哪些风险和挑战?如何通过技术手段来降低这些风险?
- 此时作为该产品的负责人:
答:
- 选择
ReAct + Reflection组合起来一起作为系统的核心架构 - 工具:
- UserInfo,根据用户标识符识别具体用户;
- UserOrder