用 OpenAI 兼容的 /chat/completions 接口
介绍如何通过 OpenAI 兼容的 /chat/completions 接口调用聚合站,在不改动现有 SDK 代码的前提下,仅修改 base_url 和 API key,即可切换至多个模型(如 Claude、GPT、DeepSeek 等)。内容涵盖请求格式、模型指定、流式响应以及常见注意事项。
为什么用 /chat/completions 接口
聚合站提供与 OpenAI 兼容的 REST 接口 /chat/completions,这意味着你可以直接使用 OpenAI 官方 SDK、LangChain 等成熟的客户端库,只需修改 baseurl 和 apikey,就能调用多个不同厂商的模型。无需学习新的 API 规范,也不需要为每个模型单独编写适配层。
如何配置 base_url
在代码中初始化客户端时,将 baseurl 指向聚合站的 API 地址,并将 apikey 替换为你在聚合站申请的密钥。
Python(openai 库)
from openai import OpenAI
client = OpenAI(
base_url="https://your-aggregator.com/v1", # 替换为聚合站提供的地址
api_key="sk-your-aggregator-key" # 替换为你的密钥
)
LangChain 示例
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="claude-3-opus", # 模型名由聚合站定义
openai_api_key="sk-your-aggregator-key",
openai_api_base="https://your-aggregator.com/v1"
)
Node.js(openai 包)
import OpenAI from 'openai';
const client = new OpenAI({
baseURL: 'https://your-aggregator.com/v1',
apiKey: 'sk-your-aggregator-key'
});
发起请求
请求体格式与 OpenAI 完全一致,只需在 model 字段中填入聚合站支持的模型标识。
response = client.chat.completions.create(
model="gpt-4o",
messages=[
{"role": "user", "content": "你好,介绍一下你自己。"}
],
stream=False
)
print(response.choices[0].message.content)
支持的模型标识
聚合站通常允许调用多个模型,例如 Claude、GPT、DeepSeek、Qwen、GLM、Kimi 等。具体标识请参考聚合站的模型列表文档。切换模型只需修改 model 字段,无需调整其他参数。
流式响应
将 stream=True 即可获得与 OpenAI 一致的流式输出体验。
for chunk in client.chat.completions.create(
model="deepseek-chat",
messages=[{"role": "user", "content": "写一首短诗"}],
stream=True
):
if chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="")
计费与用量
用户按模型官方价格乘以 1.3 进行扣费;贡献 API key 的用户,按官方价格乘以 1.1(优质 key 乘以 1.2)获得 USDC 返利。该计费方式与 OpenAI 的 usage 字段无关,具体扣费金额以聚合站账单为准。
注意事项
- 模型名称:不同聚合站对同一模型的命名可能不同,务必查阅文档确认。
- 上下文长度:各模型支持的上下文窗口不同,超长请求可能被拒绝。
- 错误处理:接口会返回标准 HTTP 状态码(如 400、429),建议按 OpenAI 官方建议处理错误。
- 参数兼容性:并非所有 OpenAI 参数都适用于所有模型(如
logprobs),建议先查阅聚合站说明。
总结
通过标准的 /chat/completions 接口,你可以用最熟悉的 SDK 快速接入聚合站,实现多模型调用。仅需修改 baseurl 和 apikey,即可在 OpenAI、LangChain 等生态中无缝切换模型。