news 2026/3/30 13:43:19

LangChain v1.0 Messages实战指南:掌握5种消息类型,构建生产级AI应用

作者头像

张小明

前端开发工程师

1.2k 24
文章封面图
LangChain v1.0 Messages实战指南:掌握5种消息类型,构建生产级AI应用

本文详细解析LangChain v1.0的Messages消息列表体系,从字符串拼接进化到结构化消息管理。深入介绍SystemMessage、HumanMessage等五大角色消息的作用与特点,通过代码示例展示ChatPromptTemplate构建带记忆AI应用。同时讲解Context Window管理技术和消息编排最佳实践,帮助开发者构建模块化、可维护的LLM应用,是掌握LangChain v1.0核心概念的必备指南。


在 LLM 应用开发从“玩具 demo”走向“生产环境”的过程中,我们对 Prompt 的管理方式发生了根本性的变化。在 LangChain v1.0 时代,简单的字符串拼接(String Prompting)已无法满足复杂 Agent 和长上下文的需求。

本文将深入解构 LangChain v1.0 的核心数据结构——Messages(消息列表),带你理解如何通过结构化的消息管理,构建模块化、可维护且稳定的 AI 应用。

  1. 引言:从 Prompt 到 Messages 的进化

1.1 为什么 String Prompt 不够用了?

早期的 LLM 开发往往只是简单地拼接字符串:"你是一个翻译官,请翻译这句话:" + user_input。但在构建复杂的对话系统或 Agent 时,这种方式显得捉襟见肘。我们需要明确区分“谁在说话”、“哪句是历史记忆”、“哪句是函数调用结果”。

LangChain v1.0 的核心思想是让 Prompt模块化、结构化

1.2 Messages 的本质

本质上,Messages 是 LLM 输入层的“汇编语言”。我们可以用一个公式来概括它的作用:

Messages = 构造上下文 + 定义模型行为 + 填充历史 + 控制推理流程

模型不仅仅是在“续写文本”,而是在解析一个包含角色(Role)、内容(Content)和元数据(Metadata)的结构化列表。

  1. 核心组件:五大角色详解 (The 5 Roles)

LangChain 通过langchain_core.messages模块标准化了不同角色的消息类。

2.1 SystemMessage (系统指令)

  • 作用:设定模型的身份、风格、输出格式及核心规则。
  • 特点:拥有“最高优先级”,通常位于列表的最顶端。

2.2 HumanMessage (用户输入)

  • 作用:承载用户的当前提问(Query)。
  • 进阶:支持多模态输入(如传入图片 URL)。

2.3 AIMessage (模型回复)

  • 作用:模型的输出内容。
  • 关键属性
  • content: 文本回复。
  • tool_calls:(v1.0 重点)如果模型决定调用工具,这里会包含工具名称和参数。

2.4 ToolMessage (工具反馈)

  • 作用:Agent 模式下的核心,用于将函数/工具执行的结果回传给模型。
  • 约束:必须包含tool_call_id,以对应上一条AIMessage中的调用请求。

2.5 Developer 角色 (OpenAI 新特性)

  • 作用:OpenAI 在 o1/o3 系列模型中引入的角色,用于区分“工程约束”与“系统设定”。
  • LangChain 支持:虽然目前主要用于特定模型,但 LangChain 已在底层做了映射支持。

代码示例:基础消息构造

from langchain_core.messages import ( SystemMessage, HumanMessage, AIMessage, ToolMessage)# 1. 系统设定sys_msg = SystemMessage(content="你是一个专业的 Python 代码助手。")# 2. 用户提问human_msg = HumanMessage(content="帮我写一个计算斐波那契数列的函数。")# 3. 模型回复(模拟历史)ai_msg = AIMessage(content="好的,这是代码...", tool_calls=[])# 4. 工具调用结果(模拟 Agent 场景)# 注意:tool_call_id 必须与 AI Message 中的 id 对应tool_msg = ToolMessage( tool_call_id="call_AbCd12345", content="Execution success: Result = 55")messages = [sys_msg, human_msg, ai_msg, tool_msg]print(messages)
  1. 实战构建:ChatPromptTemplate 与消息编排

在实际工程中,我们很少手动编辑或拼接列表,而是使用模板引擎。

3.1 使用 ChatPromptTemplate

这是 LangChain 中最标准的构建方式。它允许我们预埋变量和历史记录占位符。

3.2 MessagesPlaceholder 的妙用

在处理对话历史(Chat History)时,我们无法预知历史有多少条。MessagesPlaceholder允许我们在 Prompt 中“挖一个坑”,运行时动态填充。

代码示例:构建带有记忆的 Prompt

