目录
LangChain 支持现在市面上大部分常见的大语言模型(LLM),并且提供了各个模型的对应依赖库。
早期版本初始化模型
python
# 引入对应模型提供商的类,然后创建对象选择合适的模型
from langchain_openai import ChatOpenAI
model = ChatOpenAI(model="gpt-5.2")
随着Agent越来越复杂,有可能在一个 Agent 中同时调用多个不同的模型,在之间进行切换的场景,如果用老的方式,就需要导入不同模型对应的类,然后创建多个模型的对象
LangChain v1.0 后,引用了新的调用方式 init_chat_model,不需要导入,只需要指定模型名称就行了,LangChain会根据模型名称自动去推断使用的哪个模型提供商 (Model Provider) 自动化调用的方式,仅限官网列出来的模型
LangChain 支持的模型列表参考官网链接:
https://docs.langchain.com/oss/python/integrations/providers/overview
模型初始化
基于名称推断模型提供商
python
from langchain.chat_models import init_chat_model
model = init_chat_model(model="gpt-5.2")
引入依赖
# 具体模型见:https://docs.langchain.com/oss/python/integrations/providers/overview
uv add langchain langchain-deepseek
配置环境
.env
DEEPSEEK_API_KEY=sk-xxx
# 1. 加载环境变更
from dotenv import load_dotenv
load_dotenv()
初始化模型
python
# 导入 Langchain 的初始化模型的函数
from langchain.chat_models import init_chat_model
# 调用 init_chat_model 函数初始化模型
# 参数 model 用来指定模型名称, Langchain 会根据模型名字自动设定 base_url, 并从环境变更中获取api_key
model = init_chat_model(model = "deepseek-chat")
print(type(model))
# <class 'langchain_deepseek.chat_models.ChatDeepSeek'>
自定义模型提供商
init_chat_model 默认会根据模型名称自动确定模型提供者的 base_url,并从 env读取api_key,但前提是必须是 langchain支持的模型平台,
对于其它模型,必须自定义模型参数来访问。例如,访问阿里云百炼模型。
- 在环境变量中定义 api_key 和 base_url
- 在
init_chat_model中指定 model、model_provider、base_url和api_key
配置环境

