API

Chat Completions

使用 OpenAI-compatible Chat Completions 结构完成文本、视觉、工具调用与流式输出。

概述

Chat Completions 是最常用的对话接口。它接收一组 `messages`,返回模型生成的 assistant 消息;当 `stream` 为 `true` 时,响应以 SSE chunk 逐段返回。

UOUODUO Gateway 兼容主流 OpenAI SDK,也会把请求、模型、路由、token 和成本写入控制台日志。

请求

`POST https://api.example.com/v1/chat/completions`

Headers

Header必需说明
Authorization`Bearer $UOUODUO_API_KEY`
Content-Type`application/json`

Body 参数

参数类型必需默认说明
modelstring-模型 ID,例如 `gpt-4o-mini`
messagesarray<object>-对话消息列表
temperaturenumber1采样温度,范围 0 到 2
top_pnumber1nucleus sampling,范围 0 到 1
ninteger1返回候选数量
streambooleanfalse是否启用 SSE 流式响应
stream_optionsobject-可包含 `include_usage` 等流式选项
stopstring 或 array<string>-停止序列
max_tokensinteger-最大输出 token 数,legacy 字段
max_completion_tokensinteger-最大补全 token 数
presence_penaltynumber0主题新颖度惩罚,范围 -2 到 2
frequency_penaltynumber0重复频率惩罚,范围 -2 到 2
logit_biasobject-对特定 token 做概率偏置
userstring-终端用户标识,用于审计和风控
toolsarray<object>-工具定义,兼容 function calling
tool_choicestring 或 objectauto指定或限制工具调用
response_formatobject-JSON object / JSON schema 等输出约束
seedinteger-尽量稳定采样结果
reasoning_effortstring-推理强度:`low` / `medium` / `high`
modalitiesarray<string>-输出模态,例如 text、audio
audioobject-请求音频输出时的配置

示例

curl https://api.example.com/v1/chat/completions \
  -H "Authorization: Bearer $UOUODUO_API_KEY" \
  -H "Content-Type: application/json" \
  -d '{
    "model": "gpt-4o-mini",
    "messages": [
      { "role": "system", "content": "你是一个简洁的生产环境助手。" },
      { "role": "user", "content": "用三点总结本周上线风险。" }
    ],
    "temperature": 0.3
  }'

响应

同步响应

字段类型说明
idstring本次补全 ID
objectstring`chat.completion`
createdintegerUnix 秒级时间戳
modelstring实际执行的模型
choicesarray候选结果列表
choices[].messageobjectassistant 消息
choices[].finish_reasonstring`stop`、`length`、`tool_calls`、`content_filter` 等
usageobjectprompt / completion / total token 统计
system_fingerprintstring上游系统指纹,可能为空
{
  "id": "chatcmpl_abc",
  "object": "chat.completion",
  "created": 1779483000,
  "model": "gpt-4o-mini",
  "choices": [
    {
      "index": 0,
      "message": { "role": "assistant", "content": "1. ..." },
      "finish_reason": "stop"
    }
  ],
  "usage": {
    "prompt_tokens": 32,
    "completion_tokens": 80,
    "total_tokens": 112
  }
}

流式响应

设置 `"stream": true` 后,服务端会返回 `text/event-stream`。每个事件以 `data:` 开头,最后以 `data: [DONE]` 结束。

data: {"id":"chatcmpl_abc","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"第一"},"finish_reason":null}]}

data: {"id":"chatcmpl_abc","object":"chat.completion.chunk","choices":[{"index":0,"delta":{"content":"点"},"finish_reason":null}]}

data: [DONE]

如果设置 `stream_options.include_usage=true`,结束前可能会额外返回一个包含 `usage` 的 chunk;如果网络中断,最终 usage chunk 可能收不到,请以 `/app/logs` 为准。

错误

HTTPcode说明处理建议
400invalid_request_error请求体格式、参数范围或 messages 不合法按字段表校验请求
401unauthorizedAPI key 缺失、错误或过期重新在 `/app/keys` 创建 key
403forbiddenkey 没有访问模型或分组权限检查模型限制与项目预算
429rate_limit_exceededRPM/TPM/余额或上游限流参考 `/docs/guides/rate-limits`
500internal_error网关或上游异常记录 request id 并查看 `/status`

注意事项

  • Vision 输入需选择支持图像的模型,并用 content parts 传入 `image_url`。
  • 工具调用时模型可能返回不完整 JSON,服务端应对 `tool_calls[].function.arguments` 做校验。
  • 不同供应商对 `seed`、`reasoning_effort`、`response_format` 的支持并不完全一致。
  • 控制成本时优先设置 `max_completion_tokens`,并在 `/app/usage` 按 key 或 project 观察趋势。