LangChain:模型I/O之模型包装器

LangChain 的 模型包装器(Model Wrappers) 是 I/O 组件中负责统一不同语言模型(LLM)调用接口的核心模块,它通过标准化 API 实现了对多种模型的无缝切换和组合操作。

模型包装器

LangChain 的 模型 I/O 组件 是框架中连接大语言模型(LLM)与应用程序的核心模块,其核心功能是通过 模型包装器 统一不同模型的 API 接口,屏蔽底层差异,使开发者能够以标准化方式调用各类模型。

核心功能

功能 描述
统一接口抽象 将不同模型提供商的 API 封装为 invoke/generate/stream 等统一方法
参数标准化 处理 temperature/top_p/max_tokens 等参数的映射与兼容
异步支持 提供 ainvoke/agenerate 等异步方法
流式输出处理 支持通过 stream 方法逐块获取生成内容
多模态扩展 支持文本、图像、音频等多模态输入(需模型支持)
回调系统集成 与 LangChain 回调机制深度整合,实现日志/监控/调试

设计目标

  1. 统一接口:封装不同模型平台(如 OpenAI、Anthropic、本地部署的 Llama 等)的 API 差异,提供一致的调用方式。

    开发者无需关注底层协议(如 OpenAI 的文本补全接口与智谱清言的聊天式接口差异),仅需通过标准化类即可调用模型。

  2. 多模型支持:支持云端模型(如 GPT-4、DeepSeek-R1)、本地模型(通过 Ollama 加载)、开源社区模型(如 HuggingFace),开发者仅需调整初始化参数即可切换模型。

  3. 简化开发流程:通过PromptTemplate标准化输入、OutputParser 结构化输出,将复杂的 API 调用简化为几行代码的标准化流程。

模型包装器类型

LangChain 的模型包装器组件是基于各个模型平台的API协议进行开发的,主要提供了两种类型的包装器。

  • 基础LLM包装器,或称为通用的 LLM 模型包装器。
  • Chat模型包装器,专门针对 Chat 类型API的 Chat Model(聊天模型包装器)。

选择的模型包装器不同,获得的响应也不同。

基础LLM包装器

基础LLM包装器是专门用于与大语言模型文本补全类型API交互的组件。用于接收一个字符串作为输入,然后返回一个补全的字符串作为输出。适用于自动写作,编写代码,生成创意内容等文本类型任务。

基础LLM包装器是 LangChain 对旧大语言模型的实现,这些模型将字符串作为输入并返回字符串作为输出。这些模型的命名通常没有Chat前缀(例如Ollama、Anthropic、OpenAI等),并且可能包括LLM后缀(例如OlramaLLM、AnthropicLLM、OpenAILLM等)。这些模型实现了BaseLLM接口。官方资料:LLMS > OpenAILLMS > 文本输入输出

当前最新和最流行的OpenAI模型是聊天补全模型,用户应该几乎只使用较新的聊天模型,因为大多数模型提供商都采用了类似聊天的界面与语言模型进行交互。

注意langchain.llms 包和 langchain_openai包的OpenAi都已过时,官方不建议使用,官方说在未来1.0版本可能移除。当前LangChain已是0.3版本,推荐使用 ChatOpenAI

1
2
3
4
5
6
7
8
9
10
11
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
model_name="deepseek-chat",
api_key="xxxxxxxxxxxxxxx",
base_url="https://api.deepseek.com",
temperature=0.7,
max_tokens=500
)
response = llm.invoke("请解释下量子计算")
print(response)

重要提示:除非特殊兼容性需求,开发者应优先使用基于聊天模型接口的现代LLM实现方案。

Chat模型包装器

Chat模型包装器专为支持多轮对话的模型设计(如 GPT-4、Claude2),以结构化消息列表(SystemMessage, HumanMessageAIMessage等)作为输入输出,这个列表包含了消息角色(AI或用户)和消息内容,它们合在一起构成了一个完整的对话上下文。

Chat模型包装器是一种专门用于与大语言模型的 Chat 类型 API 交互的包装器组件,适配了模型平台的 Chat 类型 API。通常通过Chat模型接口进行访问,该接口以消息列表作为输入,并返回一条消息作为输出。

Chat模型非常适用于构建能与人进行自然语言交流的多轮对话应用,比如客服机器人、语音助手等。

官方资料:Chat models(聊天模型)All chat models(支持的聊天语言模型)

1
2
3
4
5
6
7
8
9
10
11
12
from langchain.chat_models import init_chat_model

llm = init_chat_model(
model="deepseek-chat",
model_provider="deepseek",
api_key="xxxxxxxxx",
base_url="https://api.deepseek.com",
temperature=0.7,
max_tokens=500
)
response = llm.invoke("请问现在三进制计算机在研发有最新消息吗")
print(response.content)
作者

光星

发布于

2025-04-08

更新于

2025-04-13

许可协议

评论