LangGraph官方文档笔记(七)——Agent的输入输出

LangGraph文档解释:github.langchain.ac.cn/langgraphjs...

一、输入格式

代理输入必须是一个包含 messages 键的对象,支持多种输入形式,且会自动转换为 LangChain 内部消息格式。具体格式如下:

  • 字符串格式
    { messages: "Hello" }
    会被解释为 HumanMessage(用户消息)。
  • 消息对象格式
    { messages: { "role": "user", "content": "Hello" } }
    直接指定角色(如 user)和内容。
  • 消息列表格式
    { messages: [{"role": "user", "content": "Hello"}] }
    支持多条消息按顺序传入。
  • 带自定义状态格式
    { messages: [{"role": "user", "content": "Hello"}], "user_name": "Alice" }
    若定义了 stateSchema,可添加额外字段(如 user_name),用于动态调整代理行为。

二、输出格式

代理输出是一个字典,包含以下核心内容:

  • messages
    执行过程中所有消息的列表,包括用户输入、助手回复、工具调用等完整交互记录。
  • structuredResponse(可选)
    若配置了结构化输出(如 JSON 格式),会在此字段中包含解析后的结果。
    LangGraph配置结构化输出文档
  • 自定义状态字段(可选)
    若定义了 stateSchema,输出会包含工具执行结果或提示逻辑更新的状态值(如 user_name)。

示例

json 复制代码
{
  "messages": [
    {"role": "user", "content": "what is the weather in sf"},
    {"role": "assistant", "content": "Thinking... need to call weather tool"},
    {"role": "tool", "name": "getWeather", "parameters": {"location": "SF"}},
    {"role": "assistant", "content": "The weather in SF is sunny."}
  ],
  "structuredResponse": {"weather": "sunny", "temperature": "22°C"},
  "user_name": "Alice"  // 自定义状态字段
}

三、对比与应用场景

场景 输入格式示例 输出格式核心字段
简单文本交互 { messages: "What's today's date?" } messages(包含助手回复)
复杂对话历史 { messages: [{"role": "user", "content": "First question"}, ...] } messages(按顺序记录所有消息)
工具调用场景 { messages: ["Get weather in NY"], "location": "New York" } messages(包含工具调用记录)、structuredResponse(天气数据)
自定义状态管理 { messages: ["Hello"], "user_id": 123 } messagesuser_id(状态保留)

四、延伸

  • 输入转换逻辑:所有输入格式最终都会被解析为 LangChain 消息对象,确保代理能统一处理不同形式的输入。
  • 输出扩展性 :通过 stateSchema 可自定义输出字段,适用于需要持久化用户状态或工具调用结果的场景(如多轮对话中保存用户偏好)。
  • 与流式输出的结合 :流式输出时,每次更新会逐步返回 messages 中的内容片段,提升用户交互体验(如实时显示 LLM 生成过程)。

原文地址:https://www.cnblogs.com/LiShengTrip/p/18957212

相关推荐
研究点啥好呢6 小时前
高德多模态算法工程师面试题精选:10道高频考题+答案解析
python·面试·llm·求职招聘·笔试·高德
qcx237 小时前
Warp源码深度解析(四):AI Agent原生集成——MCP协议、代码索引与Skills系统
人工智能·ai·agent·源码解析·wrap
茉莉玫瑰花茶7 小时前
LangChain 核心组件 [ 2 ]
java·数据库·langchain
程序设计实验室7 小时前
用本地大模型驱动中文输入法,我做了一个实验性的项目
ai·llm
hrhcode9 小时前
【LangGraph】四.持久化:保存和恢复执行状态
python·ai·langchain·agent·langgraph
怪我冷i10 小时前
多租户管理系统,用户表,IsSuperAdmin,IsTenantAdmin,IsCompanyAdmin,IsDeptAdmin需要吗?
golang·llm·多租户·skill
测试员周周10 小时前
【AI测试系统】第2篇:拒绝盲目 AI:规则引擎 10ms 自动生成 36 条测试用例实战(附源码)
llm·ai编程·测试
冬奇Lab10 小时前
RAG 系列(三):调对这 4 个参数,让你的 RAG 从「能用」变「好用」
人工智能·llm
数据智能老司机10 小时前
人人都能学会的提示词工程——人人都能学会的提示词工程
llm
数据智能老司机10 小时前
人人都能学会的提示词工程——提示素养:从习惯到精通
llm