LangChain 调用大模型实战:从跑通到服务商与模型选型

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. 注册硅基流动并充值

  1. 打开 硅基流动控制台,注册账号并登录
  2. 进入 API 密钥 页面,新建一个 Key,复制保存(只显示一次)
  3. 进入 账户余额 ,充值 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_keybase_urlmodel 前缀:模型名 + 环境变量
兼容范围 任意 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-V3Claude 3.5 Sonnet
上传图片让它分析 Qwen2.5-VLGPT-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")

九、小结

你现在已经掌握:

  1. 环境搭建 --- 硅基 Key、Python 虚拟环境、LangChain 依赖
  2. 两种写法 --- ChatOpenAI(万能兜底)和 init_chat_model(新版简写)
  3. 三个概念 --- 模型是产品,服务商是卖家,兼容标准是通用语言
  4. 灵活切换 --- 换模型改 model,换服务商改 key + base_url
  5. 选型参考 --- 个人硅基 + DeepSeek-V3,企业百炼;按能力和预算选模型
  6. 能力边界 --- LangChain 管对话和图像理解;生图/视频/TTS 同 Key 不同端点,另行调用
相关推荐
VipSoft2 小时前
LangChain 入门 Model 的初始化和调用
langchain
唐装鼠2 小时前
Nginx + Gunicorn + Python Web 应用 架构(Claude)
python·nginx·gunicorn
好家伙VCC2 小时前
Qdrant + LangChain 实战:构建毫秒级语义检索服务
java·langchain
梦想三三2 小时前
【PYthon词频统计与文本向量化】苏宁易购评论分析实战
开发语言·python
biter down2 小时前
9:JSONSchema
python
日晨难再3 小时前
C语言&Python&Bash&Tcl:全局变量和局部变量
c语言·python·bash·tcl
麻雀飞吧3 小时前
期货量化主连和具体合约怎么切:天勤 KQ.m 与 KQ.i 用法
python·区块链
先吃饱再说3 小时前
Python List 切片与 LLM Prompt 设计:从数据结构到接口调用
python
一只专注api接口开发的技术猿3 小时前
OpenClaw 对接淘宝商品 API,低成本实现全天候选品监控|附可运行 Python 实操代码
大数据·开发语言·数据库·python