国产模型接进 LangChain,别再直接改 model 参数了
先说三个常见的翻车现场
很多独立开发者第一次想让 LangChain 跑国产模型时,路径大致是这样的:搜教程 → 复制代码 → 改个模型名 → 运行报错。下面三种失败姿势,看看你中过哪个。
姿势一:只改模型名,不改 base_url。
llm = ChatOpenAI(model="qwen-plus", api_key="sk-xxx")运行后收到一堆重试日志,最后抛出认证或模型不存在的错误。原因很简单:这段代码默认请求的还是 OpenAI 官方端点,人家那边根本没有 qwen-plus 这个模型。模型名改得再对也没用,请求压根没发对地方。
姿势二:base_url 写了,但路径少一截。
有人知道要换端点,写成了 https://api.thistoken.ai——少了 /v1。LangChain 底层的 openai 客户端会拼出错误的资源路径,返回 404。这种错误最气人的是:Key 是对的、模型名是对的、网络也是通的,就差一个路径后缀,排查半小时起步。
姿势三:把官方 SDK 和兼容端点硬混。
部分国产模型有自己的官方 SDK,开发者图省事直接用官方 SDK 调通后,再想切回 LangChain 生态时,发现消息结构、工具调用格式都对不上,只好在两套体系之间手写胶水层,越写越乱。
这三种翻车的共同根源是:没搞清楚「OpenAI 兼容端点」到底兼容的是什么。 它兼容的是 OpenAI 的 HTTP 接口规范,所以你只需要让 LangChain 的 OpenAI 客户端指向正确的地址,剩下的一切(流式、工具调用、结构化输出)都照常工作。
正确路径:三步跑通
第一步:注册并拿到 API Key
打开 ThisToken.AI(一个聚合多家国产模型的 OpenAI 兼容网关),注册账号后进入控制台,在「API Keys」页面创建一个新 Key。Key 只在创建时完整展示一次,务必当场保存到环境变量或密钥管理工具里,别写死在代码里。
价格方面不用到处比价,以官网价格页为准,不同模型的计费规则页面上都写得很清楚。
第二步:装依赖
pip install langchain langchain-openai第三步:跑通第一段代码
import os
from langchain_openai import ChatOpenAI
from langchain_core.messages import HumanMessage, SystemMessage
# 建议通过环境变量管理密钥,避免硬编码
os.environ["OPENAI_API_KEY"] = "sk-你的Key"
llm = ChatOpenAI(
model="qwen-plus", # 换成你在 ThisToken.AI 可用的任意模型
base_url="https://api.thistoken.ai/v1", # 关键:注意 /v1 不能少
temperature=0.7,
)
messages = [
SystemMessage(content="你是一个简洁的技术助手。"),
HumanMessage(content="用一句话解释什么是 OpenAI 兼容端点。"),
]
response = llm.invoke(messages)
print(response.content)运行后能正常打印回复,就说明链路通了。对照前面三个翻车现场检查一遍:base_url 带了 /v1,模型名是网关支持的,密钥来自环境变量——三颗雷全排掉了。
跑通之后,顺手升级两件事
换成流式输出。 兼容端点对流式的支持和 OpenAI 一致,一行改动:
for chunk in llm.stream(messages):
print(chunk.content, end="", flush=True)把 Key 从代码里挪出去。 上面的示例为了完整性用了 os.environ 赋值,实际项目里应该用 .env 文件配合 python-dotenv,或者直接走系统环境变量。对于部署在 Vercel、Netlify 上的小团队项目,密钥放进平台的环境变量配置即可,永远不要提交到仓库。
为什么推荐走聚合网关而不是逐家直连
对独立开发者和小团队来说,逐家注册、逐家充值、逐家维护 SDK 版本,维护成本很快就超过模型本身的费用。走一个 OpenAI 兼容网关的好处是:
- 一套代码换模型:想从通义换到 DeepSeek,只改
model参数,base_url和认证方式不变; - 不锁定单一供应商:某个模型抽风或下线时,切换成本接近零;
- LangChain 生态全兼容:链、Agent、结构化输出这些上层能力照常用,不需要为国产模型单独适配。
写在最后
接入国产模型这件事,难点从来不在模型本身,而在「你以为自己在调国产模型,实际请求发到了别处」这类环境配置问题。把 base_url="https://api.thistoken.ai/v1" 这一行写对,后面的路就平坦了。
还没注册的话,可以直接从这里开始:https://api.thistoken.ai/register ——五分钟内你就能看到第一段回复打印在终端里。
---
不想折腾多家供应商的接入差异?在 https://api.thistoken.ai/register 注册,用一个 base_url 调用所有模型。