from langchain_core.prompts import ChatPromptTemplate, MessagesPlaceholder# 定义模板结构prompt_template = ChatPromptTemplate.from_messages([ # 1. 系统指令:始终置顶 ("system", "你是一个乐于助人的 AI 助手,你的名字叫 {name}。"), # 2. 历史记录占位符:运行时动态插入 list[BaseMessage] MessagesPlaceholder(variable_name="chat_history"), # 3. 用户当前输入 ("human", "{input}")])# 模拟一些历史对话history = [ HumanMessage(content="你好,我叫小明。"), AIMessage(content="你好小明!有什么我可以帮你的吗?")]# 格式化生成最终的消息列表final_messages = prompt_template.invoke({ "name": "Jarvis", "chat_history": history, "input": "我刚才告诉你我叫什么名字?"})# 查看生成的列表长度print(f"Total messages: {len(final_messages.to_messages())}")
  1. 进阶技巧:Context Window 管理 (Trimming)

这是 LangChain v1.0 的技术重点。随着对话轮数增加,消息列表很容易通过 Token 上限。我们需要一种机制来“修剪”消息,同时保留核心指令。

4.1 trim_messages:智能修剪

trim_messages提供了开箱即用的策略,可以按 Token 数量修剪,同时通过include_system=True确保系统指令不被误删。

代码示例:防止 Token 超限

from langchain_core.messages import trim_messages, SystemMessage, HumanMessage, AIMessage# 构造一个超长的对话历史messages = [SystemMessage(content="核心规则:不要撒谎。")] + \ [HumanMessage(content=f"这是第 {i} 句废话") for i in range(100)] + \ [AIMessage(content=f"这是第 {i} 句回复") for i in range(100)]# 使用 trim_messages 进行修剪trimmed_messages = trim_messages( messages, max_tokens=50, # 限制最大 token 数 strategy="last", # 保留最新的消息 token_counter=len, # 这里为了演示简单用 len,实际应使用模型的 tokenizer include_system=True, # 【关键】强制保留 SystemMessage,防止人设崩塌 allow_partial=False, # 不允许截断单条消息 start_on="human" # 确保对话从 Human 开始(避免 AI 自言自语))print(f"原始消息数: {len(messages)}")print(f"修剪后消息数: {len(trimmed_messages)}")# 输出结果会发现,SystemMessage 依然在,且紧接着是最新的几轮对话
  1. 最佳实践:执行顺序与优先级机制

理解 LLM 如何“阅读”这些消息至关重要。模型通过顺序解析来建立上下文依赖。

5.1 消息堆叠的“潜规则”

模型永远会参考全部 messages 才得出最终输出,但它们的权重和作用域不同:

顺序Role核心逻辑
1System最高优先级。奠定基调,任何后续消息原则上不应违背此处的约束。
2Developer工程约束层。常用于通过 API 强制注入的安全策略。
3Chat History(Human/AI 交替) 提供少样本学习(Few-Shot)或上下文记忆。
4Human (Current)用户当前的意图。模型主要针对此条目进行响应。
5Tool/AI(仅 Agent 场景) 用于补充最新的外部数据。

5.2 常见坑点与调试

  1. System Message 放错位置:如果在 User Message 之后插入 System Message,部分模型会感到困惑,导致指令遵循能力下降。

  2. ToolMessage 孤立ToolMessage必须紧跟在发起调用的AIMessage之后,否则模型会报错 “Unexpected tool output”。

  3. 上下文污染:未及时清理过期的 Tool output,导致 Prompt 包含大量无用的 JSON 数据,浪费 Token。

  4. 总结


LangChain v1.0 的messages体系不再是简单的文本容器,它是连接人类意图与机器推理的桥梁。

  • SystemMessage给了模型“灵魂”;
  • MessagesPlaceholder给了模型“记忆”;
  • ToolMessage给了模型“手眼”;
  • Trim/Filter给了开发者“控制权”。

掌握消息列表的构建与管理,是开发高可用 LLM 应用的第一步,也是最关键的一步。

​最后

我在一线科技企业深耕十二载,见证过太多因技术卡位而跃迁的案例。那些率先拥抱 AI 的同事,早已在效率与薪资上形成代际优势,我意识到有很多经验和知识值得分享给大家,也可以通过我们的能力和经验解答大家在大模型的学习中的很多困惑。

我整理出这套 AI 大模型突围资料包:

  • ✅AI大模型学习路线图
  • ✅Agent行业报告
  • ✅100集大模型视频教程
  • ✅大模型书籍PDF
  • ✅DeepSeek教程
  • ✅AI产品经理入门资料

完整的大模型学习和面试资料已经上传带到CSDN的官方了,有需要的朋友可以扫描下方二维码免费领取【保证100%免费】👇👇
​​

为什么说现在普通人就业/升职加薪的首选是AI大模型?

人工智能技术的爆发式增长,正以不可逆转之势重塑就业市场版图。从DeepSeek等国产大模型引发的科技圈热议,到全国两会关于AI产业发展的政策聚焦,再到招聘会上排起的长队,AI的热度已从技术领域渗透到就业市场的每一个角落。


