LangChain 调用大模型实战:从跑通到服务商与模型选型
TL;DR
模型是产品,服务商是卖家,兼容标准是通用语言。
- 用
ChatOpenAI显式传api_key+base_url+model,万能兜底,硅基/百炼/DeepSeek 官方都能用 - 用
init_chat_model("驱动名:模型名"),代码更简洁;硅基等代理平台没有专属驱动,必须借openai:前缀 - 换模型 只改
model;换服务商 只改api_key+base_url配对------同一套代码通调全网 - 范围说明 :LangChain 覆盖文本对话 和图像理解;生图、视频、TTS 同 Key 不同 API 端点,本文仅作选型参考
本文带你 5 分钟跑通 LangChain 调用大模型,搞清三个核心概念,并给出服务商和模型的选型参考。完整可运行示例见项目根目录 use-model.py。
一、准备工作
跟着做一遍,5 分钟跑通第一次调用。
1. 注册硅基流动并充值
- 打开 硅基流动控制台,注册账号并登录
- 进入 API 密钥 页面,新建一个 Key,复制保存(只显示一次)
- 进入 账户余额 ,充值 1 元 即可(够跑很多次调试)
2. 配置环境变量
写入 ~/.zshrc(或 ~/.bashrc),然后执行 source ~/.zshrc。
bash
export SILICON_KEY="sk-xxx"
export SILICON_BASE_URL="https://api.siliconflow.cn/v1"
也可以用
.env文件 +python-dotenv加载,本文示例直接用os.getenv()读取 shell 环境变量。
3. 检查 Python 环境
bash
python3 --version
能正常输出版本号(建议 3.10+ ,推荐 3.12 )就可以继续。如果没有 python3 或版本过低,macOS 推荐:
bash
brew install python@3.12
# 或打开 https://www.python.org/downloads/ 下载安装包
4. 安装依赖包
建议先建虚拟环境,避免污染系统 Python:
bash
python3 -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
pip3 install langchain langchain-openai python-dotenv
| 包名 | 用途 |
|---|---|
langchain |
新版 init_chat_model 等核心 API |
langchain-openai |
ChatOpenAI(OpenAI 兼容协议驱动) |
python-dotenv |
可选,从 .env 文件加载密钥 |
5. 快速自检
bash
python3 -c "import langchain, langchain_openai; print('环境 OK')"
二、第一次调用:ChatOpenAI

