门户首页
API Reference · 附录

OpenAI Chat Completions API · Schema 完整参考

POST /v1/chat/completions 的完整 schema 参考——Chat Completions 是 OpenAI 调用其模型 API(Application Programming Interface,应用程序接口)的经典对话协议(2023 至今的事实标准)。以下内容从 platform.openai.com/docs/api-reference/chat 浓缩,每个字段都给出类型、是否必填、默认值、用途说明。 本附录适合"想确认一个字段到底是什么意思、能不能传、传了会怎样"时翻阅;教学讲义请看姊妹讲义 llm-api-schema-reference.html(卡片化讲解)。

生成时间:2026-09-02 19:25 · 版本 v0.2 · 生成 Agent:MiniMax Code (LLM: MiniMax-M3) · 载体:agentsoft-research-platform teaching-web-platform

概览

1
HTTP 端点
~25
请求字段
~12
响应字段
5
role 类型
项目说明
本卡定位附录页 · 字段全、说明全,适合查阅
覆盖范围OpenAI Chat Completions 协议(v2023-06 起稳定)
权威来源platform.openai.com/docs/api-reference/chat(落地实现前请以官方文档为准)
兼容端点Ollama / vLLM / DeepSeek / DashScope / Together / Groq 等所有"OpenAI 兼容"端点都支持,行为可能略有差异
教学版llm-api-schema-reference.html 第一篇(含 4 张教学卡片 + Schema 全景)

1. 端点与认证

