简介
Chat Models 是基于大型语言模型(LLM)的高级交互模式。与传统的文本生成不同,Chat Models 的输入和输出均遵循格式化的聊天消息结构(Chat Messages),这使得它更适合处理多轮对话、角色扮演及复杂的指令遵循任务。
本文将详细介绍如何在 LangChain 框架中使用 Chat Models,涵盖基础用法、高级特性及最佳实践。
支持的模型
LangChain 对 Chat Models 的支持随着版本迭代在不断丰富。目前主要支持的模型包括:
ChatAnthropicAzureChatOpenAIChatVertexAIJinaChatChatOpenAIPromptLayerChatOpenAI
需要注意的是,部分底层模型可能不支持原生 Chat 接口,且 LangChain 生态仍在发展中,某些模型可能需要额外适配。
消息类型详解
LangChain 将聊天消息分为以下几种核心类型,每种类型对应不同的角色:
- HumanMessage: 代表用户输入的消息。
- AIMessage: 代表大语言模型生成的回复。
- SystemMessage: 用于设定系统指令或角色扮演的背景信息。
- ChatMessage: 允许自定义类型的消息,适用于特殊场景。
在使用时,只需将这些消息对象按顺序传入即可。
基础调用示例
以下是使用 ChatOpenAI 进行单次调用的标准示例:
from langchain.chat_models import ChatOpenAI
from langchain.schema import SystemMessage, HumanMessage
# 初始化模型
chat = ChatOpenAI()
# 构建消息列表
messages = [
SystemMessage(content="你是一个小说家"),
HumanMessage(content="帮我写篇小说")
]
# 执行调用
response = chat(messages)
print(response.content)
批量处理
与 LLM 类似,Chat Models 也支持批量处理模式,可以一次性发送多个请求以提高效率:
batch_messages = [
[
SystemMessage(content="你是一个小说家"),
HumanMessage(content="帮我写篇小说")
],
[
SystemMessage(content="你是一个诗人"),
HumanMessage(content="帮我写首诗")
],
]
result = chat.generate(batch_messages)
for item in result.generations:
print(item[].text)


