sdk-compatibility-matrix · ZH · 2026-10-21

哪些 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 模型,有两种方式:

  1. 使用聚合服务提供的 Anthropic 兼容端点(如果支持)。
  2. 使用 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。在接入前,建议先查看聚合服务文档中关于端点地址、模型列表和参数兼容性的说明。