目录

1、模型调用的准备工作

1.1 一张老图看大模型的调用

1.2 模型初始化的分类方式

1.3 线上大模型服务平台

1.4 提前安装所有依赖

2、模型初始化角度1:使用模型提供商库

2.1 通过专用API调用

2.1.1 DeepSeek大模型

2.1.2 智谱大模型

2.1.3 千问大模型

2.2 兼容用法

2.3 中转平台( aicodemirror )

3、模型初始化角度1:init_chat_model()

3.1 使用举例

3.2 小结:模型的创建

3.3 模型初始化参数(常用版)


本章对应的官网文档出处:

英文文档:https://docs.langchain.com/oss/python/langchain/models

中文文档:https://docs.langchain.org.cn/oss/python/langchain/models

1、模型调用的准备工作

1.1 一张老图看大模型的调用

在LangChain v0.3版本中,提到了Model I/O,包括输入提示(Format)、调用模型(Predict)、输出解析 (Parse)。分别对应着 Prompt Template , Model 和 Output Parser 。

关于模型调用模块,如今对话模型已经是主要形式。从历史上解读:、

在GPT-3时代,大模型以 补全模型 为主,只能以类似“成语接龙”的方式对文本进行补全,并且实际运行 效果也 非常不稳定 。此时LangChain借助一些高层封装的API,能够让模型完成对话、调用外部工具、 甚至是结构化输出等功能,为开发者提供了极大的便利。

伴随着GPT-3.5模型的发布, 对话模型 正式登上历史的舞台,并逐渐 成为主流 。而得益于对话模型更 强的指令跟随能力,很多GPT-3需要借助LangChain才能完成的工作,已经成为GPT-3.5原生自带的一些 功能。

所以,本章只提供了对话模型的创建,而没有了非对话模型。

1.2 模型初始化的分类方式

简单来说,就是用谁家的API以什么方式创建存放在哪个位置的大模型

角度1:调用谁家的API

  • 使用模型提供商的库
  • 使用LangChain统一方式( 推荐 )

角度2:模型初始化时,几个重要参数(如BASE_URL、API-KEY)的书写位置的不同:

  • 使用配置文件( 推荐 )
  • 硬编码:写在代码文件中

角度3:调用的模型所在位置

  • 在线部署的大模型
  • 本地部署的大模型

LangChain作为一个“工具”,不提供任何 LLMs,而是依赖于第三方集成各种大模型。这里就看大 模型到底部署在哪里。

1.3 线上大模型服务平台

有许多提供大模型API服务的平台,使用时只需要注册、充值并创建API-Key,之后即可使用API-Key与 URL来调用平台提供的相应的模型的服务。

说明:每个平台配置时,都需要几个要素: 模型名 、 api-key 、 base-url 。

如果大家想使用国外的大模型,就选择前两个;如果只使用国内的大模型,可以选择后四个。

阿里云百炼:所有新用户可获得超过5000万Tokens的免费额度及4500张图片生成额度。适合toB 企业用户

硅基流动,号称9B 以下模型永久免费,开源模型价格低,适合个人学习。

此外,还有各个模型自己的厂商平台。比如deepseek、智谱等。

OpenRouter是一个第三方镜像站,专门转发大模型厂商的API服务。通过它我们可以间接调用几 乎所有大模型厂商的API服务。支持国内直连。

OpenRouter支持支付宝或微信充值,最低限额$5,税费$0.8,此外,如果调用的模型禁止在国内 使用,如ChatGPT,则无法通过OpenRouter直接调用(需要Magic),会提示This model is not available in your region,根据个人情况,决定是否充值并调用OpenRouter API。

1.4 提前安装所有依赖

课程中会涉及到多个库的安装,这里一并声明在 requirements.txt 文件 中。 同时,LangChain的版本变化较快,不同版本之间可能存在兼容问题,为了避免因版本不一致导致的问 题,本课程会通过 requirements.txt 固定主要依赖版本 。 用法:将requirements.txt存放到项目所在的目录下,执行

pip install -r .\requirements.txt

说明:课程中的部分章节会单独列出相关依赖,主要是为了帮助大家了解该章节涉及的核心库。 无需重 复安装 ,这些依赖已经统一包含在 requirements.txt 中。

2、模型初始化角度1:使用模型提供商库

在 LangChain 中初始化模型,主要可以通过直接使用特定的Model Class和使用统一的 init_chat_model函数这两种方式来实现。