HTTP 调用
POST https://api.openai.com/v1/chat/completions
Authorization: Bearer <OPENAI_API_KEY>
Content-Type: application/json
端点说明
项目说明
方法POST(仅支持 POST)
URL/v1/chat/completions(v1 路径前缀)
认证头Authorization: Bearer <api-key>(注意是 Bearer,不是 Anthropic 的 x-api-key)
请求体application/json,UTF-8 编码
响应体application/json(非流式)/ text/event-stream(流式)
流式请求加 "stream": true,响应切到 text/event-stream(SSE,Server-Sent Events,服务器单向推送的流式传输)
兼容端点注意:Ollama / vLLM 等兼容服务有自己的 base URL(如 http://localhost:11434/v1)和 API key 配置方式(如 Ollama 通常无需 key)。代码要参数化 base_url 和认证头,不要硬编码 api.openai.com。

2. 请求对象 ChatCompletionRequest

除 model 和 messages 外全部字段可选——这是 OpenAI 协议"宽松 schema"的典型形态。

完整 TypeScript 类型
type ChatCompletionRequest = {
  // —— 必填 ——
  model: string,                          // 模型 ID("gpt-4o" / "gpt-5" / "deepseek-chat" ...)
  messages: MessageParam[],               // 对话历史(无状态全量回放)

  // —— 采样控制 ——
  temperature?: number,                   // 默认 1.0;推理模型忽略
  top_p?: number,                         // 默认 1.0(与 temperature 二选一)
  n?: number,                             // 生成几条候选,默认 1
  seed?: number,                          // 尽力而为的确定性
  stop?: string | string[],               // 最多 4 个停止序列

  // —— 长度控制 ——
  max_completion_tokens?: number,         // 新字段(推理模型时代)
  max_tokens?: number,                    // ⚠ deprecated,但兼容端点普遍只认它

  // —— 工具 ——
  tools?: ToolDefinition[],
  tool_choice?: "none" | "auto" | "required"
              | { type: "function", function: { name: string } },
  parallel_tool_calls?: boolean,          // 默认 true

  // —— 结构化输出 ——
  response_format?: { type: "text" }
                  | { type: "json_object" }
                  | { type: "json_schema", json_schema: {
                        name: string, schema: object, strict?: boolean } },

  // —— 流式 ——
  stream?: boolean,
  stream_options?: { include_usage?: boolean },

  // —— 惩罚与采样微调 ——
  presence_penalty?: number,              // -2.0 ~ 2.0
  frequency_penalty?: number,
  logit_bias?: Record<string, number>,
  logprobs?: boolean,
  top_logprobs?: number,

  // —— 元信息 ——
  user?: string,                          // 终端用户标识(OpenAI 滥用检测用)
  store?: boolean,                        // 是否存储请求/响应(用于 eval)
  metadata?: object,                      // 自定义键值对,16 个 key 限制
  service_tier?: "auto" | "default" | "flex",
  reasoning_effort?: "low" | "medium" | "high"   // 推理模型专属(o1/o3 系列)
}
请求字段表(按重要度排序)
字段必填类型默认值说明
model★string—模型 ID。"gpt-4o" / "gpt-5" / "o1" / "o3-mini" / "gpt-4o-mini" / 兼容端点的 "deepseek-chat" / "qwen-plus" 等
messages★MessageParam[]—对话历史数组,按时间序。协议是无状态的,每次请求带全量 history
temperature—number [0, 2]1.0采样温度,0 = 贪心(最确定),2 = 最发散。推理模型(o1/o3/gpt-5 reasoning)忽略此参数
top_p—number (0, 1]1.0nucleus 采样阈值。与 temperature 二选一调,同时调可能行为不稳定
n—number [1, ?)1生成几条候选。注意每条独立计 token,成本 × n
seed—numbernull尽力而为的确定性种子。不保证完全可复现(模型权重可能更新),仅"best effort"
stop—string | string[]null停止序列。模型遇到该字符串就停。最多 4 个
max_completion_tokens—numberinfinity最大生成 token 数。新字段(推理模型时代引入,max_tokens 已 deprecated)
max_tokens—numberinfinity⚠ deprecated,但 Ollama / vLLM / DeepSeek 等兼容端点普遍只认它。跨厂商代码要两个都发或按端点切换
tools—ToolDefinition[]null工具定义列表(声明"能做什么",不是"要做什么")
tool_choice—string | object"auto""none"(禁用工具)/ "auto"(模型自决)/ "required"(必须调)/ {type:"function",function:{name}}(强制调指定函数)
parallel_tool_calls—booleantrue是否允许一轮里并行调多个工具。设为 false 则一次只能调一个
response_format—object{type:"text"}结构化输出。3 种 type:"text"(默认)/ "json_object"(JSON(JavaScript Object Notation,人类可读的文本数据格式)模式)/ "json_schema"(强约束 schema)
stream—booleanfalse是否流式。true → 响应切到 SSE
stream_options—objectnull流式配置:include_usage 决定是否在最后一个 chunk 附 usage
presence_penalty—number [-2, 2]0对已出现的 token 施加惩罚。正值降低重复
frequency_penalty—number [-2, 2]0对出现频次施加惩罚。正值降低高频 token
logit_bias—Record<string, number>null对特定 token 调整采样概率。key 是 token id(字符串),value 是 -100~100 的偏置
logprobs—booleanfalse是否在响应中返回所选 token 的对数概率
top_logprobs—number [0, 20]0返回 top N 个候选 token 的对数概率。需要 logprobs: true
user—stringnull终端用户唯一标识。OpenAI 用于滥用检测和速率限制追踪。推荐传
store—booleanfalse是否存储请求/响应(用于 evals 和 dashboard)
metadata—objectnull自定义键值对,最多 16 个 key,每个 key 长度 ≤ 64,value 长度 ≤ 512
service_tier—enum"auto"服务等级。"auto"(自动)/ "default"(标准)/ "flex"(低价慢速)
reasoning_effort—enum"medium"推理强度。o1/o3/gpt-5 推理模型专属,其他模型忽略。"low" / "medium" / "high"
字段族分组(一图看全)
flowchart TB REQ["ChatCompletionRequest
除 model / messages 外全部可选"] REQ --> ID["身份与上下文
model ★ / messages ★"] REQ --> SM["采样控制
temperature / top_p / n / seed / stop
max_completion_tokens / penalties / logprobs"] REQ --> TL["工具
tools / tool_choice / parallel_tool_calls"] REQ --> SO["结构化输出
response_format
text / json_object / json_schema"] REQ --> ST["流式
stream / stream_options.include_usage"] REQ --> MT["元信息
user / store / metadata
service_tier / reasoning_effort"]
图 1 · ChatCompletionRequest 字段族分组:身份上下文 / 采样控制 / 工具 / 结构化输出 / 流式 / 元信息

3. 消息类型 MessageParam

5 种 role 各自有独立的字段约束——这是 Chat Completions 协议"扁平 message + role 判别"的典型形态。

5 种 role 一览
role用途必备字段可选字段来源
system系统指令(旧版)content—开发者
developer系统指令(2025+ 新增,更细粒度)content—开发者
user用户输入content—终端用户
assistant模型回复(回放历史用)—content, tool_calls, refusal模型
tool工具结果回填content, tool_call_id—客户端执行
完整类型定义
type MessageParam =
  // 系统指令(developer 是 2025 年新增的更细粒度角色)
  | { role: "system" | "developer",
      content: string | TextPart[] }

  // 用户输入(content 支持 string 或多模态部件数组)
  | { role: "user",
      content: string | (TextPart | ImageUrlPart | AudioPart)[] }

  // 模型回复(回放历史时用;tool_calls 是可选字段挂在同一层)
  | { role: "assistant",
      content?: string | null,            // 发起工具调用时可为 null!
      tool_calls?: ToolCall[],
      refusal?: string | null }

  // 工具结果(独立 role;tool_call_id 与 ToolCall.id 严格配对)
  | { role: "tool",
      content: string | TextPart[],
      tool_call_id: string }
多模态内容部件(仅 user 消息支持)
type字段说明
texttext: string纯文本
image_urlimage_url: { url: string, detail?: "auto"|"low"|"high" }图片 URL。url 可以是 https:// 或 data:image/...;base64,... 内嵌
input_audioinput_audio: { data: string, format: "wav"|"mp3" }音频(gpt-4o-audio-preview 等多模态模型支持)
schema 弱点(400 事故的结构根源):role 与字段的配对约束(tool 必带 tool_call_id、只有 assistant 可带 tool_calls)不体现在类型定义里,靠服务端运行时校验兜底。所以开发时容易写错(比如 user 消息带了 tool_calls),错误信息不直观。

4. 工具定义 ToolDefinition

完整类型定义
type ToolDefinition = {
  type: "function",                      // 固定为 "function"(预留非 function 扩展位)
  function: {
    name: string,                        // ^[a-zA-Z0-9_-]{1,64}(最多 64 字符)
    description?: string,                // 工具描述(模型看这段决定调不调)
    parameters?: JSONSchema,             // 标准 JSON Schema 对象
    strict?: boolean                     // true = 强约束模式(参数 100% 遵循 schema)
  }
}
字段表
字段必填类型说明
type★"function"工具类型。2026 年唯一合法值是 "function"(为未来非 function 工具预留)
function.name★string工具名。正则约束 ^[a-zA-Z0-9_-]{1,64},违反会 400
function.description—string工具描述。模型靠这段文字判断调不调、怎么调,建议写清楚"何时用、传什么、返回什么"
function.parameters—JSONSchema参数 schema。标准 JSON Schema 格式:{type, properties, required, ...}
function.strict—booleantrue = 强约束模式。模型生成的参数必须 100% 遵循 schema。注意:strict:true 在某些兼容端点会被静默忽略(详见姊妹 case study)
完整示例
{
  "type": "function",
  "function": {
    "name": "get_weather",
    "description": "查指定城市的当前天气。返回温度、天气状况、湿度。",
    "strict": true,
    "parameters": {
      "type": "object",
      "properties": {
        "city": {
          "type": "string",
          "description": "城市名,如 '北京' / '上海'"
        },
        "unit": {
          "type": "string",
          "enum": ["celsius", "fahrenheit"],
          "description": "温度单位"
        }
      },
      "required": ["city"],
      "additionalProperties": false
    }
  }
}

5. 响应对象 ChatCompletion

完整类型定义
type ChatCompletion = {
  id: string,                            // "chatcmpl-...",每次请求唯一
  object: "chat.completion",
  created: number,                       // unix 秒
  model: string,                         // 实际使用的快照版(与请求可能不同)
  choices: [{
    index: number,                       // n>1 时区分候选
    message: {
      role: "assistant",
      content: string | null,            // 工具调用时可为 null
      tool_calls?: ToolCall[],
      refusal?: string | null,
      annotations?: Annotation[]
    },
    finish_reason: "stop" | "length" | "tool_calls"
                 | "content_filter" | "function_call",   // 末项 legacy
    logprobs?: object
  }],
  usage: {
    prompt_tokens: number,
    completion_tokens: number,
    total_tokens: number,
    prompt_tokens_details?: { cached_tokens?: number, audio_tokens?: number },
    completion_tokens_details?: { reasoning_tokens?: number }
  },
  system_fingerprint?: string            // 后端运行时指纹(用于追踪模型版本)
}

type ToolCall = {
  id: string,                            // "call_...",回填配对用
  type: "function",
  function: {
    name: string,
    arguments: string                    // ⚠ JSON 字符串,不是对象!需 json.loads + 防御
  }
}
顶层字段表
字段类型说明
idstring响应 ID,每次请求都不同。不能当幂等键
object"chat.completion"对象类型标识(流式是 "chat.completion.chunk")
creatednumber响应创建的 unix 时间戳(秒)
modelstring实际使用的模型快照版本,可能与请求时不同(如请求 "gpt-4o" 实际是 "gpt-4o-2024-08-06")
choicesChoice[]候选回复列表。默认 1 个,n>1 时多个
usageUsagetoken 使用情况。流式模式下默认不返回,需 stream_options.include_usage: true
system_fingerprintstring后端运行时指纹。可以用它判断"模型是否静默切换到新版本"导致行为变化
Choice 字段表
字段类型说明
indexnumber候选索引(n>1 时 0/1/2...)
messageMessageassistant 消息,手写 Agent 唯一会读的对象
finish_reasonenum循环分支唯一依据。5 个值:"stop"(自然结束)/ "length"(撞 max_tokens 截断)/ "tool_calls"(要调工具)/ "content_filter"(触安全策略)/ "function_call"(legacy)
logprobsobject所选 token 的对数概率。需要请求时 logprobs: true
Message 字段表
字段类型说明
role"assistant"固定为 "assistant"
contentstring | null文本内容。工具调用时可为 null——别用 if message.content 判断循环结束
tool_callsToolCall[]工具调用列表。空数组 / undefined = 不调工具
refusalstring | null模型拒绝时的解释。出现时 content 通常为 null
annotationsAnnotation[]引用 / citation 等富化信息(如 web search 工具的引用源)
ToolCall 字段表
字段类型说明
idstring"call_..." 配对键。回填到 role:"tool" 消息的 tool_call_id 字段,配错就 400
type"function"工具类型
function.namestring工具名(与 tools[].function.name 对应)
function.argumentsstring⚠ JSON 字符串,不是对象!需 json.loads() + try/except 防御
Usage 字段表
字段类型说明
prompt_tokensnumber输入 token 数
completion_tokensnumber输出 token 数
total_tokensnumber合计(prompt + completion)
prompt_tokens_details.cached_tokensnumberprompt 中命中缓存的 token 数(用于成本面板)
prompt_tokens_details.audio_tokensnumberprompt 中音频 token 数
completion_tokens_details.reasoning_tokensnumber推理 token 数(o1/o3 系列专属,单独计费)
finish_reason 5 个值详解
值含义Agent 主循环如何处理
"stop"自然结束(遇到 stop token 或 stop 序列)收尾、提交答案、退出循环
"length"撞 max_tokens / max_completion_tokens 被截断扩预算或续写,不要盲目重试(同样输入大概率同样截断)
"tool_calls"模型要求调工具执行工具 → role:"tool" 回填 → 再次请求(核心循环)
"content_filter"触发安全策略降级 / 改写 / 上报 / 终止
"function_call"legacy 值(OpenAI 老版本"function calling"机制)当 tool_calls 处理,不推荐新代码依赖

6. 流式 chunk ChatCompletionChunk

请求加 "stream": true 时,服务端返回 SSE 流。增量在 delta 而非 message。

完整类型定义
type ChatCompletionChunk = {
  id: string,                            // 与非流式响应同一 id
  object: "chat.completion.chunk",        // 与非流式响应 object 不同!
  created: number,
  model: string,
  choices: [{
    index: number,
    delta: {                             // 增量在 delta(与 message 平级对应)
      role?: "assistant",                // 首个 chunk 携带
      content?: string | null,           // 文本分片
      tool_calls?: [{                    // 工具调用分片
        index: number,                   // ★ 聚合键:按 index 拼 name/arguments
        id?: string,                     // 仅首个分片携带
        type?: "function",
        function?: { name?: string, arguments?: string }
      }],
      refusal?: string | null
    },
    finish_reason?: string | null        // 仅最后一个 chunk 携带
  }]
}
// 终止哨兵:data: [DONE](SSE 流的最后一条)
流式字段聚合规则
  1. delta.content:每个 chunk 的 content 顺序拼接 = 完整文本
  2. delta.tool_calls:必须按 index 聚合——同一个 tool_call 可能分多个 chunk 到达;先拼 name,再拼 arguments
  3. arguments 是 JSON 字符串,拼接完整后再一次性 json.loads,中途解析必然失败
  4. [DONE] 是终止哨兵,收到即关闭连接,不解析它
  5. finish_reason 出现在最后一个 chunk的 delta 旁——不是单独的字段
  6. 想拿 usage:请求加 stream_options: {include_usage: true},最后一个 chunk 会有 usage 字段(choices 为空数组)

7. 完整往返示例(工具调用最小环)

4 段 JSON 展示从"用户提问"到"模型完成工具调用"的全过程。

① 请求:用户问"跑一下测试",声明 run_tests 工具
{
  "model": "gpt-4o",
  "messages": [
    {"role": "user", "content": "跑一下测试"}
  ],
  "tools": [{
    "type": "function",
    "function": {
      "name": "run_tests",
      "parameters": {
        "type": "object",
        "properties": {"suite": {"type": "string"}},
        "required": ["suite"]
      }
    }
  }]
}
② 响应:模型要求调工具(finish_reason = tool_calls)
{
  "id": "chatcmpl-abc123",
  "object": "chat.completion",
  "created": 1725273600,
  "model": "gpt-4o-2024-08-06",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": null,
      "tool_calls": [{
        "id": "call_abc",
        "type": "function",
        "function": {
          "name": "run_tests",
          "arguments": "{\"suite\":\"all\"}"
        }
      }]
    },
    "finish_reason": "tool_calls"
  }],
  "usage": {
    "prompt_tokens": 88,
    "completion_tokens": 12,
    "total_tokens": 100
  }
}
③ 回填请求:append 两条消息(assistant 原样 + tool 结果)
{
  "model": "gpt-4o",
  "messages": [
    {"role": "user", "content": "跑一下测试"},
    {"role": "assistant", "content": null, "tool_calls": [
      {"id": "call_abc", "type": "function",
       "function": {"name": "run_tests", "arguments": "{\"suite\":\"all\"}"}}
    ]},
    {"role": "tool", "tool_call_id": "call_abc", "content": "42 passed"}
  ],
  "tools": [
    {"type": "function", "function": {
      "name": "run_tests",
      "parameters": {"type": "object",
        "properties": {"suite": {"type": "string"}},
        "required": ["suite"]}
    }}
  ]
}
④ 最终响应:模型总结(finish_reason = stop)
{
  "id": "chatcmpl-def456",
  "object": "chat.completion",
  "created": 1725273610,
  "model": "gpt-4o-2024-08-06",
  "choices": [{
    "index": 0,
    "message": {
      "role": "assistant",
      "content": "测试全部通过。"
    },
    "finish_reason": "stop"
  }],
  "usage": {
    "prompt_tokens": 142,
    "completion_tokens": 8,
    "total_tokens": 150
  }
}

