哪些 SDK 和框架能通过一把聚合 key 跑起来:兼容性对照
本文梳理了主流 LLM 客户端 SDK 和框架(OpenAI SDK、Anthropic SDK、LangChain、LlamaIndex、Vercel AI SDK)通过 OpenAI 兼容的聚合代理接入多模型时的兼容性情况。文章解释了 OpenAI 兼容代理的工作原理,并逐一分析每个工具的适配方式,帮助开发者快速判断哪些工具可以直接使用,哪些需要额外配置或适配层。
为什么需要关注兼容性
聚合 API 服务通常提供一个 OpenAI 兼容的端点,让你用同一个 API key 调用多个模型。但不同客户端 SDK 和框架对 OpenAI API 的依赖程度不同,有的可以直接使用,有的需要一点适配。本文帮你快速判断手头的工具能否直接跑起来。
OpenAI 兼容代理如何工作
聚合服务在服务端实现了一套与 OpenAI API 兼容的接口,包括 /v1/chat/completions、/v1/models 等。你只需要把客户端的 base_url 指向聚合服务的地址,并使用聚合服务颁发的 API key,就能像调用 OpenAI 一样调用其他模型。
关键点:
- 端点路径和请求/响应格式与 OpenAI 保持一致。
- 模型名称通过
model参数指定,聚合服务会路由到对应的上游提供商。 - 认证使用
Authorization: Bearer <你的聚合 key>。
OpenAI SDK(官方)
兼容性:直接可用
OpenAI 官方 SDK 是最直接的。初始化客户端时传入 baseurl 和 apikey 即可。
from openai import OpenAI
client = OpenAI(
base_url="https://你的聚合服务地址/v1",
api_key="你的聚合key"
)
response = client.chat.completions.create(
model="claude-3-5-sonnet", # 实际模型名以聚合服务文档为准
messages=[{"role": "user", "content": "Hello"}]
)
注意:部分模型可能不支持 OpenAI 的所有参数(如 logprobs、response_format 等),具体取决于上游提供商的实现。
Anthropic SDK(官方)
兼容性:需要适配层
Anthropic SDK 使用自己的 API 格式(/v1/messages),与 OpenAI 格式不兼容。如果你希望用 Anthropic SDK 调用聚合服务上的 Claude 模型,有两种方式:
- 使用聚合服务提供的 Anthropic 兼容端点(如果支持)。
- 使用 OpenAI SDK 调用 Claude 模型(通过 OpenAI 兼容端点)。
大多数聚合服务主要提供 OpenAI 兼容端点,因此推荐直接用 OpenAI SDK 调用 Claude。
LangChain
兼容性:直接可用(通过 ChatOpenAI)
LangChain 的 ChatOpenAI 类支持自定义 base_url,因此可以直接连接聚合服务。
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="gpt-4o", # 或聚合服务支持的其他模型
base_url="https://你的聚合服务地址/v1",
api_key="你的聚合key"
)
LangChain 的许多功能(如工具调用、结构化输出)依赖于底层模型的能力。如果某个模型不支持这些特性,相应功能可能无法使用。
LlamaIndex
兼容性:直接可用(通过 OpenAILike)
LlamaIndex 提供了 OpenAILike 类,用于连接任何 OpenAI 兼容的 API。
from llama_index.llms.openai_like import OpenAILike
llm = OpenAILike(
model="qwen-max",
api_base="https://你的聚合服务地址/v1",
api_key="你的聚合key",
is_chat_model=True
)
同样,高级功能(如函数调用)的可用性取决于模型本身。
Vercel AI SDK
兼容性:直接可用(通过 OpenAI 兼容提供者)
Vercel AI SDK 支持自定义 OpenAI 兼容提供者。你可以使用 @ai-sdk/openai 包并传入自定义 baseURL。
import { createOpenAI } from '@ai-sdk/openai';
const openai = createOpenAI({
baseURL: 'https://你的聚合服务地址/v1',
apiKey: '你的聚合key',
});
const result = await generateText({
model: openai('deepseek-chat'),
prompt: 'Hello',
});
其他工具与注意事项
- cURL / HTTP 客户端:直接发送 POST 请求到
/v1/chat/completions即可。 - 流式响应:大多数 OpenAI 兼容端点支持
stream: true,但需确认聚合服务是否透传流式响应。 - 模型名称:不同聚合服务对模型名称的命名可能不同,请以服务文档为准。
- 参数差异:某些模型可能忽略或拒绝 OpenAI 特有参数,建议查阅聚合服务的模型说明。
总结
只要工具支持自定义 OpenAI 端点,就能通过聚合服务使用多模型。OpenAI SDK、LangChain、LlamaIndex、Vercel AI SDK 都可以直接配置使用。Anthropic SDK 由于协议不同,通常需要适配层或改用 OpenAI SDK。在接入前,建议先查看聚合服务文档中关于端点地址、模型列表和参数兼容性的说明。