代理概述
LangGraph 提供了 低级原语 和 高级预构建组件 ,用于构建基于代理的应用程序
本节重点介绍旨在帮助快速可靠地构建代理系统而无需从头实现编排、内存或人工反馈处理的预构建、可重用组件
什么是代理?
一个代理由三个组件组成:
- 一个 大型语言模型 LLM
- 一套可供其使用的 工具
- 一个提供指令的 提示
LLM 在一个循环中运行。在每次迭代中,它会选择一个要调用的工具,提供输入,接收结果(一个观察),并利用该观察来指导下一个动作。循环会一直持续,直到满足停止条件,通常是代理收集到足够的信息来响应用户时
主要功能
高级构建块
LangGraph 附带了一组预构建组件,可实现常见的代理行为和工作流。这些抽象构建在 LangGraph 框架之上,提供了更快的生产路径,同时在高级定制方面保持灵活性。
使用 LangGraph 进行代理开发能够专注于应用程序的逻辑和行为,而不是构建和维护状态、内存和人工反馈的支持基础设施
包生态系统
高级组件被组织成几个包,每个包都有特定的重点
| 包 | 描述 | 安装 |
| langgraph-prebuilt (属于 langgraph) | 预构建组件,用于创建代理 | pip install -U langgraph langchain |
| langgraph-supervisor | 用于构建主管代理的工具 | pip install -U langgraph-supervisor |
| langgraph-swarm | 用于构建蜂群多代理系统的工具 | pip install -U langgraph-swarm |
| langchain-mcp-adapters | 用于工具和资源集成的MCP 服务器接口 | pip install -U langchain-mcp-adapters |
| langmem | 代理内存管理:短期和长期 | pip install -U langmem |
| agentevals | 用于评估代理性能的实用工具 | pip install -U agentevals |
可视化代理图
使用以下工具可视化由 create_react_agent 生成的图,并查看相应代码的概述。它允许您探索代理的基础设施,该基础设施由以下内容的存在定义:
- tools:代理可用于执行任务的工具列表(函数、API 或其他可调用对象)
- pre_model_hook:在模型调用之前调用的函数。它可用于精简消息或执行其他预处理任务
- post_model_hook:在模型调用之后调用的函数。它可用于实现防护措施、人在回路流程或其他后处理任务
response_format:用于约束最终输出类型的数据结构
例如 `pydantic` `BaseModel`
以下代码片段展示了如何使用 create_react_agent 创建上述代理(及底层图)
from langgraph.prebuilt import create_react_agent
from langchain_openai import ChatOpenAI
from pydantic import BaseModel
model = ChatOpenAI("o4-mini")
def tool() -> None:
"""Testing tool."""
...
def pre_model_hook() -> None:
"""Pre-model hook."""
...
def post_model_hook() -> None:
"""Post-model hook."""
...
class ResponseFormat(BaseModel):
"""Response format for the agent."""
result: str
agent = create_react_agent(
model,
tools=[tool],
pre_model_hook=pre_model_hook,
post_model_hook=post_model_hook,
response_format=ResponseFormat,
)
agent.get_graph().draw_mermaid_png()
| Next:运行代理 | Home: 构建代理 |