这里先讲方式1,这种方式最直接。LangChain为一些大模型供应商提供了专门的Model类,导入对应的 具体类(如 ChatOpenAI、ChatAnthropic、ChatDeepSeek、ChatOllama、ChatHunyuan、 ChatTongyi、ChatZhipuAI)并进行实例化。

官网链接:https://reference.langchain.com/python/langchain-community/chat-models

2.1 通过专用API调用

注意:使用不同的模型可能传入的参数名称不同,可以参考对应的源码

2.1.1 DeepSeek大模型

官网:https://www.deepseek.com/

步骤1:安装必要的依赖(略)

执行过前面的requirements.txt文件指令的情况下,这里就不需要安装了。

#切换python环境
conda activate langchain1.2
#安装ChatOpenAI依赖包
pip install langchain-openai
#安装ChatDeepSeek 依赖包
pip install langchain-deepseek
# 用于环境管理的包
pip install python-dotenv

说明:langchain-deepseek 是使用deepseek 大模型必要依赖。

注意: langchain-deepseek 依赖于 langchain-openai ,安装前者,pip会自动从pypi拉取元数据解析 依赖,后者也会被安装。所以我们把 langchain-openai 也放在此处。

步骤2:配置.env文件(明确去deepseek官网获取key)

在项目根目录下创建.env文件,在.env文件中写入以下内容:

DEEPSEEK_API_KEY=<Your API Key>
DEEPSEEK_BASE_URL=https://api.deepseek.com

说明:将占位符替换为自己的API_KEY。

步骤3:读取配置并初始化模型

这里,我们用DeepSeek的模型进行测试,LangChain会从环境变量中读取DEEPSEEK_API_KEY。如下是 代码实现:

from langchain_deepseek import ChatDeepSeek
import os
from dotenv import load_dotenv
# 通过load_dotenv()将.env中的变量加载为环境变量
# override=True表示:无论你当前的操作系统、终端或者虚拟环境中是否已经存在同名的环境变量,
# 都会强行用 .env 文件里写的值去覆盖它

load_dotenv(override=True)
# 从环境变量读取配置
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL")

# 创建DeepSeek LLM
deepseek_llm = ChatDeepSeek(
 api_key=DEEPSEEK_API_KEY,
 api_base=DEEPSEEK_BASE_URL, # 注意:这里是api_base,不是base_url
 model_name="deepseek-v4-flash",
)

print(deepseek_llm.invoke("请介绍一下你自己"))

基于模型集成手册和LangChain Reference的API参考页ChatDeepSeek可知相关的配置参数。

ChatDeepSeek | langchain_deepseek | LangChain Reference

langchain | LangChain Reference

ChatDeepSeek integration - Docs by LangChain


方式2:优化,依靠默认行为读取 .env 环境变量

from langchain_deepseek import ChatDeepSeek
from dotenv import load_dotenv
# 通过load_dotenv()将.env中的变量加载为环境变量
load_dotenv(override=True)

deepseek_llm = ChatDeepSeek(
 model_name="deepseek-v4-flash",
)
print(deepseek_llm.invoke("请介绍一下你自己"))

调用ChatDeepSeek要求系统存在名为DEEPSEEK_API_KEY的环境变量。URL通过源码可以查看, 有默认值。如下

api_key: SecretStr | None = Field(
default_factory=secret_from_env("DEEPSEEK_API_KEY",
default=None),
)

"""DeepSeek API key"""
api_base: str = Field(
default_factory=from_env("DEEPSEEK_API_BASE",
default=DEFAULT_API_BASE),
)

"""DeepSeek API base URL"""
DEFAULT_API_BASE = "https://api.deepseek.com/v1"

式3:硬编码方式(不推荐)

from langchain_deepseek import ChatDeepSeek

# 创建DeepSeek LLM
deepseek_llm = ChatDeepSeek(
 api_key="sk-2nkIWkv6M...U1Ra4P0NGa", # 明文暴露密钥
 api_base="https://api.deepseek.com",
model="deepseek-v4-flash",
)

print(deepseek_llm.invoke("请介绍一下你自己"))

直接将 API Key 和模型参数写入代码,仅适用于临时测试,存在密钥泄露风险,在 生产环境不推荐 。 相比来讲,.env配置文件方式,生产环境推荐,配置文件可加入 .gitignore 避免泄露。

2.1.2 智谱大模型

官网:https://www.bigmodel.cn/

相关依赖:

# 安装 Langchain 社区依赖包,包含ChatHunyuan、ChatTongyi、ChatZhipuAI
pip install langchain-community

# ChatZhipuAI / 智谱 AI 认证相关依赖
pip install pyjwt

环境变量:

在.env中补充

ZHIPUAI_API_KEY=<Your API Key>
ZHIPUAI_BASE_URL=https://open.bigmodel.cn/api/paas/v4/chat/completions

确保余额或免费额度大于零。

举例:

import os
from langchain_community.chat_models import ChatZhipuAI
from dotenv import load_dotenv

# override=True 确保.env文件优先
load_dotenv(override=True)
 ZHIPUAI_API_KEY = os.getenv("ZHIPUAI_API_KEY")
 ZHIPUAI_BASE_URL = os.getenv("ZHIPUAI_BASE_URL")

zhipu_llm = ChatZhipuAI(
model="glm-5.1",
 api_base=ZHIPUAI_BASE_URL, #可选
 api_key=ZHIPUAI_API_KEY #可选
)
print(zhipu_llm.invoke("请介绍一下你自己"))

2.1.3 千问大模型

通过阿里云百炼平台调用,官网:https://bailian.console.aliyun.com/

相关依赖:

#切换python环境
conda activate langchain1.2

# ChatTongyi / 阿里通义千问依赖包
pip install dashscope

环境变量:

在.env中补充

DASHSCOPE_API_KEY=<Your API Key>

注意:一般不要添加这样的环境变量

DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1

百炼平台提供了两种访问方式:专用SDK和OpenAI兼容接口,上述URL是为后者准备的,而ChatTongyi 底层是基于专用SDK实现的,如果指定了上述URL,则运行报错

举例:

import os
from langchain_community.chat_models import ChatTongyi
from dotenv import load_dotenv

# override=True 确保.env文件优先
load_dotenv(override=True)
DASHSCOPE_API_KEY = os.getenv("DASHSCOPE_API_KEY")

tongyi_llm = ChatTongyi(
 api_key=DASHSCOPE_API_KEY,
 model="qwen-plus",
)
print(tongyi_llm.invoke("请介绍一下你自己"))

2.2 兼容用法

一方面,LangChain没有为所有大模型厂商提供专用接口,见Langchain大模型集成列表。如果选用的 平台没有专用接口,可以通过兼容接口调用。

另一方面,专用接口的对接方式五花八门,如腾讯混元的ChatHunyuan需要单独的 APP_ID + SecretId + SecretKey ,配置繁琐,用户不友好。

结论:大多数API平台都支持OpenAI API接口规范,所以基本都可以通过 ChatOpenAI 集成。

举例1:

import os
from dotenv import load_dotenv
# override=True 确保.env文件优先
from langchain_openai import ChatOpenAI

load_dotenv(override=True)
# 通过ChatOpenAI 连接deepseek模型
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL")

deepseek_llm2 = ChatOpenAI(
 api_key=DEEPSEEK_API_KEY,
 base_url=DEEPSEEK_BASE_URL,
 model="deepseek-v4-flash",
)
response = deepseek_llm2.invoke("1 + 1 = ?")
print(response)

举例2:

import os
from dotenv import load_dotenv
from langchain_openai import ChatOpenAI

load_dotenv(override=True)

tongyi_llm2 = ChatOpenAI(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    base_url=os.getenv("DASHSCOPE_BASE_URL"),
    model="qwen-plus",
)

response = tongyi_llm2.invoke("介绍一下你自己")

print(response)

2.3 中转平台( aicodemirror )

AICodeMirror官方共享平台 - 中国用户专属AI编程助手
可以领取免费额度

无需编程基础,仅依靠自然语言,就能将您的想法变为现实!用最简单的配置即刻使用稳定、安全、优惠的 Claude Code 、 Codex 和 Gemini CLI,体验当前全球最顶级的AI编程工具。为企业和开发者提效300%

LangChain没有为aicodemirror提供专用集成,可以通过ChatOpenAI兼容接口调用。

在.env中补充

AICODE_KEY=<Your API Key>
AICODE_URL=https://api.aicodemirror.com/api/codex/backend-api/codex/v1

举例

import os
from dotenv import load_dotenv
# override=True 确保.env文件优先
from langchain_openai import ChatOpenAI
load_dotenv(override=True)

