SOURCE
AI领域原始文档:LangChain消息对象说明 摘要
文档概览
本次整理的文档完整覆盖7个核心板块:
- 消息对象基本定义
- 4种基础消息类型说明
- 3种消息模板类型说明
- 消息对象核心属性说明
- 消息对象核心作用说明
- 代码使用示例
- MessagePlaceholder特殊组件补充说明
文档包含可直接复用的代码片段、场景说明等开发素材,可直接用于LangChain对话类应用的开发参考。
关键事实
基本定义
消息对象是LangChain框架中用来表示不同角色(系统、用户、助手等)发送的消息的Python对象,是LangChain消息对象体系的基础组成单元,为ChatModel组件的核心交互载体。
4种基础消息类型
- SystemMessage:代表系统指令/背景信息,用于设置对话上下文、给模型指定角色或规则,示例:
SystemMessage(content="你是一个乐于助人的助手") - HumanMessage:代表用户输入的消息,承载用户的问题或指令,示例:
HumanMessage(content="如何使用Python处理JSON数据?") - AIMessage:代表AI助手的回复,承载大模型生成的响应内容,示例:
AIMessage(content="要处理JSON数据,你可以使用Python的json模块...") - ChatMessage:通用消息类型,支持自定义任意角色,示例:
ChatMessage(role="critic", content="这个方案有以下问题...")
3种消息模板类型
为参数化动态生成消息的工具,分别对应三类基础消息:
- HumanMessagePromptTemplate:用于生成动态参数的用户消息
- SystemMessagePromptTemplate:用于生成动态参数的系统消息
- AIMessagePromptTemplate:用于生成动态参数的AI消息,使用频率较低(AI回复通常为生成式而非模板化)
核心属性
所有消息对象通用4个核心属性:
content:消息文本内容role/type:消息角色/类型,取值包括system、user、assistant等additional_kwargs:附加关键字参数,可存储自定义元数据response_metadata:响应相关元数据
核心作用
- 结构化对话:帮助组织和管理与语言模型的对话流程
- 角色区分:明确区分不同角色的消息,使模型能更好地理解上下文
- 模板化:通过模板对象,可以创建可重用的消息模板
- 元数据管理:存储和传递与消息相关的额外信息
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)
边界说明
- AIMessagePromptTemplate仅适用于需要固定AI回复格式的特殊场景,普通对话场景无需使用
- ChatMessage的
role参数取值不受限制,可根据业务需求自定义角色名称 - MessagePlaceholder仅支持传入消息列表类型的变量,不可传入普通文本参数
相关条目
- LangChain
- LangChain消息对象体系
- ChatModel
- LangChain表达式语言(LCEL)