智联招聘的最新数据给出了最直观的印证:2025年2月,AI领域求职人数同比增幅突破200%,远超其他行业平均水平;整个人工智能行业的求职增速达到33.4%,位居各行业榜首,其中人工智能工程师岗位的求职热度更是飙升69.6%。

AI产业的快速扩张,也让人才供需矛盾愈发突出。麦肯锡报告明确预测,到2030年中国AI专业人才需求将达600万人,人才缺口可能高达400万人,这一缺口不仅存在于核心技术领域,更蔓延至产业应用的各个环节。

​​

资料包有什么?

①从入门到精通的全套视频教程⑤⑥

包含提示词工程、RAG、Agent等技术点

② AI大模型学习路线图(还有视频解说)

全过程AI大模型学习路线

③学习电子书籍和技术文档

市面上的大模型书籍确实太多了,这些是我精选出来的

④各大厂大模型面试题目详解

⑤ 这些资料真的有用吗?

这份资料由我和鲁为民博士共同整理,鲁为民博士先后获得了北京清华大学学士和美国加州理工学院博士学位,在包括IEEE Transactions等学术期刊和诸多国际会议上发表了超过50篇学术论文、取得了多项美国和中国发明专利,同时还斩获了吴文俊人工智能科学技术奖。目前我正在和鲁博士共同进行人工智能的研究。

所有的视频教程由智泊AI老师录制,且资料与智泊AI共享,相互补充。这份学习大礼包应该算是现在最全面的大模型学习资料了。

资料内容涵盖了从入门到进阶的各类视频教程和实战项目,无论你是小白还是有些技术基础的,这份资料都绝对能帮助你提升薪资待遇,转行大模型岗位。


智泊AI始终秉持着“让每个人平等享受到优质教育资源”的育人理念‌,通过动态追踪大模型开发、数据标注伦理等前沿技术趋势‌,构建起"前沿课程+智能实训+精准就业"的高效培养体系。

课堂上不光教理论,还带着学员做了十多个真实项目。学员要亲自上手搞数据清洗、模型调优这些硬核操作,把课本知识变成真本事‌!

​​​​

如果说你是以下人群中的其中一类,都可以来智泊AI学习人工智能,找到高薪工作,一次小小的“投资”换来的是终身受益!

应届毕业生‌:无工作经验但想要系统学习AI大模型技术,期待通过实战项目掌握核心技术。

零基础转型‌:非技术背景但关注AI应用场景,计划通过低代码工具实现“AI+行业”跨界‌。

业务赋能 ‌突破瓶颈:传统开发者(Java/前端等)学习Transformer架构与LangChain框架,向AI全栈工程师转型‌。

👉获取方式:

😝有需要的小伙伴,可以保存图片到wx扫描二v码免费领取【保证100%免费】🆓**

版权声明: 本文来自互联网用户投稿,该文观点仅代表作者本人,不代表本站立场。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如若内容造成侵权/违法违规/事实不符,请联系邮箱:809451989@qq.com进行投诉反馈,一经查实,立即删除!
网站建设 2026/3/25 4:44:43

5款AI写论文工具大揭秘:宏智树AI凭何成为毕业季“定海神针”?

毕业季的图书馆里,键盘声与叹息声此起彼伏。面对堆积如山的文献和空白的文档,无数学生陷入“选题卡壳、文献混乱、逻辑断裂”的困境。当AI写作工具成为救命稻草,如何选择一款真正专业、合规、高效的工具?本文深度测评5款主流AI论文…

作者头像 李华
网站建设 2026/3/28 7:36:45

力扣98 验证二叉搜索树 java实现

98. 验证二叉搜索树给你一个二叉树的根节点 root ,判断其是否是一个有效的二叉搜索树。有效 二叉搜索树定义如下:节点的左子树只包含 严格小于 当前节点的数。节点的右子树只包含 严格大于 当前节点的数。所有左子树和右子树自身必须也是二叉搜索树。示例…

作者头像 李华
网站建设 2026/3/26 23:35:56

WPF个人文档(一)—— 基础语法组件篇

一、XAML基础语法1.xaml语言简介XAML 是一种声明性标记语言,应用于 .NET 编程模型时,XAML 简化了为 .NET 应用创建 UI以文本形式表示时,XAML 文件是通常具有扩展名的 .xaml 文件可通过任何XML 编码进行编码,但编码通常为UTF-8格式…

作者头像 李华
网站建设 2026/3/26 6:10:00

【必藏干货】Java程序员无缝转AI大模型:优势深挖+0基础落地指南

当Java遇上AI大模型,是技术跨界的双赢还是转型的冒险?作为深耕后端的Java开发者,你是否困惑于“多年经验能否复用”“零AI基础该从何入手”?这篇专为Java人定制的收藏级攻略,从行业趋势到代码实操全拆解,让…

作者头像 李华