💡 核心定义 :OpenAI API协议是OpenAI公司制定的大语言模型HTTP交互接口规范,凭借先发技术优势和海量落地场景,现已成为全球大模型交互的事实上行业标准,绝大多数开源大模型、国产大模型均支持兼容该协议,大幅降低开发者适配成本。
一、基础调用规范:接口与认证
1.1 标准API路径格式
所有基于该协议的对话类接口请求,统一遵循以下路径格式,仅需替换实际域名地址(官方接口、开源模型部署地址、中转接口通用):
plaintext
https://域名地址/v1/chat/completions
1.2 强制认证方式
该协议所有请求均需携带身份凭证,禁止无凭证调用,需在HTTP请求头中固定配置API Key,格式如下:
plaintext
Authorization:<your-api-key>
注意:需替换为实际申请的密钥,切勿直接暴露在前端代码中,避免密钥泄露导致资产损失。
【OpenAI】获取OpenAI API Key的多种方式全攻略:从入门到精通,再到详解教程!
二、完整输入参数表:必填+选填全梳理
以下为协议核心输入参数明细,标注必填属性、数据类型、取值范围及实用说明,新增参数适配场景列,帮助开发者精准选型:
| 参数名称 | 是否必填 | 数据类型 | 默认值 | 取值范围 | 核心作用 | 参数说明 | 适配场景 |
|---|---|---|---|---|---|---|---|
| model | ✅ 必填 | String | - | - | 指定调用模型 | 确定具体大模型版本,如gpt-4、qwen-plus、deepseek-chat、通义千问系列等 | 所有调用场景必传 |
| messages | ✅ 必填 | Array | - | - | 对话消息列表 | 传递对话历史、指令或问题,包含role和content两个子字段 | 单轮/多轮对话、指令交互 |
| temperature | ❌ 选填 | Float | 1.0 | 0.0 - 2.0 | 输出温度系数 | 控制输出随机性,低值输出稳定精准,高值创意性强 | 精准问答、创意写作、代码生成 |
| top_p | ❌ 选填 | Float | 1.0 | 0.0 - 1.0 | 核采样参数 | 与temperature作用类似,采样逻辑不同,建议二者仅调其一 | 可控性输出场景 |
| max_tokens | ❌ 选填 | Integer | 模型上限 | - | 最大输出长度 | 限定单次响应的最大Token数,防止超长输出 | 短文本生成、成本控制 |
| n | ❌ 选填 | Integer | 1 | 1-N | 多结果生成 | 为同一指令生成n个不同回复 | 文案创作、多方案选型 |
| stream | ❌ 选填 | Boolean | false | true/false | 流式输出开关 | true为逐Token流式返回,false为完整结果一次性返回 | 实时对话、前端交互/批量后台任务 |
| stop | ❌ 选填 | String/Array | null | - | 输出停止标记 | 遇到指定字符串立即终止生成,避免冗余内容 | 格式固定的文本生成 |
| presence_penalty | ❌ 选填 | Float | 0 | -2.0 - 2.0 | 话题出现惩罚 | 正值鼓励新话题,负值减少新话题、聚焦原有内容 | 长对话、专题问答 |
| frequency_penalty | ❌ 选填 | Float | 0 | -2.0 - 2.0 | 内容频率惩罚 | 正值减少重复语句,负值增加语句连贯性 | 避免重复输出、流畅文案生成 |
| seed | ❌ 选填 | Integer | null | - | 结果复现种子 | 提升输出结果可复现性,无法100%保证完全一致 | 测试调试、固定输出场景 |
| tools | ❌ 选填 | Array | null | - | 外部工具定义 | 定义模型可调用的函数、插件等外部工具 | AI Agent、函数调用开发 |
| tool_choice | ❌ 选填 | String/Object | auto | - | 工具调用控制 | 指定模型是否调用、调用哪个工具 | 工具强制调用、自动决策 |
| response_format | ❌ 选填 | Object | null | - | 响应格式指定 | 可指定JSON等固定格式输出,适配程序解析 | 数据接口、结构化输出 |
| user | ❌ 选填 | String | null | - | 终端用户标识 | 用于用户行为追踪、违规内容溯源 | 多用户产品、合规管控 |
三、核心参数深度详解+实用示例
3.1 messages(消息列表):对话核心
messages是整个协议最核心参数,承载完整对话上下文,为数组格式,每个元素为包含role和content的消息对象,直接决定模型输出效果。
3.1.1 角色类型明细与示例
| 角色 | 核心作用 | 使用规范 | 实用示例 |
|---|---|---|---|
| system | 设定模型人设与约束 | 必须放在messages首位,定义AI行为准则 | 你是专业Python编程助手,回答必附完整可运行代码 |
| user | 用户输入指令/问题 | 每次提问追加至messages末尾 | 请写一个Python快速排序算法 |
| assistant | 模型历史回复 | 多轮对话必存,保证上下文连贯 | 这是快速排序的Python实现,代码如下... |
| tool | 工具调用返回结果 | 仅用于函数调用,紧跟含tool_calls的assistant消息后 | {"role":"tool","tool_call_id":"123","content":"北京晴,25℃"} |
3.1.2 标准消息格式示例
json
{
"messages": [
{"role": "system", "content": "你是一个有帮助的助手,回答简洁专业。"},
{"role": "user", "content": "你好!"},
{"role": "assistant", "content": "你好!有什么可以帮助你的吗?"},
{"role": "user", "content": "请介绍一下OpenAI API协议"}
]
}
3.2 temperature(温度系数):输出风格控制
该参数直接调控输出的确定性与创意性,不同数值适配完全不同的业务场景,新增场景选型表格:
| 温度数值区间 | 输出特点 | 推荐业务场景 | 使用建议 |
|---|---|---|---|
| 0.1 - 0.3 | 高确定性、无冗余、精准严谨 | 代码生成、事实问答、法律/医疗文本 | 需要精准输出必选,避免幻觉 |
| 0.5 - 0.7 | 平衡精准与创意,通用适配 | 日常对话、文本翻译、内容摘要 | 通用默认值,适配绝大多数场景 |
| 0.8 - 1.0 | 创意性拉满,表达灵活多样 | 创意写作、头脑风暴、营销文案 | 内容创作首选,提升多样性 |
| >1.0 | 极端创意,输出不可控 | 艺术创作、脑洞类内容 | 谨慎使用,易出现无效内容 |
开发小贴士:日常开发默认设为0.7,需要稳定输出降至0.3即可,切勿与top_p同时大幅调整。
3.3 stream(流式输出):用户体验关键
| 参数值 | 调用行为 | 适用场景 | 优缺点 |
|---|---|---|---|
| false | 等待模型生成完整结果,一次性返回 | 后台批量处理、数据统计、离线任务 | 优点:结果完整易解析;缺点:响应慢,体验差 |
| true | 逐Token增量返回,实时展示内容 | 前端实时对话、聊天机器人、在线助手 | 优点:响应快,体验流畅;缺点:需前端拼接结果 |
3.4 tools/tool_choice:AI Agent核心
该参数组是实现AI智能体、函数调用的核心,支持模型联动外部工具(天气、数据库、搜索等)完成复杂任务,以下为标准工具定义示例:
json
{
"tools": [
{
"type": "function",
"function": {
"name": "get_weather",
"description": "获取指定城市实时天气",
"parameters": {
"type": "object",
"properties": {
"city": {
"type": "string",
"description": "目标城市名称"
}
},
"required": ["city"]
}
}
}
],
"tool_choice": "auto"
}
tool_choice可选值说明
- auto:默认值,模型自动判断是否调用工具
- none:禁止调用任何工具,纯文本对话
- required:强制调用工具,无工具则报错
- 指定工具:{"type":"function","function":{"name":"get_weather"}},强制调用指定工具
四、响应输出解析:流式+非流式全说明
4.1 非流式输出(stream: false)
请求完成后一次性返回完整JSON结构,包含结果、Token消耗等核心信息,是计费与调试的关键依据,完整参数表如下:
| 参数名称 | 数据类型 | 核心作用 | 参数说明 |
|---|---|---|---|
| id | String | 请求唯一标识 | 单次API请求专属ID,用于排查问题 |
| object | String | 响应类型 | 固定为chat.completion |
| choices | Array | 输出结果列表 | 包含模型生成的全部回复,index对应生成序号 |
| usage | Object | Token消耗统计 | prompt_tokens(输入)、completion_tokens(输出)、total_tokens(总计) |
| finish_reason | String | 生成停止原因 | stop(正常)、length(超长度)、tool_calls(调用工具) |
非流式输出示例
json
{
"id": "chatcmpl-abc123",
"object": "chat.completion",
"created": 1699000000,
"model": "qwen-plus",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "你好!我是AI助手,很高兴为你服务。",
"tool_calls": null
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 20,
"completion_tokens": 50,
"total_tokens": 70
}
}
4.2 流式输出(stream: true)
基于SSE(服务器推送事件)实现,逐块返回增量数据,最后返回[DONE]标识结束,核心参数表:
| 参数名称 | 数据类型 | 核心作用 | 注意事项 |
|---|---|---|---|
| object | String | 流式响应类型 | 固定为chat.completion.chunk |
| delta | Object | 增量内容 | 每次返回少量文本,前端需拼接完整内容 |
| finish_reason | String | 停止原因 | 仅最后一个数据块返回 |
| usage | Object | Token统计 | 仅最后一个数据块返回消耗总量 |
流式输出片段示例
plaintext
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"qwen-plus","choices":[{"index":0,"delta":{"role":"assistant"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"qwen-plus","choices":[{"index":0,"delta":{"content":"你"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"qwen-plus","choices":[{"index":0,"delta":{"content":"好"},"finish_reason":null}]}
data: {"id":"chatcmpl-abc123","object":"chat.completion.chunk","created":1699000000,"model":"qwen-plus","choices":[{"index":0,"delta":{},"finish_reason":"stop"}],"usage":{"prompt_tokens":20,"completion_tokens":3,"total_tokens":23}}
data: [DONE]
4.3 finish_reason停止原因全解析
| 停止值 | 含义 | 处理建议 |
|---|---|---|
| stop | 正常生成完成 | 结果完整,直接使用即可 |
| length | 达到max_tokens上限 | 输出被截断,可加大max_tokens或重新发起请求 |
| tool_calls | 模型请求调用工具 | 执行对应工具,返回结果后继续对话 |
| content_filter | 触发内容安全过滤 | 检查输入输出内容,规避违规信息 |
五、跨模型兼容:Claude与OpenAI协议对比
Anthropic Claude系列模型采用独立API协议,与OpenAI协议不兼容,核心差异如下,方便开发者适配:
| 对比项 | OpenAI API协议 | Anthropic Claude原生协议 |
|---|---|---|
| 接口端点 | /v1/chat/completions | /v1/messages |
| 系统提示设置 | 放入messages数组首位 | 独立system参数,与messages分离 |
| 流式输出字段 | choices[0].delta.content | delta.text |
| 工具调用方式 | tool_calls字段 | content中的tool_use块 |
Claude原生调用示例
json
{
"model": "claude-sonnet-4-20250514",
"max_tokens": 1024,
"system": "你是一个有帮助的AI助手。",
"messages": [
{"role": "user", "content": "你好!"}
]
}
兼容方案:主流API中转站可自动完成协议转换,直接用OpenAI协议即可调用Claude;若直接对接官方接口,需严格遵循Claude原生规范。
📌 开发总结 :OpenAI API协议凭借通用性和易用性,成为大模型开发的首选接口,掌握核心参数、流式输出和工具调用逻辑,即可快速适配绝大多数大模型,高效开发AI对话、智能体、内容生成等各类应用。
