Agent知识学习与实践

接在《大模型自学笔记》后,继续对agent的深入学习,主要参考学习教程:hello-agent)

主要从hello-agent的第四章开始学习。

智能体经典范式构建

  • ReAct(推理与行动):一种将“思考”和“行动”紧密结合的范式,让智能体边想边做,动态调整。
  • Plan-and-Solve: 一种“三思而后行”的范式,智能体首先生成一个完整的行动计划,然后严格执行。
  • Reflection: 一种赋予智能体“反思”能力的范式,通过自我批判和修正来优化结果。

ReAct

工作流程

最经典,模仿人类解决问题的方式,将推理 (Reasoning)行动 (Acting) 显式地结合起来,形成“思考-行动-观察”的循环。

在react之前,主流方法有纯思考(eg.思维链)和纯行动两种。ReAct范式将两者结合起来,通过一种特殊的提示工程来引导模型,重复循环:Thought -> Action -> Observation,将新的观察结果追加到历史记录中,形成一个不断增长的上下文,直到它在中认为已经找到了最终答案,然后输出结果。

  • Thought(思考):这是智能体的“内心独白”。它会分析当前情况、分解任务、制定下一步计划,或者反思上一步的结果。
  • Action (行动): 这是智能体决定采取的具体动作,通常是调用一个外部工具,例如:Search['华为最新款手机']
  • Observation (观察):这是执行后从外部工具返回的结果,例如搜索结果的摘要或API的返回值。

推理使得行动更具目的性,而行动则为推理提供了事实依据。

工具

定义:

  1. 名称 (Name): 一个简洁、唯一的标识符,供智能体在中调用,例如 。Action Search
  2. 描述 (Description): 一段清晰的自然语言描述,说明这个工具的用途。这是整个机制中最关键的部分,因为大语言模型会依赖这段描述来判断何时使用哪个工具。
  3. 执行逻辑 (Execution Logic): 真正执行任务的函数或方法。

对于多种工具,还需要一个统一的管理器来注册和调度这些工具。

ReAct Agent编码实现

ReActAgent 类。

提示词

ReAct机制的基石。

  • 角色定义:“你是一个有能力调用外部工具的智能助手”,设定了LLM的角色。
  • 工具清单 ({tools}: 告知LLM它有哪些可用的“手脚”。
  • 格式规约 (Thought/Action: 这是最重要的部分,它强制LLM的输出具有结构性,使我们能通过代码精确解析其意图。
  • 动态上下文 ({question}/{history}: 将用户的原始问题和不断累积的交互历史注入,让LLM基于完整的上下文进行决策。
核心循环

不断地“格式化提示词 -> 调用LLM -> 执行动作 -> 整合结果”,直到任务完成或达到最大步数限制。

输出解析器
工具调用与执行