新建 use-model.py,复制以下代码运行:
python
import os
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
api_key=os.getenv("SILICON_KEY"), # 服务商的密钥
base_url=os.getenv("SILICON_BASE_URL"), # 服务商的接口地址
model="deepseek-ai/DeepSeek-V3", # 具体要调的大模型
temperature=0.7,
)
print(llm.invoke("用一句话介绍你自己").content)
bash
python3 use-model.py
# 或在编辑器里点击左上角执行图标
看到模型回复,说明环境全部 OK。
三、三个核心概念
上面代码里三个参数,对应三个最容易混淆的概念:
| 代码参数 | 概念 | 一句话 | 举例 |
|---|---|---|---|
model |
大模型 | 具体的 AI 产品,能力由它决定 | deepseek-ai/DeepSeek-V3 |
api_key + base_url |
服务商 | 谁帮你跑模型、谁给你计费 | 硅基流动、百炼、DeepSeek 官方 |
ChatOpenAI 调用方式 |
兼容标准 | 统一的接口规范 | OpenAI 兼容标准 |
换模型(同一服务商)
密钥和地址不用动,只改 model 。模型名到 硅基模型广场 复制:
python
# DeepSeek → Qwen,一行搞定
llm = ChatOpenAI(..., model="Qwen/Qwen2.5-7B-Instruct")
DeepSeek、Qwen、GLM 等国产模型,同一套代码通调。
换服务商(同一模型)
改 api_key + base_url 配对 ,model 可以仍是 DeepSeek(各平台模型名可能略有差异):
python
# 以下示意三种服务商,实际代码中用 os.getenv(...) 读取对应 Key
# 硅基流动
ChatOpenAI(api_key=os.getenv("SILICON_KEY"), base_url="https://api.siliconflow.cn/v1", model="deepseek-ai/DeepSeek-V3")
# 阿里云百炼
ChatOpenAI(api_key=os.getenv("DASHSCOPE_KEY"), base_url="https://dashscope.aliyuncs.com/compatible-mode/v1", model="deepseek-r1")
# DeepSeek 官方(必须配官方 Key)
ChatOpenAI(api_key=os.getenv("DEEPSEEK_KEY"), base_url="https://api.deepseek.com/v1", model="deepseek-chat")
代码结构完全不变------这就是 OpenAI 兼容标准 的价值:换「卖家」只换密钥和地址,不用重写调用逻辑。
四、第二种写法:init_chat_model
LangChain 1.0+ 提供了更简洁的工厂函数,适合在多个官方模型间切换。
python
import os
from langchain.chat_models import init_chat_model
# init_chat_model 读 OPENAI_* 环境变量,把硅基配置映射过去
os.environ["OPENAI_API_KEY"] = os.getenv("SILICON_KEY")
os.environ["OPENAI_BASE_URL"] = os.getenv("SILICON_BASE_URL")
llm = init_chat_model("openai:deepseek-ai/DeepSeek-V3", temperature=0.7)
print(llm.invoke("用一句话介绍你自己").content)
换模型同样只改冒号后面的名字:
python
llm = init_chat_model("openai:Qwen/Qwen2.5-7B-Instruct", temperature=0.7)
为什么写 openai: 开头?
格式是 驱动名:模型名 。前缀不是服务商,而是 LangChain 内置的驱动标识:
| 前缀 | 含义 | 示例 |
|---|---|---|
openai: |
OpenAI 官方,或任意 OpenAI 兼容平台 | openai:gpt-4o(官网) openai:deepseek-ai/DeepSeek-V3(硅基) |
deepseek: |
仅 DeepSeek 官方接口 | deepseek:deepseek-chat |
anthropic: |
Claude 官方 | anthropic:claude-3-5-sonnet-20241022 |
google_genai: |
Gemini 官方 | google_genai:gemini-2.0-flash |
tongyi: |
通义千问官方 | tongyi:qwen-max |
ollama: |
本地 Ollama | ollama:llama3 |
为什么不能写 silicon: 或 bailian:?
LangChain 没有 为硅基、百炼注册专属驱动,写 silicon:xxx 会直接报错。它们接口兼容 OpenAI 标准,只能 借用 openai: 驱动,再通过环境变量把请求指向硅基/百炼的地址。
这里的 openai 是协议驱动名,不是 OpenAI 官网。前缀决定驱动类型,环境变量决定实际请求发到哪家服务商。
只有直连 DeepSeek 官方 API 时,才能写
deepseek:。通过硅基/百炼调 DeepSeek,必须写openai:deepseek-xxx。
五、两种写法怎么选
| 对比项 | ChatOpenAI |
init_chat_model |
|---|---|---|
| 本质 | 直接实例化 OpenAI 兼容驱动 | 统一工厂函数,按前缀自动选驱动 |
| 配置方式 | 代码里显式传 api_key、base_url、model |
前缀:模型名 + 环境变量 |
| 兼容范围 | 任意 OpenAI 兼容平台 | 官方原生可简写;代理平台需借 openai: |
| 推荐场景 | 硅基/百炼等代理、多 Key 并存、参数要精确控制 | 官方原生模型、代码简洁、配合 Agent 等新特性 |
- 个人调试、代理平台、拿不准 → 优先
ChatOpenAI - 已确定用 DeepSeek/OpenAI 官方、追求简洁 →
init_chat_model - 建议路径 :先用
ChatOpenAI跑通,再按需迁移
六、常用服务商与选型
代码写法统一,选哪家服务商取决于你的场景和预算:
| 服务商 | base_url | 适合谁 | 特点 |
|---|---|---|---|
| 硅基流动 | https://api.siliconflow.cn/v1 |
个人开发、本地调试 | 价格低、模型全、上新快、充值方便,1 元就能跑 |
| 阿里云百炼 | https://dashscope.aliyuncs.com/compatible-mode/v1 |
企业上线、商用项目 | 大厂合规、SLA 稳定、对账方便、支持审计 |
| DeepSeek 官方 | https://api.deepseek.com/v1 |
只用 DeepSeek、要原厂直连 | 官方 Key,init_chat_model 可写 deepseek: 前缀 |
| 火山方舟 | https://ark.cn-beijing.volces.com/api/v3 |
字节生态、企业内网 | 豆包等模型,企业集成方便 |
| OpenAI 官方 | https://api.openai.com/v1 |
海外业务、要 GPT 原厂 | 需海外账号和网络 |
| 聚合 API(CloseAI、DMXAPI 等) | 各平台不同 | 个人测国外模型 | 单 Key 通吃 GPT/Claude/Gemini,无需海外信用卡 |
服务商怎么选?
| 你的情况 | 推荐 |
|---|---|
| 个人学习、原型验证、批量测国产模型 | 硅基流动 |
| 公司项目正式上线、要合规发票和 SLA | 阿里云百炼 |
| 只要 DeepSeek,且想走官方通道 | DeepSeek 官方 |
| 个人想试 GPT / Claude,没有海外账号 | 聚合 API |
| 企业商用国外模型 | 厂商官方企业通道,别用小众聚合 |
- 只用国产模型 → 个人硅基、企业百炼
- 国内外混用 → 同一套
ChatOpenAI,切换key+base_url即可 - 所有第三方代理 → LangChain 无专属驱动,统一借
openai:前缀
不确定就从 硅基流动 开始------本文示例全部基于它,跑通后换服务商只改两行配置。
七、常用模型与选型
服务商定好后,选哪个模型 取决于你要干什么。模型名因平台而异,到 硅基模型广场 按标签筛选并复制。
LangChain 覆盖范围 :
ChatOpenAI/init_chat_model用于文本对话 和图像理解(多模态消息)。图像生成、视频生成、语音合成 Key 通用,但走不同 API 端点,需 OpenAI SDK 或 HTTP 调用。
按能力选型
| 能力 | 常用模型 | 硅基 model 示例 | 适合场景 |
|---|---|---|---|
| 文本对话 | DeepSeek-V3、Qwen2.5、GLM-4 | deepseek-ai/DeepSeek-V3 |
日常问答、写代码、Agent,默认首选 |
| GPT-4o、Claude 3.5 Sonnet | gpt-4o(需对应服务商) |
更高质量、英文场景 | |
| DeepSeek-R1 | deepseek-ai/DeepSeek-R1 |
数学推理、复杂逻辑分析 | |
| 图像理解 | Qwen2.5-VL | Qwen/Qwen2.5-VL-72B-Instruct |
看图说话、OCR、图表分析 |
| GPT-4o、DeepSeek-VL2 | gpt-4o / deepseek-ai/deepseek-vl2 |
多模态综合理解 | |
| 图像生成 | FLUX.1、FLUX.2 | black-forest-labs/FLUX.1-schnell(快) black-forest-labs/FLUX.2-pro(好) |
文生图、海报、插画 |
| Qwen-Image | Qwen/Qwen-Image |
中文 prompt 友好、文字渲染好 | |
| 视频生成 | Wan 2.2 | Wan-AI/Wan2.2-T2V-A14B(文生视频) Wan-AI/Wan2.2-I2V-A14B(图生视频) |
短视频、动画片段 |
| 语音合成 | CosyVoice2 | FunAudioLLM/CosyVoice2-0.5B |
中文 TTS、方言、情感控制 |
| MOSS-TTSD | fnlp/MOSS-TTSD-v0.5 |
双人对话、中英混合朗读 |
API 端点对照(硅基为例)
| 能力 | 端点 | LangChain 支持 |
|---|---|---|
| 文本对话 / 图像理解 | /v1/chat/completions |
✅ ChatOpenAI / init_chat_model |
| 图像生成 | /v1/images/generations |
❌ 需 OpenAI SDK 或 HTTP |
| 视频生成 | /v1/video/submit |
❌ 需 HTTP 异步轮询 |
| 语音合成 | /v1/audio/speech |
❌ 需 OpenAI SDK 或 HTTP |
按任务快速选
| 你要做什么 | 推荐模型 |
|---|---|
| 写代码、改 Bug | DeepSeek-V3 或 Claude 3.5 Sonnet |
| 上传图片让它分析 | Qwen2.5-VL 或 GPT-4o |
| 文字描述生成图片 | FLUX.1-schnell (快)/ FLUX.2-pro(好) |
| 文字或图片生成短视频 | Wan2.2-T2V / Wan2.2-I2V |
| 文字转语音、配音 | CosyVoice2 |
| 大量简单请求、控成本 | Qwen2.5-7B 等小参数模型 |
按预算
- 几乎免费调试 → Qwen2.5-7B + FLUX.1-schnell
- 日常开发够用 → DeepSeek-V3 + Qwen2.5-VL,单次几分钱
- 追求最高质量 → GPT-4o / Claude 3.5 + FLUX.2-pro
八、常见问题
| 报错 / 现象 | 原因 | 处理 |
|---|---|---|
Unknown provider: silicon |
写了 silicon:xxx 前缀 |
改用 openai:模型名,并配置正确的 base_url |
401 Unauthorized |
Key 无效或未 export | 检查 echo $SILICON_KEY,重新 source ~/.zshrc |
model not found |
模型名错误或平台未上架 | 到控制台复制准确 model 名 |
| 环境变量读不到 | IDE 终端未加载 shell 配置 | 重启终端,或在代码同目录建 .env + load_dotenv() |
init_chat_model 连到 OpenAI 官网 |
未设置 OPENAI_BASE_URL |
映射硅基地址:os.environ["OPENAI_BASE_URL"] = os.getenv("SILICON_BASE_URL") |
九、小结
你现在已经掌握:
- 环境搭建 --- 硅基 Key、Python 虚拟环境、LangChain 依赖
- 两种写法 ---
ChatOpenAI(万能兜底)和init_chat_model(新版简写) - 三个概念 --- 模型是产品,服务商是卖家,兼容标准是通用语言
- 灵活切换 --- 换模型改
model,换服务商改key+base_url - 选型参考 --- 个人硅基 + DeepSeek-V3,企业百炼;按能力和预算选模型
- 能力边界 --- LangChain 管对话和图像理解;生图/视频/TTS 同 Key 不同端点,另行调用