基本用法
使用消息最简单的方式是创建消息对象并在调用时将它们传递给模型。文本提示词
文本提示词是字符串——适用于不需要保留对话历史的简单生成任务。- 你有一个单独的、独立的请求
- 你不需要对话历史
- 你想要最少的代码复杂性
消息提示词
或者,你可以通过提供消息对象列表来向模型传递消息列表。- 管理多轮对话
- 处理多模态内容(图像、音频、文件)
- 包含系统指令
字典格式
你也可以直接使用 OpenAI chat completions 格式指定消息。消息类型
系统消息
SystemMessage 代表一组初始指令,用于预设模型的行为。你可以使用系统消息来设定语气、定义模型的角色,并建立响应的准则。
基本指令
详细角色设定
人类消息
HumanMessage 代表用户输入和交互。它们可以包含文本、图像、音频、文件以及任何数量的多模态内容。
文本内容
消息元数据
添加元数据
name 字段的行为因提供商而异——有些用它来识别用户,有些则忽略它。要查看详情,请参阅模型提供商的参考文档。AI 消息
AIMessage 代表模型调用的输出。它们可以包含多模态数据、工具调用和你可以随后访问的提供商特定元数据。
AIMessage 对象在调用模型时返回,其中包含响应中所有关联的元数据。
提供商对消息类型的权重/上下文化方式不同,这意味着有时手动创建一个新的 AIMessage 对象并将其插入消息历史中(就像它来自模型一样)是有帮助的。
属性
属性
工具调用
当模型发起工具调用时,它们包含在AIMessage 中:
Token 使用情况
AIMessage 可以在其 usage_metadata 字段中保存 Token 计数和其他使用元数据:
UsageMetadata。
流式输出和块
在流式输出期间,你会收到AIMessageChunk 对象,它们可以组合成完整的消息对象:
工具消息
对于支持工具调用的模型,AI 消息可以包含工具调用。工具消息用于将单个工具执行的结果传回给模型。 工具可以直接生成ToolMessage 对象。以下展示一个简单示例。更多内容请阅读工具指南。
属性
属性
消息内容
你可以将消息的内容视为发送给模型的数据载荷。消息有一个content 属性,它是松散类型的,支持字符串和无类型对象列表(例如字典)。这允许在 LangChain 聊天模型中直接支持提供商原生结构,如多模态内容和其他数据。
另外,LangChain 为文本、推理、引用、多模态数据、服务器端工具调用和其他消息内容提供了专用的内容类型。参见下面的内容块。
LangChain 聊天模型在 content 属性中接受消息内容。
它可以包含以下之一:
- 字符串
- 提供商原生格式的内容块列表
- LangChain 标准内容块列表
标准内容块
LangChain 提供了一种跨提供商工作的消息内容标准表示。 消息对象实现了一个content_blocks 属性,它会惰性解析 content 属性为标准的、类型安全的表示。例如,从 ChatAnthropic 或 ChatOpenAI 生成的消息将包含各自提供商格式的 thinking 或 reasoning 块,但可以被惰性解析为一致的 ReasoningContentBlock 表示:
- Anthropic
- OpenAI
序列化标准内容如果 LangChain 之外的应用程序需要访问标准内容块表示,你可以选择将内容块存储在消息内容中。为此,你可以将
LC_OUTPUT_VERSION 环境变量设置为 v1。或者,使用 output_version="v1" 初始化任何聊天模型:多模态
多模态指的是处理不同形式数据的能力,如文本、音频、图像和视频。LangChain 包含这些数据的标准类型,可以跨提供商使用。 聊天模型可以接受多模态数据作为输入并将其作为输出生成。以下展示了包含多模态数据的输入消息的简短示例。额外的键可以在内容块的顶层包含,也可以嵌套在
"extras": {"key": value} 中。OpenAI 和 AWS Bedrock Converse 等提供商需要 PDF 的文件名。有关具体信息,请参阅你选择的模型的提供商页面。内容块参考
内容块表示为(创建消息时或访问content_blocks 属性时的)类型化字典列表。列表中的每个项目必须符合以下块类型之一:
核心
核心
多模态
多模态
ImageContentBlock
ImageContentBlock
AudioContentBlock
AudioContentBlock
VideoContentBlock
VideoContentBlock
FileContentBlock
FileContentBlock
工具调用
工具调用
ToolCall
ToolCall
ToolCallChunk
ToolCallChunk
服务器端工具执行
服务器端工具执行
ServerToolCall
ServerToolCall
ServerToolCallChunk
ServerToolCallChunk
内容块作为消息的新属性在 LangChain v1 中引入,用于标准化跨提供商的内容格式,同时保持与现有代码的向后兼容性。内容块不是
content 属性的替代品,而是一个可用于以标准化格式访问消息内容的新属性。与聊天模型一起使用
聊天模型接受消息对象序列作为输入,并返回AIMessage 作为输出。交互通常是无状态的,因此简单的对话循环涉及使用不断增长的消息列表来调用模型。
参阅以下指南了解更多:
- 持久化和管理对话历史的内置功能
- 管理上下文窗口的策略,包括修剪和摘要消息
连接这些文档到 Claude、VSCode 等工具,通过 MCP 获取实时答案。

