LangGraph文档解释:https://github.langchain.ac.cn/langgraphjs/agents/run_agents/#streaming-output

一、输入格式

代理输入必须是一个包含 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)。

示例

{
"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 生成过程)。

LangGraph学习笔记——Agent的输入输出的更多相关文章

  1. java学习笔记--1_常见输入输出语句熟悉篇章

    今天上oj,想来是准备做做算法和数据结构的.看了看以前做的基础题目,想着就先熟悉一下java的语言吧! 以下是今天做的10道题目. 备注:oj有时候对格式要求非常严格,因为不在格式上纠结太久,只要ec ...

  2. Python学习笔记一,输入输出

    输出:用print()在括号中加上字符串,就可以向屏幕上输出指定的文字.比如输出'hello, world',用代码实现如下>>>print('hello,world') 也可以是多 ...

  3. STM32学习笔记3-IO配置输入输出

    STM32的IO配置时没什么特殊的,有个注意点就是有用IO前须要先打开其时钟线,下面是验证过oK的程序: RCC->APB2ENR|=GpioBApb2enrEn; //使能PORTB时钟 GP ...

  4. shell编程学习笔记之标准输入输出(read&echo)

    2017-07-17 09:32:07 输入read: 用途: 从标准输入读取一行,或者从文件描述符FD(file descriptor)中读取一行,并且将其分割成字段. 用法: read [-ers ...

  5. 第六周学习笔记,vc各类控件的输入输出

    6w学习笔记 vc控件的输入输出 单选按钮 当单击 RadioButton 控件时,其 Checked 属性设置为 true,并且调用 Click 事件处理程序.当 Checked 属性的值更改时,将 ...

  6. ELK日志分析 学习笔记

    (贴一篇之前工作期间整理的elk学习笔记) ELK官网 https://www.elastic.co   ELK日志分析系统 学习笔记 概念:ELK = elasticsearch + logstas ...

  7. swift学习笔记2——函数、闭包

    之前学习swift时的个人笔记,根据github:the-swift-programming-language-in-chinese学习.总结,将重要的内容提取,加以理解后整理为学习笔记,方便以后查询 ...

  8. CSS3与页面布局学习笔记(八)——浏览器兼容性问题与前端性能优化方案

    一.浏览器兼容 1.1.概要 世界上没有任何一个浏览器是一样的,同样的代码在不一样的浏览器上运行就存在兼容性问题.不同浏览器其内核亦不尽相同,相同内核的版本不同,相同版本的内核浏览器品牌不一样,各种运 ...

  9. 《Java学习笔记(第8版)》学习指导

    <Java学习笔记(第8版)>学习指导 目录 图书简况 学习指导 第一章 Java平台概论 第二章 从JDK到IDE 第三章 基础语法 第四章 认识对象 第五章 对象封装 第六章 继承与多 ...

  10. [DL学习笔记]从人工神经网络到卷积神经网络_1_神经网络和BP算法

    前言:这只是我的一个学习笔记,里边肯定有不少错误,还希望有大神能帮帮找找,由于是从小白的视角来看问题的,所以对于初学者或多或少会有点帮助吧. 1:人工全连接神经网络和BP算法 <1>:人工 ...

随机推荐

  1. HTTP请求使用http、socks代理demo,包含有认证和无认证

    package cn.daenx.myadmin.email.utils; import cn.hutool.http.HttpRequest; import cn.hutool.http.HttpU ...

  2. 如何正确理解IGBT参数

    文档下载链接:https://cnblogs-img.oss-cn-hangzhou.aliyuncs.com/docs/正确理解IGBT模块规格书参数.pdf

  3. TypeScript中never类型的实用技巧

    本文由 ChatMoney团队出品 妙用一 当我们在一个项目中,可能会去改动一个在整个项目中应用很广泛的函数的参数类型,但是可能由于代码量比较庞大,我们不好排查改了之后哪些地方会出现问题,此时我们可以 ...

  4. 搭建个人博客系列--(4) 利用Github Actions自动构建博客

    经过前面的系列文章的学习和实践,相信你已经成功的利用Hexo构建自己的博客并且部署到了Github上. 目前整个发布博客的流程是,用markdown文件写好博客,然后使用Hexo编译成html, 最后 ...

  5. 好消息!数栈FlinkX技术团队将FlinkX开源项目同步推送到Gitee啦!

    数栈是云原生-站式数据中台PaaS,我们在github上有一个有趣的开源项目:FlinkX FlinkX是一个基于Flink的批流统一的数据同步工具,既可以采集静态的数据,比如MySQL,HDFS等, ...

  6. Kong入门学习实践(3)路由转发

    最近在学习Kong网关,因此根据老习惯,我会将我的学习过程记录下来,一来体系化整理,二来作为笔记供将来翻看.由于我司会直接使用Kong企业版,学习过程中我会使用Kong开源版. 本篇,我们学习快速配置 ...

  7. Excel中,文本显示的纯数字(超15位)处理建议

    EXCEL中,对于文本显示的纯数字(只能认前15位),vlookup,countif都会出错,但可以用新函数xlookup,filter等处理就没问题.所以在统计文本显示的数字的时候,一定要多注意.

  8. 支持向量机(SVM)分类

      支持向量机(Support Vector Machine,SVM)是一种经典的监督学习算法,主要用于分类任务,也可扩展到回归问题(称为支持向量回归,SVR).其核心思想是通过寻找一个最优超平面,最 ...

  9. Rust 修仙之道 第一章 灵值初开 · 掌握变量与函数的灵气流动

    第一章:灵值初开 · 掌握变量与函数的灵气流动 那一年,顾行云尚是初入灵道的"代码童子",寄居在俗世码农村.他常听村中老人谈及一部残缺古卷,记载着失传已久的灵术之语--Rust经. ...

  10. visual studio 2019 运行vue 项目 npm run serve 提示 'vue-cli-service' 不是内部或外部命令,也不是可运行的程序

    https://blog.csdn.net/wxb880114/article/details/104326449 package.json 中添加了 vue-cli-service 本地环境未安装v ...