消息对象中字段的说明
消息对象字段说明SystemMessage参数列表content消息内容字段名可以省略SystemMessage(你是个善解人意的助手)相当于SystemMessage(content你是个善解人意的助手)HumanMessage参数列表content消息内容字段名可以省略HumanMessage你好啊)metadata元数据字段可以有很多自定义举例带有元数据字段from dotenvimportload_dotenvimportos from langchain.chat_modelsimportinit_chat_model from langchain_core.messagesimportHumanMessage from richimportprint as rprint load_dotenv(overrideTrue)CLOSEAI_API_KEYos.getenv(CLOSEAI_API_KEY)CLOSEAI_API_BASEos.getenv(CLOSEAI_API_BASE)modelinit_chat_model(modelgpt-5.4-mini,api_keyCLOSEAI_API_KEY,base_urlCLOSEAI_API_BASE)messages[HumanMessage(contentHello World!,nameBob,idmsg987)]rprint(model.invoke(messages))name和id都属于元数据字段当消息类型相同对消息进行区分。但不是所有模型都支持这一功能是否支持取决于模型供应商需要查看官方手册。比如OpenAI的API手册告诉我们HumanMessage支持name作为元数据字段如下图所示。而DeepSeek得API官方文档明确支持name作为元数据但实测发现模型无法识别此处通过CloseAI平台调用 gpt-5.4-mini 展示 name 的作用。from langchain_openrouterimportChatOpenRouter from dotenvimportload_dotenvimportos from langchain_core.messagesimportSystemMessage,HumanMessage load_dotenv(overrideTrue)CLOSEAI_API_KEYos.getenv(CLOSEAI_API_KEY)CLOSEAI_API_BASEos.getenv(CLOSEAI_API_BASE)modelinit_chat_model(# modelopenai/gpt-6.1-sol,modelopenai:gpt-5.4-mini,api_keyCLOSEAI_API_KEY,base_urlCLOSEAI_API_BASE,)messages[SystemMessage(你是一个信息抽取器。你会收到多条来自不同发言者的 user 消息。每条消息可能带有 name 字段。你的任务是严格根据每条消息的 name 提取发言者及其观点并输出JSON。禁止使用“第一个人/第二个人”这种相对称呼。若某条消息没有 name则输出unknown。输出格式{\speakers\:[{\name\:\...\,\claim\:\...\}]}), HumanMessage(content我认为 112,nameBob), HumanMessage(content我认为 112,nameTom), HumanMessage(content请列出谁说了什么不要判断对错。,nameaudience)]responsemodel.invoke(messages)print(response.content)说明模型加载了 name传递 的信息这在 多人对话场景 很有用。拓展使用ChatOpenRouter调用 没有将name正确传递 给模型服务。即from langchain_openrouterimportChatOpenRouter from dotenvimportload_dotenvimportos from langchain_core.messagesimportSystemMessage,HumanMessage load_dotenv(overrideTrue)OPENROUTER_API_KEYos.getenv(OPENROUTER_API_KEY)OPENROUTER_API_BASEos.getenv(OPENROUTER_API_BASE)modelChatOpenRouter(# modelopenai/gpt-6.1-sol,modelgpt-4o-mini,api_keyOPENROUTER_API_KEY,base_urlOPENROUTER_API_BASE,)messages[SystemMessage(你是一个信息抽取器。你会收到多条来自不同发言者的 user 消息。每条消息可能带有 name 字段。你的任务是严格根据每条消息的 name 提取发言者及其观点并输出JSON。禁止使用“第一个人/第二个人”这种相对称呼。若某条消息没有 name则输出unknown。输出格式{\speakers\:[{\name\:\...\,\claim\:\...\}]}), HumanMessage(content我认为 112,nameBob), HumanMessage(content我认为 112,nameTom), HumanMessage(content请列出谁说了什么不要判断对错。,nameaudience)]responsemodel.invoke(messages)print(response.content)AIMessage参数列表content模型输出的原始内容字段名可以省略AIMessage(你好)相当于AIMessage(content你好)response_metadataAIMessage特有属性LLM的响应中附加元数据根据不同的模型会有不同如可能会包含本次token使用量等信息tool_callsAIMessage特有属性表示工具调用信息当LLM决定调用工具时在AIMessage中就会包含这个属性没有工具调用则为空。结构如下tool_calls[{name:get_weather,#应调用的工具名args:{city:杭州},# 调用工具的参数id:call_00_gIXYOD1Q1OkEXmdDBqXR1578,# 工具调用的唯一标识IDtype:tool_call},{name:get_news,args:{},id:call_01_jD3phD5PEaIZf0mVLhKt0861,type:tool_call}]toool_calls属性是一个ToolCall列表每个ToolCall是一个字典包含字段见上usage_metadata用量信息举例AIMessage调用工具AIMessage(content,tool_calls[{name:get_weather,args:{city:北京},id:call_xxx}])更丰富的参数from langchain_core.messagesimportSystemMessage,HumanMessage from langchain.chat_modelsimportinit_chat_model from dotenvimportload_dotenvimportos from richimportprint as rprint# 从.env文件中加载环境变量load_dotenv(overrideTrue)CLOSEAI_API_KEYos.getenv(CLOSEAI_API_KEY)CLOSEAI_API_BASEos.getenv(CLOSEAI_API_BASE)modelinit_chat_model(modelgpt-6.1-sol,model_provideropenai,api_keyCLOSEAI_API_KEY,base_urlCLOSEAI_API_BASE)messages[SystemMessage(你叫小智是一名助人为乐的助手。), HumanMessage(你好好久不见请介绍下你自己。)]responsemodel.invoke(messages)rprint(response)返回内容分析ToolMessage参数列表content文件内容name工具名称tool_call_id工具调用唯一IDToolMessage必须紧邻匹配的AIMessage和前者tool_calls中的id一致ToolMessage(content工具输出,nameget_weather,tool_call_idcall_00_nUD2NC9QRN5Cg1GaoIkBJQ4s# 一定要和AI消息中的调用ID匹配)举例1工具调用json格式from langchain.chat_modelsimportinit_chat_model from dotenvimportload_dotenvimportos# 从.env文件中加载环境变量load_dotenv(overrideTrue)CLOSEAI_API_KEYos.getenv(CLOSEAI_API_KEY)CLOSEAI_BASE_URLos.getenv(CLOSEAI_BASE_URL)modelinit_chat_model(modelgpt-5.4-mini,model_provideropenai,api_keyCLOSEAI_API_KEY,base_urlCLOSEAI_BASE_URL)def get_weather(city: str)-str:return不错哦~# 模拟模型绑定工具model_with_toolsmodel.bind_tools([get_weather])ai_message{role:assistant,content:,tool_calls:[{name:get_weather,args:{location:北京},id:call_00_nUD2NC9QRN5Cg1GaoIkBJQ4s}]}tool_message{role:tool,content:今天北京天气晴朗万里无云~,tool_call_id:call_00_nUD2NC9QRN5Cg1GaoIkBJQ4s}messages[{role:user,content:北京天气如何}, ai_message, tool_message]responsemodel.invoke(messages)print(response)工具调用对象格式from langchain_core.messagesimportAIMessage, ToolMessage,HumanMessage from langchain.chat_modelsimportinit_chat_model from dotenvimportload_dotenvimportos# 从.env文件中加载环境变量load_dotenv(overrideTrue)CLOSEAI_API_KEYos.getenv(CLOSEAI_API_KEY)CLOSEAI_BASE_URLos.getenv(CLOSEAI_BASE_URL)modelinit_chat_model(modelgpt-5.4-mini,model_provideropenai,api_keyCLOSEAI_API_KEY,base_urlCLOSEAI_BASE_URL)def get_weather(city: str)-str:return不错哦~# 模拟模型绑定工具model_with_toolsmodel.bind_tools([get_weather])# ai_message {# role: assistant,# content: ,# tool_calls: [{# name: get_weather,# args: {location: 北京},# id: call_00_nUD2NC9QRN5Cg1GaoIkBJQ4s# }]# }ai_messageAIMessage(content[], tool_calls[{name:get_weather,args:{location:北京},id:call_00_nUD2NC9QRN5Cg1GaoIkBJQ4s}])# tool_message {# role: tool,# content: 今天北京天气晴朗万里无云~,# tool_call_id: call_00_nUD2NC9QRN5Cg1GaoIkBJQ4s# }tool_messageToolMessage(content今天北京天气晴朗万里无云~, tool_call_idcall_00_nUD2NC9QRN5Cg1GaoIkBJQ4s)messages[# {role: user, content: 北京天气如何},HumanMessage(content北京天气如何), ai_message, tool_message]# for message in messages:# print(message)responsemodel.invoke(messages)print(response)

相关新闻

Scrum Master不是项目经理:角色本质与三大核心职责

Scrum Master不是项目经理:角色本质与三大核心职责

1. 这不是“项目经理”,而是团队的“清道夫”和“护航员” 很多人第一次听说Scrum Master,下意识就往传统项目经理身上套——管进度、盯交付、催人干活、向上汇报。我带过12个跨行业Scrum团队(从金融风控系统到医疗影像AI平台)&am…

2026/10/3 19:13:59 阅读更多 →
6D位姿估计与跟踪协同:跨物体通用方案的工程实践

6D位姿估计与跟踪协同:跨物体通用方案的工程实践

做过机器人抓取项目的朋友应该都体会过这种绝望:物体明明识别出来了,机械臂却总是抓不准,或者传送带一动,之前给出的位姿就彻底失效。这个场景里真正难的并不是“认出这是什么”,而是 在任何时刻都知道它在哪里、以什…

2026/10/3 19:13:59 阅读更多 →
模型优化器实战:从计算图优化到量化剪枝的推理加速指南

模型优化器实战:从计算图优化到量化剪枝的推理加速指南

1. 模型优化器到底在优化什么第一次看到 Model-Optimizer 这个词,很多人会下意识地把它和“训练加速”“显存压缩”画等号。实际上,它覆盖的范围比这宽得多。你可以把它理解成一套围绕模型全生命周期的“调优工具箱”:从训练阶段的梯度更新策…

2026/10/3 19:13:59 阅读更多 →

最新新闻

STM32智能宠物喂食器:Proteus仿真先行,从零搭建到实物避坑

STM32智能宠物喂食器:Proteus仿真先行,从零搭建到实物避坑

1. 项目缘起与整体设计思路 1.1 为什么选择"仿真先行"这条路 做STM32智能宠物喂食器这个项目,我一开始也纠结过要不要直接画板子、焊元件、上实物。毕竟喂食器这东西结构不复杂,一个舵机或者步进电机带动下料机构,加个LCD显示状态…

2026/10/3 19:49:31 阅读更多 →
STM32参考设计获取与产品化落地实战指南

STM32参考设计获取与产品化落地实战指南

STM32 这颗芯片,但凡做过嵌入式项目的朋友都不陌生。但真正让项目进度卡住的,往往不是写代码,而是找不到一份靠谱的参考设计——原理图翻来覆去对不上引脚、PCB 布局抄了个大概结果信号完整性一塌糊涂、想找个官方评估板的原始工程文件比登天…

2026/10/3 19:49:31 阅读更多 →
U-Boot网络子系统深度解析:从net、mac到phy的调试与移植实战

U-Boot网络子系统深度解析:从net、mac到phy的调试与移植实战

1. 从一次网口不亮说起:U-Boot网络子系统的整体骨架板子上电,串口打印一路跑到U-Boot命令行,ping一下网关,结果返回ping failed; host 192.168.1.1 is not alive。这种场景做过嵌入式的人基本都遇到过。网口灯不亮、PHY识别不到、…

2026/10/3 19:49:31 阅读更多 →
VSCode常用插件配 TaoToken:把 Base URL 改到 TaoToken 的完整清单

VSCode常用插件配 TaoToken:把 Base URL 改到 TaoToken 的完整清单

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 19:49:31 阅读更多 →
BIOS与USB控制权争夺战:键盘失灵11天抢救实录

BIOS与USB控制权争夺战:键盘失灵11天抢救实录

1. 一场由 USB 控制权引发的键盘惨案那天下午我本来只想干一件很简单的事:在自制的 x86 小主机上,把 USB 键盘的初始化流程从 BIOS 的 Legacy USB Support 手里抢过来,自己接管 EHCI 控制器,做一个轻量的 USB HID 驱动实验。结果代…

2026/10/3 19:49:31 阅读更多 →
DRV8818+STM32L4S5ZI步进电机驱动方案:工业定位与运动控制实战解析

DRV8818+STM32L4S5ZI步进电机驱动方案:工业定位与运动控制实战解析

最近在搭一条小型贴装产线的物料定位机构,需求是两路双极步进电机,速度不高但要求位置可重复、启停不抖,现场电源统一走24V直流。选型阶段翻了不少方案,最后落地的是 DRV8818PWPR STM32L4S5ZI 这套组合。这篇文把我的选型逻辑、…

2026/10/3 19:48:30 阅读更多 →

日新闻

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南

把回忆蒸馏成 AI 的浪漫实验:为什么你需要前任.skill 完整指南 【免费下载链接】ex-skill 前任 skill 项目地址: https://gitcode.com/gh_mirrors/exsk/ex-skill 前任.skill 是一个运行在 Claude Code 上的开源 Skill:导入微信、iMessage、短信、…

2026/10/3 0:00:27 阅读更多 →
45个经典Linux面试题:从命令到网络排障的完整考点解析

45个经典Linux面试题:从命令到网络排障的完整考点解析

刚开始带应届生的时候,我最头疼的就是他们拿着一摞Linux面试题背得滚瓜烂熟,一上机全露馅。后来自己从被面的人变成面别人的人,才慢慢摸清楚:Linux面试题考的根本不是答案本身,而是你面对一个不确定的系统问题时&#…

2026/10/3 0:01:28 阅读更多 →
SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

SAP生产预留实战指南:MB21/MB23/MB25协同与MRP集成

简介:本资源是一份面向SAP ABAP开发人员、生产计划专员及ERP实施顾问的实操型操作指南,聚焦SAP生产预留核心业务场景,系统解决物料预留创建、查询、校验与批量处理等高频问题。文档以结构化方式覆盖预留背景原理、OMC2编码规则、工厂级参数配…

2026/10/3 0:01:28 阅读更多 →

周新闻

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解

如何划分训练/验证集:Spirula Studio五种eval_mode策略详解 【免费下载链接】spirula-studio Cross-vendor 3D Gaussian Splatting trainer - video to splat to mesh, Vulkan or CUDA. 项目地址: https://gitcode.com/GitHub_Trending/sp/spirula-studio Sp…

2026/10/3 9:14:33 阅读更多 →
SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南

SEO怎么推广速查手册新手避坑实战指南 模板网站太丑不够用?别急着加滤镜,那是治标不治本。很多老板盯着后台流量掉得眼红,却还在纠结首页Banner的圆角是不是3像素。这就像穿着西装去挖土,姿势不对,努力白费。我整理这份 速查手册…

2026/10/3 9:47:50 阅读更多 →
FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏

FireRed-OpenStoryline少样本仿写深度解析:AI Agent如何复刻你的独特文案风格与节奏 【免费下载链接】FireRed-OpenStoryline FireRed-OpenStoryline is an AI video editing agent that transforms manual editing into intention-driven directing through natural language …

2026/10/3 9:42:31 阅读更多 →

月新闻

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

我发现了一个新思路:用 Remotion + Claude Code 像写代码一样自动化生成短视频

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/2 10:36:31 阅读更多 →
Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

Windows下 Codex 中 Chrome 和 Computer Use 插件不可用问题排查及解决参考方式:TaoToken 统一 Key 配置与验证

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:35 阅读更多 →
黑夜航拍船只数据集训练YOLOV5模型全流程解析

黑夜航拍船只数据集训练YOLOV5模型全流程解析

/* MD / 富文本中的 .toc(含博客园搬家等嵌套结构);.toc-box 在侧栏,不受影响 */#content_views .toc,/* 编辑器常在目录前后插入空 p(:empty 仍占 20px),一并去掉避免顶空隙 */#content_views.markdown_views > p:empty:has(+ .toc),#content_views.markdown_views …

2026/10/3 9:42:36 阅读更多 →