Skip to content

LangGraph 的 createReactAgent 解析 #134

@Pines-Cheng

Description

@Pines-Cheng

这是 LangGraph 库中 createReactAgent 函数的 TypeScript 类型定义。让我为您详细解释一下:

主要功能

createReactAgent 用于创建一个基于 ReAct(Reasoning and Acting)模式的智能代理,该代理可以使用工具调用功能。

参数说明 (CreateReactAgentParams)

必需参数

  • llm: 支持 OpenAI 风格工具调用的语言模型
  • tools: 工具列表或 ToolNode,代理可以使用的工具集合

可选参数

提示相关

  • prompt: LLM 的提示配置,可以是:
    • 字符串:转换为 SystemMessage
    • SystemMessage:直接添加到消息列表开头
    • 函数:接收完整图状态并准备 LLM 输入
    • Runnable:处理图状态并传递给 LLM

状态管理

  • stateSchema: 状态模式定义
  • checkpointSaver/checkpointer: 检查点保存器,用于持久化代理状态
  • store: 基础存储

执行控制

  • interruptBefore: 在运行前中断的节点名称列表
  • interruptAfter: 在运行后中断的节点名称列表

响应格式

  • responseFormat: 最终输出的结构化格式,支持:
    • Zod 模式
    • JSON 模式
    • { prompt, schema } 对象

代理配置

  • name: 代理名称
  • includeAgentName: 如何向 LLM 暴露代理名称
    • undefined: 依赖 LLM 提供商的 AIMessage.name
    • "inline": 直接添加到消息内容中

钩子函数

  • preModelHook: 在调用 LLM 前执行的节点(如消息修剪、摘要等)
  • postModelHook: 在调用 LLM 后执行的节点(如人工审核、验证等)

使用示例

import { ChatOpenAI } from "@langchain/openai";
import { tool } from "@langchain/core/tools";
import { z } from "zod";
import { createReactAgent } from "@langchain/langgraph/prebuilt";

const model = new ChatOpenAI({ model: "gpt-4o" });

const getWeather = tool((input) => {
  // 工具实现
}, {
  name: "get_weather",
  description: "获取当前天气",
  schema: z.object({
    location: z.string().describe("要查询天气的位置"),
  })
});

const agent = createReactAgent({ 
  llm: model, 
  tools: [getWeather] 
});

返回值

返回一个编译后的状态图 (CompiledStateGraph),可以用于流式处理和状态管理。

这个函数提供了创建功能强大的 AI 代理的完整框架,支持工具调用、状态持久化、中断控制和结构化输出等高级功能。

Metadata

Metadata

Assignees

No one assigned

    Labels

    No labels
    No labels

    Projects

    No projects

    Milestone

    No milestone

    Relationships

    None yet

    Development

    No branches or pull requests

    Issue actions