AI API 聚合平台:190+ 大模型、图像与视频模型

AI API 聚合平台支持 OpenAI SDK 吗?

更新于 2026-11-02 · apimart.cyou

简答:支持,但要把“能使用 OpenAI SDK”理解为兼容指定 HTTP 接口,而不是所有模型和高级参数都与原生 API 完全相同。以 2026 年 11 月 2 日检索到的 APIMart 文档为例,聊天接口明确标注兼容 OpenAI Chat Completions 格式,并展示 Python、Node.js 和 curl 示例;实际接入仍需逐项核对 Base URL、API Key、模型 ID、接口类型和参数。通常迁移先改三处:Base URL、服务商 Key、可用模型 ID。

定义:OpenAI SDK 兼容,是指服务商提供能被 OpenAI 官方客户端调用的接口形态,通常复用 Bearer 认证、模型字段和聊天请求结构,但不自动保证所有模型、参数、响应字段或异步任务都一致。

先看结论:哪些内容可以直接迁移,哪些必须重新核对

本文是面向开发者的第三方接入指南,不代表任何品牌官方立场。结论先说清楚:AI API 聚合平台可以支持 OpenAI SDK,但兼容范围取决于服务商实际实现和具体模型。当前 APIMart 文档将通用聊天接口标注为兼容 OpenAI Chat Completions 格式,并给出 https://api.apimart.ai/v1/chat/completions 示例;其文档索引同时列出模型列表、文本、图像、视频、音频和任务管理接口。可在当前 API 文档索引中按接口类型复核。

检查项当前资料可以确认不能直接推断
OpenAI SDK官方 Python、Node.js SDK 都支持自定义 Base URL;服务商文档展示了对应配置示例所有 SDK 高级能力都可用
Base URL主文档和通用聊天页展示 https://api.apimart.ai/v1所有接口、时间和模型永久使用同一层级
认证请求示例使用 Authorization: Bearer可以继续使用原服务商 API Key
模型参数使用请求中的 model 字段选择模型模型展示名一定等于可调用的模型 ID
聊天能力普通 Chat Completions 和流式参数有明确示例工具调用、JSON 输出、嵌入和批处理已全部确认
图像、视频文档单独列出图像、视频和任务状态接口可以直接套用聊天方法完成全部任务

最短判断方法:先从当前模型接口获取可用模型,再使用一个不含敏感数据的短文本请求验证认证、路径、模型和响应结构。普通聊天成功后,再单独测试流式输出、工具调用、结构化输出或多模态能力。

可复制接入:安装、变量、Python、Node.js 与 curl

  1. 先检查运行环境。OpenAI Python SDK 当前仓库 README 写明支持 Python 3.10 及更高版本;这是 SDK 的运行环境要求,不是聚合平台的要求。Node.js 的最低运行版本不要凭经验填写,应以当前 openai 包元数据和仓库政策核验。Python SDK 的安装与环境说明可查看官方 Python SDK 仓库。
  2. 安装依赖。Python 执行 python -m pip install openai;Node.js 执行 npm install openai。如果项目使用锁文件,应保留锁文件并在安装后检查实际版本。
  3. 设置变量。Linux、macOS 或类 Unix shell 可执行 export APIMART_API_KEY='替换为你的服务商 Key' 和 export APIMART_MODEL='从模型接口复制的 ID'。Windows PowerShell 可执行 $env:APIMART_API_KEY='替换为你的服务商 Key' 和 $env:APIMART_MODEL='从模型接口复制的 ID'。真实 Key 不要写入前端、代码仓库、截图或日志。
  4. 确认 Base URL 层级。OpenAI Python SDK 使用参数名 base_url,Node.js SDK 使用 baseURL;两者都支持自定义 OpenAI 兼容端点。Python SDK 也读取 OPENAI_BASE_URL,Node.js SDK 当前客户端文档同样列出该环境变量,但本文示例优先使用显式参数,避免环境变量被其他项目继承。相关配置可分别查看Python SDK 文档和Node.js SDK 认证文档。

Python 最小示例:

import os
from openai import OpenAI

client = OpenAI(
api_key=os.environ["APIMART_API_KEY"],
base_url="https://api.apimart.ai/v1",
)

result = client.chat.completions.create(
model=os.environ["APIMART_MODEL"],
messages=[{"role": "user", "content": "只回复:连接测试成功"}],
)

print(result.choices[0].message.content)

成功判定至少包括:HTTP 请求没有认证或路径错误、响应体可以解析、存在可读取的文本内容。不要把“请求没有抛异常”作为唯一成功标准。

Node.js ESM 最小示例:

import OpenAI from "openai";

const client = new OpenAI({
apiKey: process.env.APIMART_API_KEY,
baseURL: "https://api.apimart.ai/v1",
});

