LangChain聊天模型详解

概述
聊天模型是使用消息序列作为输入并返回聊天消息作为输出的语言模型(与使用纯文本的传统模型相对)。这些通常是较新的模型(较旧的模型通常是LLM)。聊天模型支持为对话消息分配不同的角色,有助于区分来自AI、用户和系统消息等指令的消息。
虽然底层模型是消息输入、消息输出,但LangChain包装器也允许这些模型接受字符串作为输入。这意味着您可以轻松地使用聊天模型来替代LLM。
当传入字符串作为输入时,它会被转换为HumanMessage,然后传递给底层模型。
核心功能
1. 消息处理 💬
- 支持多种消息类型(用户、助手、系统、工具消息)
- 自动处理消息格式转换
- 保持对话上下文和历史
2. 工具调用 🔧
- 支持函数/工具调用功能
- 结构化输出生成
- 与外部API和服务集成
3. 多模态支持 🎨
- 处理文本、图像、音频等多种数据类型
- 跨模态理解和生成
- 丰富的交互体验
4. 流式响应 ⚡
- 实时流式输出
- 降低响应延迟
- 改善用户体验
集成支持
LangChain支持众多聊天模型提供商的集成,包括:
- OpenAI - GPT系列模型
- Anthropic - Claude系列模型
- Google - Gemini和PaLM模型
- AWS - Bedrock平台模型
- Azure - Azure OpenAI服务
- Cohere - Command系列模型
- Hugging Face - 开源模型
- Ollama - 本地部署模型
更多集成信息请参考聊天模型集成文档。
接口规范
核心方法
所有聊天模型都实现了标准的Runnable接口,提供以下核心方法:
1. invoke() - 单次调用
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-3.5-turbo")
response = model.invoke("你好,世界!")
print(response.content)
2. batch() - 批量处理
messages_list = [
"翻译这句话:Hello",
"解释量子计算",
"写一首关于春天的诗"
]
responses = model.batch(messages_list)
for response in responses:
print(response.content)
3. stream() - 流式输出
for chunk in model.stream("请详细解释人工智能"):
print(chunk.content, end="", flush=True)
4. astream() - 异步流式输出
import asyncio
async def async_stream_example():
async for chunk in model.astream("解释机器学习"):
print(chunk.content, end="", flush=True)
asyncio.run(async_stream_example())
输入和输出
输入类型
聊天模型可以接受以下输入类型:
- 字符串 - 自动转换为HumanMessage
- 消息列表 - 包含不同角色的消息序列
- PromptValue - 来自提示模板的结构化输入
输出类型
聊天模型返回:
- AIMessage - 包含模型响应的消息对象
- 工具调用 - 当模型决定调用工具时
- 结构化数据 - 使用结构化输出功能时
标准参数
LangChain为聊天模型定义了一组标准参数,以提供一致的接口:
| 参数 | 描述 | 示例值 |
|---|---|---|
model |
要使用的特定AI模型的名称或标识符 | “gpt-3.5-turbo”, “gpt-4” |
temperature |
控制模型输出的随机性。较高值(如1.0)使响应更有创意,较低值(如0.0)使其更确定和专注 | 0.0-1.0 |
timeout |
等待模型响应的最大时间(秒),超时后取消请求 | 30, 60 |
max_tokens |
限制响应中的总令牌数(单词和标点符号),控制输出长度 | 100, 1000 |
stop |
指定停止序列,指示模型何时应停止生成令牌 | [“\n”, “END”] |
max_retries |
由于网络超时或速率限制等问题导致请求失败时,系统重新发送请求的最大尝试次数 | 3, 5 |
api_key |
与模型提供商进行身份验证所需的API密钥 | “sk-…” |
base_url |
发送请求的API端点URL | “https://api.openai.com/v1” |
rate_limiter |

最低0.47元/天 解锁文章

4690

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



