智能体(Agents) 是将大型语言模型(LLMs)与各种工具(Tools)相结合的系统,能够推理复杂任务、自主决定使用何种工具,并通过迭代方式逐步解决问题。
函数提供了一个生产就绪的智能体实现。它基于LangGraph构建了一个图结构(graph)的智能体运行时环境。这种架构由节点(nodes,即处理步骤)和边(edges,即连接关系)组成,智能体在执行过程中会沿着这个图结构移动,执行如模型调用、工具执行等节点操作。
智能体的核心执行遵循 ReAct模式(“推理+行动”):交替进行推理步骤和工具调用,并将工具执行结果作为后续决策的输入,直至达成目标或达到迭代限制。
2.1 模型(Model):智能体的推理引擎
模型是智能体的核心,它可以通过静态或动态方式进行配置。
2.1.1 静态模型
静态模型在创建智能体时一次性配置,执行过程中保持不变。
- 使用模型标识符字符串:最简单直接的方式。
- 直接实例化模型对象:提供更精细的控制。
2.1.2 动态模型
动态模型允许根据运行时上下文选择不同的模型,实现复杂路由逻辑和成本优化。
2.2 工具(Tools):智能体的行动能力
工具赋予智能体执行具体操作的能力,支持顺序调用、并行调用、动态选择和错误处理等功能。
2.2.1 定义工具
2.2.2 工具错误处理

2.2.3 ReAct循环中的工具使用示例
智能体通过ReAct循环逐步解决问题:
- 人类消息:查找当前最流行的无线耳机并检查库存
- 推理:“流行度具有时效性,我需要使用搜索工具”
- 行动:调用
- 工具返回:找到5个匹配项,排名第一:WH-1000XM5
- 推理:“需要在回答前确认库存”
- 行动:调用
- 工具返回:产品WH-1000XM5:库存10件
- 推理:“已获取最流行型号及库存状态,可以回答问题”
- 最终答案:生成包含具体信息的回答
2.3 系统提示(System Prompt)
系统提示用于塑造智能体的行为方式。
2.3.1 基本用法
2.3.2 高级控制
使用对象可以提供更精细的控制:
2.3.3 动态系统提示
智能体通过向其状态(State) 传递更新来调用。所有智能体都在状态中包含一系列消息。
4.1 结构化输出(Structured Output)
LangChain提供两种结构化输出策略。
4.1.1 工具策略(ToolStrategy)
适用于任何支持工具调用的模型,通过“人工”工具调用来生成结构化输出。
4.1.2 供应商策略(ProviderStrategy)
利用模型供应商的原生结构化输出功能,更加可靠但仅限支持此功能的供应商。
重要提示:在LangChain 1.0中,直接传递模式(如)不再支持,必须明确使用或。
4.2 记忆(Memory)
智能体通过消息状态自动维护对话历史,也可以配置自定义状态模式来记住更多信息。
4.2.1 通过中间件定义状态
当自定义状态需要被特定中间件钩子和工具访问时使用。
4.2.2 通过state_schema定义状态
作为快捷方式,当自定义状态仅在工具中使用时适用。
- 模型选择:简单应用使用静态模型,需要智能路由时使用动态模型
- 工具设计:为每个工具提供清晰描述和类型提示,实现适当的错误处理
- 提示工程:基础任务使用字符串提示,高级需求使用或动态提示
- 输出控制:需要特定格式输出时使用结构化输出策略
- 状态管理:利用自定义状态跟踪对话上下文和用户偏好
本指南涵盖了LangChain智能体的核心概念和高级特性。实际应用中,建议从简单配置开始,逐步根据需求添加复杂度,充分利用中间件和状态管理来构建强大的智能体应用。
发布者:Ai探索者,转载请注明出处:https://javaforall.net/238463.html原文链接:https://javaforall.net
