【Datawhale组队学习202602】Hello-Agents task04智能体经典范式构建

系列文章目录


文章目录

  • 系列文章目录
  • 前言
  • 一、现代智能体
    • [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

  • 举个例子,要查"华为最新手机",大模型很可能给出下面这样的案例
  1. 纯思维链(CoT):

    模型直接推理:"我记得2023年是Mate 60...所以最新应该是Mate 70"

  • 问题:它的知识冻结在训练截止日,可能给出过时答案,甚至编造不存在的型号(幻觉)。
  1. 纯行动(直接调工具):

    模型一上来就调搜索: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


总结

  1. 某电商初创公司现在希望使用"客服智能体"来代替真人客服实现降本增效,它需要具备以下功能:

    a. 理解用户的退款申请理由

    b. 查询用户的订单信息和物流状态

    c. 根据公司政策智能地判断是否应该批准退款

    d. 生成一封得体的回复邮件并发送至用户邮箱

    e. 如果判断决策存在一定争议(自我置信度低于阈值),能够进行自我反思并给出更审慎的建议

    • 此时作为该产品的负责人:
      • 你会选择本章的哪种范式(或哪些范式的组合)作为系统的核心架构?
      • 这个系统需要哪些工具?请列出至少3个工具及其功能描述。
      • 如何设计提示词来确保智能体的决策既符合公司利益,又能保持对用户的友好态度?
      • 这个产品上线后可能面临哪些风险和挑战?如何通过技术手段来降低这些风险?

答:

  • 选择 ReAct + Reflection组合起来一起作为系统的核心架构
  • 工具:
    1. UserInfo,根据用户标识符识别具体用户;
    2. UserOrder
相关推荐
海兰6 小时前
【文字三国志:第一篇】天命重构,大语言模型(LLM)动态生成文言风格的叙事文本的文字游戏
人工智能·游戏·语言模型
cxr8287 小时前
高分子复合材料 AI 逆向设计合——验证闭环、决策优化与中试放大
人工智能·材料逆向设计合成
litble7 小时前
如何速成LLM以伪装成一个AI研究者(6)——LoRA,Adapter,P-tuning,量化,QLoRA
人工智能·lora·量化·peft·qlora·高效微调
开发者每周简报7 小时前
网海三部曲·无名宗师传
javascript·人工智能
卷毛的技术笔记7 小时前
告别硬编码!Spring AI Alibaba 实现 AI Agent 智能工具调用(Tool Calling)
java·人工智能·后端·python·spring·ai编程
Cosolar8 小时前
从零写一个 Attention Is All You Need
人工智能·面试·架构
GHL2842710908 小时前
换脸工作流学习
学习·ai
ai_xiaogui8 小时前
PanelAI:新一代AI算力调度系统,支持本地大模型一键部署与商业运营
人工智能·panelai·panelai算力调度系统·本地大模型一键部署平台·ai应用市场管理面板·企业级部署·2026本地ai私有化解决方案
冬奇Lab8 小时前
Agent 系列(9):多 Agent 架构设计模式——Supervisor 与 Pipeline
人工智能·源码·agent