const result = await client.chat.completions.create({
model: process.env.APIMART_MODEL,
messages: [{ role: "user", content: "只回复:连接测试成功" }],
});

console.log(result.choices[0].message.content);

该示例使用 ESM 语法和顶层 await。如果项目不是 ESM,可将请求放入异步函数,或按项目现有模块配置调整;不要直接把 ESM 示例粘贴到 CommonJS 文件后再判断接口不兼容。

curl 最小示例:

export APIMART_BASE_URL='https://api.apimart.ai/v1'
curl "$APIMART_BASE_URL/chat/completions" \
-H "Authorization: Bearer $APIMART_API_KEY" \
-H "Content-Type: application/json" \
-d "{\"model\":\"$APIMART_MODEL\",\"messages\":[{\"role\":\"user\",\"content\":\"只回复:连接测试成功\"}]}"

这里的 APIMART_BASE_URL 是 SDK 或手工请求使用的基础路径,示例已经包含 /v1,后面只拼接 /chat/completions。需要特别注意:当前非流式文档页面的部分示例出现了 /api/v1/chat/completions,而文档首页、模型列表页和通用聊天页展示的是 /v1。因此发生 404 时,应以对应接口页面的最新示例和最终请求 URL 为准,不要同时叠加两个前缀。docs.apimart.ai

模型 ID、展示名和参数:不要只复制页面标题

迁移时最容易忽略的是“模型名称”不一定只有一种写法。模型页面可能显示一个便于阅读的名称,而请求实际需要的是模型列表返回的 id。当前模型列表接口是 GET /v1/models,文档说明默认返回基础字段;通过 expand=category 可增加类别和能力标签,通过 expand=parameters 可获取参数 JSON Schema。返回范围还受 API Key 的模型限制和所属分组影响,因此页面上看得到的模型不一定等于当前 Key 可以调用的全部模型。docs.apimart.ai

建议先运行:curl -s "https://api.apimart.ai/v1/models?expand=category" -H "Authorization: Bearer $APIMART_API_KEY",然后从返回对象的 data[].id 复制值,避免根据展示名手写模型参数。

迁移对象当前可确认情况上线前动作
普通聊天通用聊天页标注兼容 OpenAI Chat Completions 格式用短消息验证 messages、文本响应和错误结构
流式输出聊天文档给出 stream: true 示例确认客户端能否正确处理 SSE、结束事件和 usage 位置
工具调用当前检索到的通用聊天页未找到 tools 说明没有对应模型和接口证据时,不要默认可用
JSON 输出当前检索到的通用聊天页未找到 response_format 说明按模型参数 Schema 或专门文档验证
Embeddings本次检索到的文档索引未确认统一 Embeddings 接口以当前文档是否存在专门接口为准,未找到就标记未核实
批处理本次资料未确认统一 Batch 接口不要将普通聊天成功推导为支持批处理
图像与视频文档单独列出图像、视频和任务管理阅读对应模型接口,不直接复用聊天方法

这张表的重点不是把“未核实”当成“不支持”,而是避免把兼容宣传语扩大解释为全量能力。对于生产迁移,应该把每个模型的接口类型、必填字段、可选参数、响应字段和失败状态保存成一份配置清单。

同步、异步和回调:三种调用方式要分开处理

普通文本聊天通常是一次请求等待一次响应,适合先验证 SDK 是否接通。流式聊天则是在同一个请求中持续接收事件,不能只按普通 JSON 一次性读取。当前聊天文档分别提供默认流式和非流式页面,并在流式页展示 stream: true 的请求字段。docs.apimart.ai

图像和视频任务可能采用“创建任务—查询状态—读取结果”的异步模式。当前任务状态文档提供 GET /v1/tasks/{task_id},用于查询异步任务的状态和结果;任务回调文档说明,提交任务时可以提供顶层 webhook,服务端会在提供的基础地址后追加 /callback。docs.apimart.ai

  1. 提交任务后保存服务端返回的 task_id,不要把任务创建响应直接当作最终图片或视频地址。
  2. 如果使用轮询,按当前任务文档解析状态字段;遇到处理中状态时按有限间隔查询,设置总截止时间和最大次数。
  3. 如果使用回调,准备能接收 POST .../callback 的服务端接口,并校验回调内容中的任务标识。
  4. 出现失败状态时记录脱敏后的请求 ID、任务 ID、模型 ID 和错误类型,不记录 API Key。

当前资料没有证明所有图像和视频模型都使用完全相同的创建路径、状态字段或回调内容,因此异步模板只能作为流程框架,具体字段必须替换为目标模型页面给出的定义。

常见报错排查:凭据、最终 URL、模型、权限、最小请求