.env
DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
DASHSCOPE_API_KEY=sk-1dd415eXXXXX
# 1. 加载环境变更
from dotenv import load_dotenv
load_dotenv()
import os
base_url = os.getenv("DASHSCOPE_BASE_URL")
api_key = os.getenv("DASHSCOPE_API_KEY")
model = init_chat_model(
model = "qwen3.6-plus",
model_provider="openai", # 指定模型提供者(阿里兼容 openai)
base_url = base_url,
api_key = api_key
)
print(type(model))
# <class 'langchain_openai.chat_models.base.ChatOpenAI'>
调整模型参数
除了修改模型提供者以外,init_chat_model 函数允许我们调整模型参数,例如:
- temperature:控制生成文本的随机性,值越小越确定,值越大越随机
- max_tokens:控制生成文本的最大长度
- top_p:控制生成文本的多样性,值越小越多样,值越大越确定
- timeout:控制生成文本的超时时间
- maxretries:控制生成文本的最大重试次数
python
model = init_chat_model(
model = "qwen3.6-plus",
model_provider="openai", # 指定模型提供者(阿里兼容 openai)
base_url = base_url,
api_key = api_key,
temperature = 1.5,
top_p = 0.9,
)
使用 model 类
在 LangChain 社区,除了官方提供的 Model(可通过 init_chat_model 创建),还有些类是社区提供的,具体模型地址,见官网:https://docs.langchain.com/oss/python/integrations/chat
引入依赖
# 安装社区依赖
uv add langchain-community
# 阿里云百炼依赖
uv add dashscope
初始化模型
python
from langchain_community.chat_models.tongyi import ChatTongyi
# 使用 Model 类初始化模型
model = ChatTongyi(
model="qwen-plus", # 此处以qwen-plus为例,您可按需更换模型名称。模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
# other params...
)
print(type(model))
模型调用
invoke
invoke 阻塞式调用,需要等待较长时间才能看到AI返回的结果
python
# 通过 invoke 函数访问模型,需要阻塞等待模型生成结果
response = model.invoke("你是谁?")
# 查看响应内容
print(response)
content='我是 Qwen(通义千问),由阿里巴巴集团旗下通义实验室自主研发的大语言模型。有什么我可以帮你的吗?' additional_kwargs={'refusal': None} response_metadata={'token_usage': {'completion_tokens': 320, 'prompt_tokens': 12, 'total_tokens': 332, 'completion_tokens_details': {'accepted_prediction_tokens': None, 'audio_tokens': None, 'reasoning_tokens': 289, 'rejected_prediction_tokens': None, 'text_tokens': 320}, 'prompt_tokens_details': {'audio_tokens': None, 'cached_tokens': None, 'text_tokens': 12}}, 'model_provider': 'openai', 'model_name': 'qwen3.6-plus', 'system_fingerprint': None, 'id': 'chatcmpl-0c7fb416-1262-9397-94b3-442189459371', 'finish_reason': 'stop', 'logprobs': None} id='lc_run--019e91b1-dc91-7890-b4a6-a9aa208d6f08-0' tool_calls=[] invalid_tool_calls=[] usage_metadata={'input_tokens': 12, 'output_tokens': 320, 'total_tokens': 332, 'input_token_details': {}, 'output_token_details': {'reasoning': 289}}
stream
stream则是流式调用,可以实时看到AI返回的一个词
response = model.stream("你是谁?")
for r in response:
print(r.content, end="",flush=True)
你好!我是 Qwen(通义千问),由阿里巴巴集团旗下通义实验室自主研发的大语言模型。很高兴为你服务,请问有什么我可以帮你的吗?
智能体
创建智能体
Langchain 提供了一个 create_agent 函数用来快速创建智能体,有两种选择
- 使用初始化好的模型对象
- 使用模型名称,让 Langchain 自动初始化模型
python
from langchain.agents import create_agent
# 使用前面初始化好的 model
agent = create_agent(model = model)
# 指定 Model 名称,和 init_chat_model 一样需要 Langchain 官方支持的模型
agent = create_agent(model = "deepseek-chat")
调用智能体
智能体调用与模型调用类似,
- invoke:阻塞式调用
- stream: 流式访问
但要注意的是,智能体调用需要传入一个dict,其中必须包含一个 messages 字段,也就是消息的列表。
invoke
python
response = agent.invoke(
{"messages":[{"role":"user","content":"你是谁?"}]}
)
print(response)
stream
python
messages = agent.stream(
{"messages":[{"role":"user","content":"你是谁?"}]},
stream_mode="messages"
)
for token,metadata in messages:
if token.content:
print(token.content, end="",flush=True)
完整代码
pyproject.toml
[project]
name = "vip-langchain"
version = "0.1.0"
description = "Add your description here"
readme = "README.md"
requires-python = ">=3.12"
dependencies = [
"langchain>=1.3.4",
"langchain-deepseek>=1.0.1",
"notebook>=7.5.6",
"python-dotenv>=1.2.2",
]
[[tool.uv.index]]
url = "https://pypi.tuna.tsinghua.edu.cn/simple"
default = true
# 导入 Langchain 的初始化模型的函数
from langchain.agents import create_agent
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os
# 加载环境变量
load_dotenv()
# 获取环境变更值
base_url = os.getenv("DASHSCOPE_BASE_URL")
api_key = os.getenv("DASHSCOPE_API_KEY")
print("初始化模型")
# 初始化模型
model = init_chat_model(
model = "qwen3.6-plus",
model_provider="openai", # 指定模型提供者(阿里兼容 openai)
base_url = base_url,
api_key = api_key,
temperature = 1.5,
top_p = 0.9,
)
print("调用模型")
# 调用模型
response = model.stream("你是谁?")
for r in response:
print(r.content, end="",flush=True)
print("创建智能体")
# 使用前面初始化好的 model
agent = create_agent(model = model)
# 指定 Model 名称,和 init_chat_model 一样需要 Langchain 官方支持的模型
# agent = create_agent(model = "deepseek-chat")
print("调用智能体")
messages = agent.stream(
{"messages":[{"role":"user","content":"你是谁?"}]},
stream_mode="messages"
)
for token,metadata in messages:
if token.content:
print(token.content, end="",flush=True)