LangChain 消息概念指南

文章目录
概述
消息是聊天模型的输入和输出。LangChain有一些内置的消息类型,以及一个基础的BaseMessage类,您可以从中子类化以创建自己的自定义消息类型。
消息内部包含什么?
角色(Role)
每个消息都与一个角色相关联。LangChain有不同的消息类型,每个都与不同的角色相关联:
HumanMessage: 来自人类/用户的消息AIMessage: 来自AI/助手的消息SystemMessage: 系统消息,用于指导AI的行为ToolMessage: 工具调用结果的消息RemoveMessage: 用于从对话中删除消息的特殊消息类型
内容(Content)
每个消息都有一个content字段。这通常是一个字符串,但对于某些消息类型和模型,它可以是一个字典列表(例如,当向多模态模型传递图像时)。
其他消息数据
消息可以有任意的其他数据。在LangChain中,我们有一些标准化的字段(如tool_calls和usage_metadata),但您也可以向消息添加任意字段,这些字段将传递给底层的聊天模型。
对话结构
聊天模型将消息列表作为输入,并返回一个消息作为输出。虽然每个消息都与一个角色相关联,但不同的模型对角色有不同的要求。一些模型相当灵活,而另一些则对允许的消息序列有严格的要求。
当使用聊天模型时,了解该特定模型的消息要求是很有用的。
LangChain 消息类型
SystemMessage(系统消息)
SystemMessage用于向模型提供指令、指导或上下文,这些内容不是对话的直接部分,而是影响模型在整个对话中的行为。
from langchain_core.messages import SystemMessage
message = SystemMessage(content="You are a helpful assistant.")
系统消息支持
不同的聊天模型提供商可能通过以下方式之一支持系统消息:
- 通过"系统"消息角色:在这种情况下,系统消息作为消息序列的一部分包含,角色明确设置为"系统"。
- 通过单独的API参数用于系统指令:系统指令不是作为消息包含,而是通过专用的API参数传递。
- 不支持系统消息:某些模型根本不支持系统消息。
大多数主要的聊天模型提供商通过聊天消息或单独的API参数支持系统指令。LangChain将根据提供商的能力自动适应。
HumanMessage(人类消息)
HumanMessage对应于**“用户”**角色。人类消息表示与模型交互的用户的输入。
文本内容
大多数聊天模型期望用户输入是文本形式。
from langchain_core.messages import HumanMessage
model.invoke

最低0.47元/天 解锁文章
2万+

被折叠的 条评论
为什么被折叠?