8. 错误码与异常

两层错误:HTTP 层(传输)+ finish_reason 层(协议)。两层正交,必须分别处理。

HTTP 错误(4xx / 5xx)
状态码含义常见原因
400请求格式错误JSON 解析失败 / 必填字段缺失 / role 配字段错(如 user 带 tool_calls)/ tool_call_id 配不上
401认证失败API key 错 / 过期
403权限不足API key 没权访问该模型 / region 限制
404端点不存在URL 拼错 / 模型 ID 不存在
429速率限制TPM / RPM 超限。读 Retry-After 头
500服务端错误OpenAI 内部问题。指数退避重试
503服务不可用维护中或过载。指数退避重试
协议层错误(HTTP 200 + finish_reason 表示)
finish_reason含义Agent 主循环如何处理
"content_filter"内容被安全策略拦截message.refusal 有原因;降级 / 改写 / 上报
"length"撞 max_tokens 截断扩 max_completion_tokens 续写,不要盲重试
关键认知:HTTP 200 + finish_reason: "length" 是"传输成功但协议失败"——只看 HTTP 状态码会误以为成功。永远查 finish_reason。

9. 字段速查表(按字段名字母序)

字段位置必填类型一句话
annotations响应 message—Annotation[]引用 / citation 等富化
arguments响应 tool_calls[].function★stringJSON 字符串,需 json.loads
cache_control———OpenAI 无此字段(Anthropic 有)
cached_tokens响应 usage.prompt_tokens_details—number命中缓存的 prompt token 数
choices响应顶层★Choice[]候选回复列表
completion_tokens响应 usage—number输出 token 数
completion_tokens_details响应 usage—object含 reasoning_tokens(推理模型)
content请求 messages[].* / 响应 message / 流式 delta★(user/system/tool)string | Part[]消息内容。assistant 工具调用时为 null
created响应顶层—numberunix 时间戳(秒)
description请求 tools[].function—string工具描述,模型看这段决定调不调
detail请求 image_url—"auto"|"low"|"high"图片处理精度(影响 token 数)
frequency_penalty请求顶层—number对出现频次施加惩罚
finish_reason响应 choices[]—enum循环分支唯一依据
function请求 tools[] / 响应 tool_calls[]★object工具函数描述或调用
id响应顶层 / 响应 tool_calls[]—string响应 ID / 工具调用配对键
include_usage请求 stream_options—boolean流式最后一个 chunk 是否带 usage
index响应 choices[] / 流式 delta.tool_calls[]—number候选索引 / 工具分片聚合键
logit_bias请求顶层—Record特定 token 概率偏置
logprobs请求顶层 / 响应 choices[]—boolean | object返回 token 对数概率
max_completion_tokens请求顶层—number最大生成 token 数(新字段)
max_tokens请求顶层—number最大生成 token 数(旧字段,兼容端点)
message响应 choices[]—objectassistant 消息
messages请求顶层★MessageParam[]对话历史(全量回放)
metadata请求顶层—object自定义键值对,最多 16 个 key
model请求顶层 / 响应顶层★string模型 ID
n请求顶层—number生成几条候选
name请求 tools[].function / 响应 tool_calls[].function★string工具名
object响应顶层—"chat.completion"对象类型标识
parallel_tool_calls请求顶层—boolean是否允许一轮并行调多个工具
parameters请求 tools[].function—JSONSchema工具参数 schema
presence_penalty请求顶层—number对已出现 token 施加惩罚
prompt_tokens响应 usage—number输入 token 数
prompt_tokens_details响应 usage—object含 cached_tokens / audio_tokens
reasoning_effort请求顶层—enum推理强度(推理模型专属)
reasoning_tokens响应 usage.completion_tokens_details—number推理 token 数(单独计费)
refusal响应 message—string | null模型拒绝原因
response_format请求顶层—object结构化输出
role请求 messages[] / 响应 message★enum消息身份(5 种)
seed请求顶层—number尽力而为的确定性种子
service_tier请求顶层—enum服务等级
stop请求顶层—string | string[]停止序列(最多 4 个)
store请求顶层—boolean是否存储请求/响应
stream请求顶层—boolean是否流式(SSE)
stream_options请求顶层—object流式配置
strict请求 tools[].function—boolean强约束模式(部分端点静默忽略)
system_fingerprint响应顶层—string后端运行时指纹
temperature请求顶层—number采样温度 [0, 2]
tool_call_id请求 messages[role="tool"]★string与 tool_calls[].id 严格配对
tool_calls请求 messages[role="assistant"] / 响应 message—ToolCall[]工具调用列表
tool_choice请求顶层—string | object工具选择策略
tools请求顶层—ToolDefinition[]工具定义列表
top_logprobs请求顶层—number返回 top N 候选 token 对数概率
top_p请求顶层—numbernucleus 采样阈值
total_tokens响应 usage—number合计 token 数
type请求 tools[] / 响应 tool_calls[]★"function"工具类型
usage响应顶层—objecttoken 使用情况
user请求顶层—string终端用户标识(滥用检测)

10. 引用与配套资料

来源链接 / 路径说明
OpenAI Chat Completions API 文档(权威)platform.openai.com/docs/api-reference/chat官方权威源。落地实现前请以此为准
OpenAI Function Calling 指南platform.openai.com/docs/guides/function-calling工具调用最佳实践
OpenAI Chat → Responses 迁移指南platform.openai.com/docs/guides/migrate-to-responses从 Chat Completions 迁到 Responses API
教学讲义(卡片化讲解)llm-api-schema-reference.html第一篇 · OpenAI Chat Completions(含 4 张教学卡 + Schema 全景)
协议讲义(怎么用)llm-chat-protocol-guide.html7 篇协议讲义,附手写 Agent Checklist
姊妹:OpenAI Responses Schemaopenai-responses-schema.htmlOpenAI 新一代(2025+)协议的完整 schema
姊妹:Anthropic Messages Schemaanthropic-messages-schema.htmlAnthropic Claude 的完整 schema
三协议翻译表llm-api-schema-reference.html#part-mapping跨协议字段名对照
兼容方言陷阱(姊妹 case study)ollama-tool-call-substitute.htmlOllama 兼容端点的实际行为差异