LangChain目前兼容了市场上主流的大模型,只要我们安装好对应的扩展包,以及配置相应模型的API Key,那么使用LangChain来与大模型进行信息传递,就会非常方便。
| 大模型服务商 | 模型名称 | 环境变量 | LangChain 扩展包 | Chat 模型类 |
|---|---|---|---|---|
| OpenAI | gpt-5-nano |
OPENAI_API_KEY |
langchain-openai |
ChatOpenAI |
| Anthropic | claude-sonnet-4-6 |
ANTHROPIC_API_KEY |
langchain-anthropic |
ChatAnthropic |
gemini-2.5-flash-lite |
GOOGLE_API_KEY |
langchain-google-genai |
ChatGoogleGenerativeAI |
在LangChain(1.2.17)中我们只要声明模型的名称,就能够获得对应的模型实例。这典型的是一个工厂方法。
python
from langchain.chat_models import init_chat_model
def print_current_model():
model_names = ['gpt-5-nano',
'openai:gpt-5.4',
'claude-sonnet-4-6',
'google_genai:gemini-2.5-flash-lite']
for model_name in model_names:
model = init_chat_model(model_name)
print(f"'{model_name}' -> {type(model).__name__}(实例)")
输出如下,可以看到,只要我们输入了模型名称,对应就会返回一个相应的ChatModel回来。
shell
'gpt-5-nano' -> ChatOpenAI(实例)
'openai:gpt-5.4' -> ChatOpenAI(实例)
'claude-sonnet-4-6' -> ChatAnthropic(实例)
'google_genai:gemini-2.5-flash-lite' -> ChatGoogleGenerativeAI(实例)
LangChain的架构
工厂方法模式
LangChain 能兼容"市场上主流的大模型"的根本原因------抽象层独立发布为 langchain-core,任何第三方只要依赖它并继承基类,就能无缝接入。

提供ChatOpenAI,ChatAnthropic,ChatGoogleGenerativeAI类的第三方包都依赖了langchain-core这个包,它们都继承了langchain-core的抽象类BaseChatModel。
使用 uv pip show langchain-core查看包详情,可以看到都被其他第三方模型的包所依赖。

内部具体根据模型名称创建对应的ChatModel如下:
- 根据模型名称找到模型提供商,langchain内部根据模型提供商维护了一个字典,字典里面有模型提供商对应的第三方模块已经实例化的ChatModel配置
- 找到模型提供商之后使用python内置模块importlib导入对应的第三方包。
- 实例化得到ChatModel.(源码中实例化用到了一个functools.partial提前绑定了cls参数)