#通过ChatOpenAI 连接通义千问模型
DASHSCOPE_API_KEY = os.getenv("AICODE_KEY")
DASHSCOPE_BASE_URL = os.getenv("AICODE_URL")
tongyi_llm2 = ChatOpenAI(
 api_key=DASHSCOPE_API_KEY,
 base_url=DASHSCOPE_BASE_URL,
 model="gpt-5.5",
)
response = tongyi_llm2.invoke("1 + 1 = ?")
print(response)

3、模型初始化角度1:init_chat_model()

init_chat_model 是 LangChain 1.x 中推出的用于初始化聊天模型的统一接口。只要是LangChain支持 的模型都可以处理,它会根据模型名称自动选择对应的模型类初始化实例。

基本语法

from langchain.chat_models import init_chat_model
model = init_chat_model(
 model_provider="model_name", # 提供商:模型名称
 api_key="your-api-key", # API 密钥(可选,可从环境变量读取)
 temperature=0.7, # 温度参数(可选)
 max_tokens=1000, # 最大 token 数(可选)
 model_kwargs=[] # 其他模型特定参数
)

问题: init_chat_model 和直接使用 ChatTongyi、ChatOpenAI、ChatDeepSeek有什么区别?

回答: init_chat_model 是 LangChain 1.0 的统一接口,优势包括:

  • 统一接口:无需记住每个提供商的不同初始化方式(以一致的方式初始化)
  • 易于切换:简化了智能体系统中模型切换策略(只需修改模型字符串)
  • 简洁明了:更简洁的语法,减少样板代码
  • 自动适配:内部根据模型标识自动选择对应的驱动类(ChatOpenAI、ChatDeepSeek)

3.1 使用举例

举例1:调用DeepSeek官网的大模型

import os
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
# 从.env文件中加载环境变量
load_dotenv(override=True)

# 从环境变量读取配置
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL")

model = init_chat_model(
  model="deepseek:deepseek-v4-flash",
  #model_provider="deepseek",
  api_key=DEEPSEEK_API_KEY,
  base_url=DEEPSEEK_BASE_URL)
# 向模型发送单条数据
response = model.invoke("你好,用一句话回答")
# 打印响应
print(response)

当我们传递的模型名称为 deepseek-v4-flash 时,init_chat_model会自动调用ChatDeepSeek初始化模 型实例,和直接通过ChatDeepSeek初始化的效果完全一致。

举例2:调用阿里百炼大模型

环境变量

DASHSCOPE_BASE_URL=https://dashscope.aliyuncs.com/compatible-mode/v1
DASHSCOPE_API_KEY=<YOUR_API_KEY>

代码:

import os
from langchain.chat_models import init_chat_model
from dotenv import load_dotenv

# 从.env文件中加载环境变量
load_dotenv(override=True)
# 从环境变量读取配置
DEEPSEEK_API_KEY = os.getenv("DEEPSEEK_API_KEY")
DEEPSEEK_BASE_URL = os.getenv("DEEPSEEK_BASE_URL")

model = init_chat_model(
 model="deepseek:deepseek-v4-flash",
#model_provider="deepseek",
 api_key=DEEPSEEK_API_KEY,
 base_url=DEEPSEEK_BASE_URL
)
# 向模型发送单条数据
response = model.invoke("你好,用一句话回答")
# 打印响应
print(response)

举例3:调用aicodemirror中转平台大模型

环境变量

AICODE_KEY=<Your API Key>
AICODE_URL=https://api.aicodemirror.com/api/codex/backend-api/codex/v1

代码:

from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os

load_dotenv(override=True)
AICODE_KEY=os.getenv("AICODE_KEY")
AICODE_URL=os.getenv("AICODE_URL")

model = init_chat_model(
model="gpt-5.5",
model_provider="openai",
api_key=AICODE_KEY,
base_url=AICODE_URL
)
print(model.invoke("你好,用一句话回答"))

问题1:model_provider支持哪些provider?

model_provider 表示模型的提供者,支持的providers有: anthropic , anthropic_bedrock, azure_ai, azure_openai, bedrockbedrock_converse, cohere, deepseek , fireworks, google_anthropic_vertex, google_genai, google_vertexaigrog, huggingface, ibm, mistralai, nvidia, ollama , openai , openrouter , perplexity, together, upstage, xai。

  • 如果 model_provider="openai" ,会自动加载 langchain-openai 的依赖包,底层调用的是 ChatOpenAI 类。
  • 如果 model_provider="deepseek" ,会自动加载 langchain-deepseek 的依赖包,底层调用的 是 ChatDeepSeek 类。
  • 像阿里的 dashscope 尚未被LangChain官方纳入模型的统一注册体系,暂时不知 道"dashscope"的提供者是谁。此时可以将model_provider设置为openai,底层将会用openai的 规范处理请求,这就要求我们调用的模型服务是OpenAI Compatible的。

