OpenAI 兼容 API

使用 Chat Completions 接口完成对话,了解参数、SDK 地址与协议兼容边界。

查看 Markdown

适用场景

Chat Completions 是多轮对话的基本接口。应用提交本轮问题及需要保留的历史消息,读取助手回复,再把回复加入下一轮历史。对话历史由应用维护,不会因为复用 API Key 自动关联。

本文以 GFW 模型 ID deepseek-v4-pro 演示。请先在 模型库 确认模型仍可用、账号有权访问;模型 ID 不应添加上游厂商名称或路径前缀。示例用于展示请求格式,响应示意不是实测结果。

端点与鉴权

项目值
对话请求POST https://api.gfw.net/v1/chat/completions
SDK base_urlhttps://api.gfw.net/v1
鉴权Authorization: Bearer $GFW_API_KEY
请求格式Content-Type: application/json
旧式文本补全POST /v1/completions

/v1/completions 使用 prompt 而不是 messages,返回内容通常从 choices[].text 读取。端点存在不代表所有对话模型支持旧式补全;新应用优先使用 Chat Completions。控制台登录 Token 不能替代模型 API Key。

请求参数

字段类型必填说明
modelstring是GFW 模型 ID,例如 deepseek-v4-pro
messagesarray是非空消息列表;基础文本消息包含 role 和 content
messages[].rolestring是常用 system、user、assistant;工具交互还使用 tool
messages[].contentstring文本消息是消息文本;多模态和工具消息有不同结构,不能套用文本消息格式
temperaturenumber否网关前置校验范围为 0–2;具体模型可接受范围可能更窄
top_pnumber否网关前置校验范围为 0–1;是否支持由模型决定
max_tokensinteger否输出上限;建议使用正整数并遵守模型输出限制
streamboolean否true 请求 SSE,示例显式使用 false
tools、tool_choicearray / string / object否条件能力,详见 工具调用
response_formatobject否条件能力,详见 结构化输出

文档中的基础消息结构适合普通文本;多模态消息和工具调用会使用不同的 messages、content、tool_calls / tool 结构,具体扩展字段是否可用要看所选模型与通道。网关能接收一个字段,不代表所有上游都实现它。通常只调整 temperature 或 top_p 中的一项,避免难以判断采样变化的来源。

完整调用示例

在运行环境中设置 GFW_API_KEY。Python 示例依赖 openai 包,密钥仅从环境变量读取。

curl --fail-with-body --silent --show-error \
  --max-time 120 \
  https://api.gfw.net/v1/chat/completions \
  -H "Authorization: Bearer ${GFW_API_KEY:?请先设置 GFW_API_KEY}" \
  -H 'Content-Type: application/json' \
  --data '{
    "model": "deepseek-v4-pro",
    "messages": [
      {"role": "system", "content": "用简洁的中文回答。"},
      {"role": "user", "content": "解释 HTTP 幂等请求的含义。"}
    ],
    "max_tokens": 512,
    "stream": false
  }'

示例关闭 SDK 自动重试,以免排查时重复提交。生产应用应按 错误码与重试 制定有界重试策略。

响应字段

以下为字段结构示意,ID、文本与 Token 数值均为示例:

{
  "id": "chatcmpl_example",
  "object": "chat.completion",
  "model": "deepseek-v4-pro",
  "choices": [
    {
      "index": 0,
      "message": {"role": "assistant", "content": "幂等请求重复执行时具有相同的预期效果。"},
      "finish_reason": "stop"
    }
  ],
  "usage": {"prompt_tokens": 32, "completion_tokens": 24, "total_tokens": 56}
}
字段处理建议
id保存为响应标识;排障还应保存响应头中的请求标识(若提供)
choices[].message.content最终文本;工具调用时可能为空,不应直接当作失败
choices[].message.tool_calls工具请求,由应用执行并回传,不是网关执行结果
choices[].finish_reasonstop 通常表示自然结束;length 表示达到上限;工具模式可能返回 tool_calls
usage接口返回的用量;账单金额以平台用量记录与 元流水为准

兼容边界与相关文档

  • 文本、图片生成和视频生成使用不同端点,不要把生成图片或视频的模型放进聊天模板。
  • 视觉输入需要支持视觉的模型。对话代理的图片校验只允许 Base64 Data URI,不能直接提交外部图片 URL;这不是图片生成接口的通用输入规则。
  • 兼容 OpenAI 请求格式不意味着 Files、Batch、音频或其他官方接口已开放。本文不为未核对的端点提供调用承诺。
  • 流式返回需要逐事件处理,不能一次性调用 JSON 解析。

继续阅读:Responses API、流式输出、API Key 与鉴权、计费与充值。

本页目录