LangChain 怎么配置自定义 API 中转:Python 与 JS 写法

LangChain / LlamaIndex 接自定义中转只有两处要改:base_url 和 Key。这篇给出 Python 与 JavaScript 的完整写法、环境变量配置、流式与工具调用的注意事项,附三个高频报错解法。

LangChain 是最容易接中转的框架之一——它用的就是 OpenAI 兼容协议,只要换掉 base_url 和 Key,原有代码一行业务逻辑都不用动。坑主要在版本差异:不同版本的 LangChain 环境变量名不同,旧教程的写法在新版里会静默失效。这篇把 Python 和 JavaScript 的正确写法都列出来,并给出流式输出和工具调用的注意事项。

结论先行

  • Python:用 langchain-openai 的 ChatOpenAI,显式传 api_key 和 base_url 两个参数
  • JavaScript:ChatOpenAI 构造函数里传 configuration: { baseURL: ... }
  • 不要依赖旧的环境变量名,不同版本对 OPENAI_API_BASE 的支持不一致,显式传参最稳
  • 模型名直接用中转平台列表里的名字,不需要额外映射

Python 写法

pip install langchain langchain-openai
from langchain_openai import ChatOpenAI

llm = ChatOpenAI(
    model="gpt-4o-mini",
    api_key="sk-xxx",
    base_url="https://api.zaimod.com/v1",
    temperature=0,
)

resp = llm.invoke("用一句话介绍 LangChain")
print(resp.content)

关键点:

  • base_url 要带 /v1 后缀。这是 OpenAI 兼容协议的约定路径,漏了会 404
  • api_key 参数在 langchain-openai 里直接支持;也可以走环境变量:
export OPENAI_API_KEY=sk-xxx
export OPENAI_BASE_URL=https://api.zaimod.com/v1

注意环境变量名是 OPENAI_BASE_URL(对应 OpenAI SDK v1),老教程里的 OPENAI_API_BASE 在部分版本仍被兼容但已不推荐,混用容易一个生效一个不生效。项目里存在多套 Key 时,显式传参优先于环境变量。

流式输出写法不变:

for chunk in llm.stream("写一首关于调试的短诗"):
    print(chunk.content, end="", flush=True)

工具调用(bind_tools)依赖模型对 function calling 的支持。主流模型都支持,但切换到某个具体模型前,先发一条带工具定义的测试请求确认,别等 Agent 跑到一半才发现工具从未被触发。

JavaScript 写法

npm install @langchain/openai
import { ChatOpenAI } from "@langchain/openai";

const llm = new ChatOpenAI({
  model: "gpt-4o-mini",
  apiKey: "sk-xxx",
  configuration: {
    baseURL: "https://api.zaimod.com/v1",
  },
});

const resp = await llm.invoke("用一句话介绍 LangChain");
console.log(resp.content);

JS 版的坑是参数名:构造参数里是 apiKey,baseURL 藏在 configuration 对象里。直接在顶层写 baseURL 不会报错但不会生效——这是最容易踩的一个静默失败。

LlamaIndex 写法

LlamaIndex 同样基于 OpenAI 兼容协议:

from llama_index.core import Settings
from llama_index.llms.openai_like import OpenAILike

Settings.llm = OpenAILike(
    model="gpt-4o-mini",
    api_key="sk-xxx",
    api_base="https://api.zaimod.com/v1",
    is_chat_model=True,
)

is_chat_model=True 必须显式设置,否则 LlamaIndex 会按 completion 协议发请求,部分兼容端点会报错。

三个高频报错的解法

1. 404 model not found。 十有八九是 base_url 漏了 /v1,或模型名与平台列表不一致。先用 curl 验证 base_url 是否正确,方法见 大模型 API 报错速查。

2. 401 invalid_api_key。 检查是否把官方渠道 Key 和中转 Key 混用——两者不通用,base_url 和 Key 必须配套。

3. 结构化输出(Pydantic)失败。 部分模型对 JSON mode 支持不完整,with_structured_output 解析会报格式错误。换成对该功能支持完整的模型,或在 prompt 里强化输出格式约束。base_url 迁移后还有哪些功能会失效,实测清单见 base_url 迁移后失效的 5 个功能实测。

选型提醒

LangChain 里换模型改一行字符串,成本低到容易忽略一个事实:不同模型的价格差异是十倍级的。批量场景把主力模型换成低成本模型,账单差别立竿见影。各模型的单价对比参考 2026 大模型 API 价格对比,组合策略见 月预算 50 美元的大模型组合方案。

还没有中转 Key 的话,注册 zaimod 后按本文代码把 base_url 换上即可,175 个模型共用一个 Key,LangChain、LlamaIndex、直接调 SDK 都走同一入口。协议层面的原理说明见 OpenAI 兼容协议是什么。

常见问题

Q:LangChain 版本旧(langchain.llms.OpenAI 那一代)还能这么配吗?

旧包已停止维护,环境变量名和新版不一致。建议升级到 langchain-openai,迁移成本远低于维护旧代码的成本。

Q:Agent、RAG 链这些高级功能需要额外配置吗?

不需要。LangChain 的所有组件共用同一个 LLM 实例,底层都走你配置的 base_url。需要确认的只有该模型是否支持对应能力(工具调用、JSON mode)。

Q:能同时在 LangChain 里接多个中转吗?

可以。创建多个 ChatOpenAI 实例,各自配不同的 base_url 和 Key,按场景分别传入即可。

延伸阅读

#langchain 自定义 api#langchain base_url#langchain 中转站配置#llamaindex 配置 api
免费创建 API Key

相关阅读

Cherry Studio 怎么接入 API 中转配置教程

Cherry Studio 支持自定义 OpenAI 兼容服务商,填入 base_url 和 Key 就能在一个客户端里切换 175 个模型。这篇给完整的添加步骤、模型列表字段写法、联网与知识库的配套设置,以及配置后不出字的排查顺序。

多个 API Key 怎么管理和限流

一个 Key 跑全部业务,迟早会撞上额度和对账两堵墙。这篇讲怎么按业务线拆分 Key、用网关层做配额与限流、踩住 429 和超时的重试边界,并给出可直接落地的目录结构与代码。

Dify 接入 OpenAI 兼容模型配置教程

Dify 自带的模型供应商不够用、想接自己的聚合网关怎么办?这篇从验证 Key 开始,一步步在 Dify 里添加 OpenAI 兼容模型,附字段填写对照表、五个高频报错和计费核对方法。