在 LangChain 中接入 CaMeL Hub:一个 Key 调用 GPT / Claude / Gemini / DeepSeek
LangChain 是目前使用最广的大模型应用开发框架(Python、JS 都有),链式调用、Agent、RAG 管线都建立在一个可随意替换的 Chat Model 接口之上。把它内置的 OpenAI 兼容类 ChatOpenAI 指向 CaMeL Hub 后,你原有的链、Agent、工具调用代码不需要改动——只是 model="..." 现在可以填 GPT-5.5、Claude Sonnet 5、Gemini 3.1 Pro、DeepSeek V4 Flash,或 CaMeL Hub 收录的 480 余个模型中的任意一个,统一用一把 Key、一个 base_url、一张账单结算。
-
安装 LangChain 的 OpenAI 集成包
LangChain 通过 langchain-openai 这个包与任何 OpenAI 兼容端点通信,CaMeL Hub 正是其中之一。和基础的 langchain 包一起装上即可。pip install -U langchain langchain-openai -
在 CaMeL Hub 创建 API Key
登录 CaMeL Hub 控制台,在左侧菜单找到通常叫“令牌”或“API Keys”的页面,新建一个令牌并立即复制完整的 sk-... 密钥——它只会完整显示这一次。 -
把 OpenAI 客户端配置指向 CaMeL Hub
LangChain 的 OpenAI 系列类只需要两个配置项:密钥和 base URL。可以设成环境变量(下一步也能直接传参)。CaMeL Hub 的 OpenAI 兼容端点要求带完整路径的 /v1,只填主域名 https://api.camel-hub.com 是不行的。export OPENAI_API_KEY="sk-你的CaMeL-Hub密钥" export OPENAI_BASE_URL="https://api.camel-hub.com/v1" -
用 ChatOpenAI 调用任意模型
从 langchain_openai 导入 ChatOpenAI,把 model 设成任意 CaMeL Hub 支持的模型名。如果上一步已经设置了环境变量,这里不需要再传 base_url,当然显式传入也可以。from langchain_openai import ChatOpenAI llm = ChatOpenAI( model="claude-sonnet-5", base_url="https://api.camel-hub.com/v1", # 若已设置 OPENAI_BASE_URL 可省略 temperature=0.7, ) response = llm.invoke("用一句话解释 base_url 覆盖的作用。") print(response.content) -
只改 model 字符串即可切换厂商
因为所有厂商都通过同一个 OpenAI 格式端点暴露,这里完全不需要 LangChain 的 ChatAnthropic 或 ChatGoogleGenerativeAI——只改 model 字符串,ChatOpenAI 一个类就够用。for model in ["gpt-5.5", "claude-sonnet-5", "gemini-3.1-pro", "deepseek-v4-flash"]: llm = ChatOpenAI(model=model) print(model, "->", llm.invoke("用五个词打个招呼。").content) -
流式输出与工具调用
流式输出和工具/函数调用的用法与直连 OpenAI 完全一致。逐 token 输出用 .stream(),Agent 场景用 .bind_tools()——具体某个模型是否支持函数调用或视觉,先看该模型在 CaMeL Hub 页面上的 Capabilities 栏。for chunk in llm.stream("写一首关于 API 网关的两行俳句。"): print(chunk.content, end="", flush=True) -
LangChain.js(TypeScript)同样适用
Node/TypeScript 版 SDK 通过 @langchain/openai 遵循同样的模式,基于它搭建的 LangGraph.js 链和 Agent 不需要额外改动。import { ChatOpenAI } from "@langchain/openai"; const llm = new ChatOpenAI({ model: "claude-sonnet-5", apiKey: process.env.OPENAI_API_KEY, configuration: { baseURL: "https://api.camel-hub.com/v1" }, }); const res = await llm.invoke("hello"); console.log(res.content);
常见问题
Claude、Gemini 模型是不是该用 LangChain 的 ChatAnthropic / ChatGoogleGenerativeAI?
不需要,也不能用。CaMeL Hub 把所有厂商统一封装成一个 OpenAI 格式端点,LangChain 里只用 ChatOpenAI(或 init_chat_model(..., model_provider="openai"))即可,换模型只改 model 字符串。用厂商专属的 Chat 类会尝试直连 Anthropic、Google 官方接口,CaMeL Hub 的密钥在那边不认。
model= 参数该填什么名字?
填 CaMeL Hub 侧的模型 slug——也就是模型详情页或控制台模型列表里显示的名字(例如 claude-sonnet-5、gpt-5.5、deepseek-v4-flash),不是厂商自己的模型 ID,网关不识别厂商原生 ID。
LangChain 报 401 Unauthorized 怎么办?
先确认 OPENAI_API_KEY(或传给 ChatOpenAI 的密钥)复制完整、没有多余空格或换行,再确认 OPENAI_BASE_URL / base_url 末尾带了 /v1。base URL 漏掉 /v1 是“curl 能通、LangChain 报 401”最常见的原因。
LangChain 的 Agent、bind_tools 工具调用能在 CaMeL Hub 上用吗?
能,前提是所选模型的 Capabilities 里列出了函数调用(function-calling)。OpenAI 兼容端点会按 OpenAI 的格式转发 tool 定义和 tool_call 结果,bind_tools()、create_tool_calling_agent,以及基于它们的 LangGraph agent 都无需改动。