W
AI-Wiki
SOURCE

AI领域原始文档:LangChain消息对象说明 摘要

文档概览

本次整理的文档完整覆盖7个核心板块:

  1. 消息对象基本定义
  2. 4种基础消息类型说明
  3. 3种消息模板类型说明
  4. 消息对象核心属性说明
  5. 消息对象核心作用说明
  6. 代码使用示例
  7. MessagePlaceholder特殊组件补充说明

文档包含可直接复用的代码片段、场景说明等开发素材,可直接用于LangChain对话类应用的开发参考。

关键事实

基本定义

消息对象是LangChain框架中用来表示不同角色(系统、用户、助手等)发送的消息的Python对象,是LangChain消息对象体系的基础组成单元,为ChatModel组件的核心交互载体。

4种基础消息类型

  1. SystemMessage:代表系统指令/背景信息,用于设置对话上下文、给模型指定角色或规则,示例:SystemMessage(content="你是一个乐于助人的助手")
  2. HumanMessage:代表用户输入的消息,承载用户的问题或指令,示例:HumanMessage(content="如何使用Python处理JSON数据?")
  3. AIMessage:代表AI助手的回复,承载大模型生成的响应内容,示例:AIMessage(content="要处理JSON数据,你可以使用Python的json模块...")
  4. ChatMessage:通用消息类型,支持自定义任意角色,示例:ChatMessage(role="critic", content="这个方案有以下问题...")

3种消息模板类型

为参数化动态生成消息的工具,分别对应三类基础消息:

  1. HumanMessagePromptTemplate:用于生成动态参数的用户消息
  2. SystemMessagePromptTemplate:用于生成动态参数的系统消息
  3. AIMessagePromptTemplate:用于生成动态参数的AI消息,使用频率较低(AI回复通常为生成式而非模板化)

核心属性

所有消息对象通用4个核心属性:

  1. content:消息文本内容
  2. role/type:消息角色/类型,取值包括system、user、assistant等
  3. additional_kwargs:附加关键字参数,可存储自定义元数据
  4. response_metadata:响应相关元数据

核心作用

  1. 结构化对话:帮助组织和管理与语言模型的对话流程
  2. 角色区分:明确区分不同角色的消息,使模型能更好地理解上下文
  3. 模板化:通过模板对象,可以创建可重用的消息模板
  4. 元数据管理:存储和传递与消息相关的额外信息

MessagePlaceholder特殊组件

LangChain中专门用于预留消息列表插入位的特殊组件,可将动态生成的消息列表以带角色的形式直接插入到对话模板中,适配多轮对话上下文动态拼接场景。

重要细节

代码使用示例

可直接复用的消息对象创建与调用代码如下:

from langchain_core.messages import SystemMessage, HumanMessage, AIMessage

# 创建消息对象
system_msg = SystemMessage(content="你是一个Python编程专家")
human_msg = HumanMessage(content="如何在Python中读取CSV文件?")
ai_msg = AIMessage(content="你可以使用pandas库来读取CSV文件...")

# 将消息对象组合成对话历史
conversation = [system_msg, human_msg, ai_msg]

# 将对话历史传递给语言模型
response = llm.invoke(conversation)

边界说明

  1. AIMessagePromptTemplate仅适用于需要固定AI回复格式的特殊场景,普通对话场景无需使用
  2. ChatMessage的role参数取值不受限制,可根据业务需求自定义角色名称
  3. MessagePlaceholder仅支持传入消息列表类型的变量,不可传入普通文本参数

相关条目

  • LangChain
  • LangChain消息对象体系
  • ChatModel
  • LangChain表达式语言(LCEL)