从零构建AI智能体:Patterns、ReAct与LangGraph
了解人工智能智能体背后的核心概念——规划、工具使用、反思以及ReAct模式——以及LangChain和LangGraph在手动构建智能体时的作用。
人工智能系统已不再局限于回答孤立的问题。借助人工智能智能体,模型可以规划一系列操作步骤、调用外部工具、评估返回结果,并完成需要多步才能完成的任务。
什么构成人工智能智能体?
普通的人工智能模型会对单个提示作出反应并生成单一回复。而人工智能智能体则功能更为强大,它能够:
- 弄清楚用户真正的需求
- 将该目标分解为一系列操作步骤
- 选择并调用合适的工具
- 查看这些工具返回的结果
- 持续工作直至任务真正完成
可以想象一个虚拟的旅行规划师在为康提设计两天的行程。它需要从多个渠道收集信息,再将这些信息整合成可行的行程安排,而不仅仅是给出抽象的描述。
智能代理工作流的具体形态
许多实际任务过于复杂,无法一次性完成。智能代理工作流通过将任务拆分为多个独立阶段来解决这一问题。
常见的阶段包括:
- 规划
- 研究
- 撰写
- 审阅
- 优化
以这种方式组织工作,可以让代理在前期阶段的成果基础上不断改进,从而提升最终输出的质量。
智能代理设计中的常见模式
在设计人工智能代理时,有几种常用的成熟模式:
- 规划:将一个大型任务拆分成多个较小的子任务。
- 工具使用:调用计算器、搜索引擎或数据库等外部资源。
- 反思:检查草拟答案的质量并对其进行优化。
这些机制使智能体能够处理比单纯的一次提示-响应交互更为复杂的问题。
LangChain与LangGraph的作用
LangChain提供了构建基于语言模型应用所需的组件,包括提示模板、工具集成以及与不同模型的连接功能。
LangGraph则负责将各个独立操作串联成一条连贯的流程。当智能体需要循环处理、持久记忆、调用工具或在某个节点由人类介入时,它尤为有用。
总结二者的区别:
- LangChain负责提供各组成部分。
- LangGraph负责协调这些操作的运行方式。
理解ReAct模式
ReAct模式将推理与行动相结合。
遵循此模式的智能体会循环执行以下步骤:
- 推理下一步该做什么
- 执行某个动作
- 检查结果
- 推理后续步骤
这个循环会持续运行,直到智能体确信能够得出最终答案。
ReAct循环将思考、行动、观察与最终结果的输出紧密联系在一起。
手动构建一个基础智能体
可以考虑创建一个拥有两种工具的最简智能体:
- 一种用于查询犬种的典型体重
- 另一种用于执行加法运算
想象一下有用户提出这样的问题:边境牧羊犬和苏格兰梗的体重加在一起会有多少?
面对这样的请求,智能体会按以下步骤处理:
- 查询边境牧羊犬的体重:37磅
- 查询苏格兰梗的体重:20磅
- 使用
37 + 20调用计算器 - 报告结果:57磅
这个流程展示了智能体是如何通过多次调用工具来获取答案,而非直接猜测的。
模型与运行时之间的任务分配
语言模型和周围的Python代码分别负责处理不同的任务部分。
大语言模型负责:
- 理解问题含义
Python运行时负责处理以下事务:
- 实际执行选定的工具
- 记录处理结果
- 管理驱动智能体的循环流程
- 将工具的输出反馈给模型
简而言之,模型决定需要执行什么操作,而Python代码则负责将其实现。
将循环转化为自动化流程
无需手动触发每次工具调用,你可以让整个智能体循环实现自动化。系统会检查模型是否需要调用某个工具:
- 如果需要,就会执行该工具。
- 其输出结果会被传回模型。
- 一旦不再需要其他工具,智能体就会返回最终答案。
以这种方式实现循环自动化,能让智能体在多种不同的用户请求中重复使用,而不仅仅是一个一次性脚本。
需记住的关键点
- AI智能体通过执行一系列步骤来完成任务。
- 智能体工作流依赖于规划、工具调用、观察以及反复优化。
- 常见的设计模式包括规划、工具使用、反思、多智能体协调以及记忆管理。
- LangChain为AI应用提供了基础构建模块。
- LangGraph负责管理这些模块如何连接成可运行的流程。
- ReAct将推理、行动与结果观察相结合。
- 大语言模型负责决策,而Python运行时则处理执行任务。
- 自动化的智能体循环会持续调用工具,直到任务完成。
这些基础为未来使用 LangGraph 构建更复杂的智能体奠定了前提。
人工智能的下一阶段不仅仅是生成更好的答案——而是打造能够自主采取正确行动的系统。
相关阅读
- 构建智能体循环后 LangChain 实际上能自动化什么 —— 阐述了 LangChain、LangGraph 以及类似 SDK 如何封装从零开始构建的相同核心智能体循环,以及何时依赖框架会有帮助或带来弊端。