问题2:如果在model参数中没有指明模型提供者,必须在model_provider中指明?

可以在model参数中通过前缀指定模型供应商,和模型名称之间用 冒号分割 ,等价于通过 model_provider参数指定供应商。如果两个位置都没有指明供应商,LangChain底层会按照内置规则自 动推断。

但是,并非所有的模型都支持自动推断,如model名称 qwen-plus 不支持自动推断,没有指明供应商会 报错。

3.2 小结:模型的创建

DeepSeek官网的DeepSeek模型:可以调用ChatDeepSeek()、ChatOpenAI()、 init_chat_model()三种方式

阿里云百炼平台的DeepSeek模型:可以调用ChatTongyi()、ChatOpenAI()、init_chat_model() 三种方式

3.3 模型初始化参数(常用版)

在LangChain中,Model Class 和init_chat_model初始化模型共同的参数及解释。

API文档:https://docs.langchain.org.cn/oss/python/langchain/models#parameters

说明:

1、temperature 参数根据使用场景选择:

  • 0.0-0.3:需要一致性、准确性的任务(数学计算、数据提取、分类、代码生成)
  • 0.5-0.7:平衡创造性和一致性(聊天、问答)
  • 0.8-1.5:创造性任务(写作、头脑风暴)
  • \1.5-2.0:高度创造性(诗歌、故事创作)

举例:

from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os

load_dotenv(override=True)

model = init_chat_model(

model="deepseek-v4-pro",
model_provider="openai",
temperature=0,
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL"),
)
# 向模型发送单条数据
for i in range(3):
  response = model.invoke("帮我写一首描述春天的七言绝句诗")
# 打印响应
  print(response.content)

此时,设置为 后,模型会始终选择概率最高的 Token,确保字段准确、不胡乱发挥。

作为对比:

from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os

load_dotenv(override=True)

model = init_chat_model(

model="deepseek-v4-pro",
model_provider="openai",
temperature=1.5,
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL"),
)
# 向模型发送单条数据
for i in range(3):
  response = model.invoke("帮我写一首描述春天的七言绝句诗")
# 打印响应
  print(response.content)

使用场景:严格的结构化数据提取

from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os

load_dotenv(override=True)

model = init_chat_model(

model="deepseek-v4-pro",
model_provider="openai",
temperature=0,
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL"),
)
# 向模型发送单条数据
response = model.invoke("张三,男,30岁,拥有8年编程开发经验,目前在某互联网大厂担任技术专家。帮我从上文中提取数据,返回JSON格式")
print(response.content)

使用场景:创意文案与头脑风暴

from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os

load_dotenv(override=True)

model = init_chat_model(

model="deepseek-v4-pro",
model_provider="openai",
temperature=2,
api_key=os.getenv("DEEPSEEK_API_KEY"),
base_url=os.getenv("DEEPSEEK_BASE_URL"),
)
# 向模型发送单条数据
response = model.invoke("请为一款极致静音的机械键盘写3个充满诗意且极具张力的广告语。")
print(response.content)

2、Token是什么?

基本单位 : 大模型通过分词器(Tokenizer)将文本拆分后的最小语义单元是token(相当于自然语言中 的词或字)。不同的模型采用不同的 分词算法 (如BPE、WordPiece),因此同一段文本在不同模型中 的Token数量可能不同。

收费依据 :大语言模型通常也是以token的数量作为其计量(或收费)的依据。

  • 1个中文Token≈1-1.8个汉字,1个英文Token≈3-4个字符
  • Token与字符转化的可视化工具:

OpenAI提供:https://platform.openai.com/tokenizer

百度智能云提供:https://console.bce.baidu.com/support/#/tokenizer

举例:

from langchain.chat_models import init_chat_model
from dotenv import load_dotenv
import os

load_dotenv(override=True)

model = init_chat_model(

model="gpt-5.4",
model_provider="openai",
max_tokens=15,
api_key=os.getenv("AICODE_KEY"),
base_url=os.getenv("AICODE_URL"),
)
# 向模型发送单条数据
response = model.invoke("请用中文详细介绍什么是AI")
print(response.content)

Logo

汇聚全球AI编程工具,助力开发者即刻编程。

更多推荐