api
OpenAI 兼容 API 调用指南
直接答案本站 OpenAI 兼容接口使用 Bearer 令牌;Responses、Chat Completions 与媒体端点拥有不同对象和流式语义,需按目标模型选择。
更新 · 审核信息
先选对接口
OpenAI 官方推荐所有新项目优先使用 Responses API;Chat Completions 仍受支持,适合保留既有 messages 与 choices 集成。Embedding、图像、音频和视频拥有独立资源,不能把所有任务都发送到对话端点。本站兼容哪些端点还取决于模型和渠道,先在模型广场确认精确 ID 与端点。
使用 Responses 完成最小调用
本站使用 Authorization: Bearer。Responses 把模型名和输入放入 JSON;以下请求仅在目标模型与渠道支持 /v1/responses 时有效:
curl "$BASE_URL/v1/responses" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"MODEL_NAME","input":"只回复:连接成功"}'
Responses 返回类型化的 output items。SDK 的 output_text 适合快速取得简单最终文本,但通用客户端要遍历 output 并按 type 处理消息、工具调用和其他项目,不能假设 output[0] 永远是正文。
兼容旧应用的 Chat Completions
既有应用仍可调用 /v1/chat/completions,正文通常位于 choices[0].message.content,并读取 finish_reason 与 usage。不要只把 Chat 路径替换为 Responses:input/output、工具结果、多轮续接和流式事件都不同。
curl "$BASE_URL/v1/chat/completions" \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{"model":"MODEL_NAME","messages":[{"role":"user","content":"只回复:连接成功"}]}'
多轮状态与上下文
Responses 可用 previous_response_id 续接,但顶层 instructions 不会自动继承,应在后续轮次重发。历史输入仍会计费并占用上下文,不等于免费无限记忆。需要自行控制数据保存时,应明确存储策略并保存协议要求的完整 output items。
工具调用由应用闭环
自定义函数流程是:声明工具、接收调用、服务端验证名称与参数、执行受控操作、回传结果、继续获取答案。模型生成的 JSON 不是可信授权。文件、网络、金额和收件人必须重新校验,并设置超时、幂等、最小权限和人工确认。
流式解析与完成条件
Responses 与 Chat 都可通过 SSE 流式返回,但事件结构不同。按空行读取完整 event/data,容忍未知事件类型,并以协议定义的完成事件为准;不要把任意 TCP 分片直接交给 JSON 解析器。流式结束时保存停止原因和可能的错误事件;用量字段是否出现及是否需要显式开启,必须按端点和渠道核验。
错误、限流与重试
401 检查密钥、组织或 IP 限制;本站或具体资源的 404 需检查路径与模型;429 可能来自临时速率、余额或消费上限;5xx 才通常属于临时服务故障。临时 429 优先遵循 Retry-After,否则使用带抖动的指数退避,并限制次数与总时长。失败请求也可能占用速率预算,立即无限重试会放大故障。
用量、安全与兼容边界
保存响应 usage,长输入在发送前预估 token,并为用户设置最大输出、速率与费用上限。API Key 只放在服务端秘密管理器,泄露后立即撤销轮换。本站不保证实现 OpenAI 的每个 beta 字段;结构化输出、推理强度、并行工具、图像输入、存储和缓存都要用目标模型做字段级契约测试。
适用场景
- 文本与结构化输出
- 向量检索
- 图像、语音和视频生成
API 协议
/v1/chat/completions/v1/responses/v1/embeddings/v1/images/generations/v1/audio/speech/v1/videos
FAQ
新项目应该选择 Responses 还是 Chat Completions?
OpenAI 官方推荐新项目使用 Responses;已有 messages/choices 集成可继续使用 Chat Completions。通过本站调用前,还要确认目标模型和渠道实际支持对应端点。
Responses 的正文是否总在 output[0]?
不是。output 是类型化 items,可能交错推理、工具与消息;简单 SDK 可读 output_text,通用客户端应遍历 output 并按 type 解析。
使用 previous_response_id 后还要发送 instructions 吗?
要。OpenAI 官方说明顶层 instructions 不会随 previous_response_id 自动继承;历史输入仍会计入 token,用量和上下文都要持续管理。
所有 429 都可以等待后重试吗?
不可以。临时限流可遵循 Retry-After 或有限退避;余额、组织/项目消费上限和需要人工处理的配额错误不能靠重试恢复。
API Key 可以放在浏览器或 App 中吗?
不可以把长期密钥交给不受信任的客户端。密钥应保存在服务端环境变量或秘密管理器中,并设置权限、支出限制、轮换和泄露告警。
关联指南
官方来源
- OpenAI API Reference Official
- OpenAI Developer Quickstart Official
- Migrate to the Responses API Official
- OpenAI Streaming Responses Official
- OpenAI Function Calling Official
- OpenAI Token Counting Official
- OpenAI Production Best Practices Official
- OpenAI Error Codes Official
- OpenAI Rate Limits Official
兔子API