现象先检查什么处理建议
401Key 是否为空、是否多了空格、是否使用 Bearer、请求是否发往正确域名用服务商签发的 Key 重新测试,不要复用原服务商 Key
404最终 URL 是否重复或遗漏 /v1,路径是否适合目标接口打印最终 URL,再核对对应文档页;当前资料中存在 /v1 与 /api/v1 示例差异
模型不存在model 是否来自当前 Key 可见的模型列表调用 GET /v1/models,复制 data[].id,不要凭展示名猜测
402 或额度错误响应体是余额、配额、计费还是模型权限问题不要按普通 429 重试,先按当前控制台、模型页面和响应体核对
429限流、额度不足、账户状态还是其他错误只有确认是可恢复限流时,才依据 Retry-After 或服务商说明有限重试
超时模型是否是长任务、输入是否过大、是否发生网络连接问题设置总截止时间;图像或视频优先核对异步任务,不要无限延长同步等待

推荐固定使用这一顺序:凭据 → 最终 URL 与路径 → 模型 ID → 权限或区域 → 最小请求 → 响应体与日志。OpenAI Python SDK 当前仓库还说明,部分连接错误、408、409、429 和 500 以上错误默认会重试;Node.js SDK 当前客户端源码也列出默认超时和最大重试配置。对于聚合平台,不能因此推断所有错误都适合重试,尤其不能把余额不足、认证失败和模型不存在当作限流处理。github.com

通用判断标准:如何判断一个 AI API 聚合平台是否真的兼容

如果你使用的不是 APIMart,而是其他 AI API 聚合平台,可以用下面的证据清单判断,不要只看“兼容 OpenAI”几个字:

对于生产环境,还应将 API Key 放在服务端密钥管理系统中,限制日志内容,设置连接超时、总截止时间和有限重试,并对流式、异步任务和回调分别做集成测试。

常见问题

AI API 聚合平台支持 OpenAI Python SDK 吗?

通常可以,但前提是平台提供与 OpenAI SDK 预期结构相匹配的接口。当前检索到的 APIMart 文档明确展示 Python SDK 配置和 Chat Completions 接口;这只能证明对应接入路径可尝试,不能证明所有模型和高级参数完全兼容。

只改 Base URL 和 API Key 就一定能用吗?

不一定。还要使用当前 API Key 可见的模型 ID,并确认 Base URL 的路径层级、接口类型和模型参数。最稳妥的做法是先调用模型列表,再用一个短文本请求验证。

Python SDK 需要哪个版本?

当前检索到的官方 Python SDK 仓库 README 写明 Python 3.10 及以上;这属于 SDK 运行环境要求,不是聚合平台要求。具体 openai 包版本应以安装时的包元数据和项目锁文件为准,本文不把某个包版本当成长期固定结论。

Node.js 示例为什么不能直接运行?

如果项目不是 ESM,直接使用 <code>import</code> 和顶层 <code>await</code> 可能报模块或语法错误。可以按项目现有配置改为异步函数,或使用项目支持的模块形式;这类错误不等于 Base URL 或服务端不兼容。

为什么配置 SDK 后返回 404?

先打印最终 URL,检查是否重复拼接或遗漏 <code>/v1</code>,再确认是否使用了当前接口页面中的路径。当前检索到的资料中,通用页面主要展示 <code>/v1</code>,非流式页面部分示例出现 <code>/api/v1</code>,所以应以对应页面和实际响应为准。

图像、视频模型也能使用 chat.completions.create 吗?

不能默认这样做。当前文档把聊天、图像、视频和任务状态分开列出;视频还涉及异步任务状态和回调。应先查看目标模型的接口类型、创建请求、状态查询和结果字段。

429 可以让 OpenAI SDK 自动重试吗?

不能一概而论。先阅读响应体,区分限流、额度不足、计费状态和模型权限。只有确认是可恢复限流时,才根据 <code>Retry-After</code> 或服务商文档进行有限重试,并设置最大次数、最大等待和总截止时间。

相关阅读

参考资料

  1. APIMart API 文档索引与 OpenAI 兼容接口说明(docs.apimart.ai)
  2. APIMart 通用聊天 API:Chat Completions、流式参数与代码示例(docs.apimart.ai)
  3. APIMart 非流式聊天 API 示例(docs.apimart.ai)
  4. APIMart 模型列表与模型元数据接口(docs.apimart.ai)
  5. APIMart 异步任务状态查询接口(docs.apimart.ai)
  6. APIMart 任务回调 Webhook 说明(docs.apimart.ai)
  7. OpenAI 官方 Python SDK 仓库、安装、Python 要求与重试说明
  8. OpenAI 官方 Node.js SDK 认证与自定义 Base URL 说明
  9. OpenAI 官方 Node.js SDK 客户端配置与 Base URL、超时、重试参数