从消息数组到流式响应:读懂 OpenAI 兼容 Chat Completions 格式
Chat Completions 是什么
OpenAI 兼容的 Chat Completions 格式,是目前应用调用大语言模型最常见的接口约定。客户端通常向 /v1/chat/completions 发送一个 JSON 请求:指定模型、传入消息列表,再获得模型生成的回答。所谓“兼容”,指的是大多数现有 OpenAI SDK、代码示例和工具可以继续使用,只需替换 API Key、Base URL 与模型名。
例如,59API 的 API Base URL 为 https://api.59api.com。开发者可通过它按量付费接入 GPT,以及 Claude Opus、Sonnet、Haiku、Fable 等原生官方质量模型;对于已有 OpenAI SDK 项目,这种接入方式能显著减少迁移代码和多供应商适配成本。
一个请求由哪些字段组成
最小请求通常包含 model 和 messages。model 是你在服务商控制台或模型列表中确认可用的模型标识;messages 是按对话顺序排列的数组。每条消息至少包含 role 与 content。
- system:放置全局行为规则,例如“请用简洁的中文回答”。
- user:代表最终用户的问题、指令或上下文。
- assistant:保存模型之前的回答,使下一轮能理解对话历史。
概念上的请求结构如下:先设置 system 消息,再加入 user 问题,然后传入 model。不要只把最后一句用户输入发送给模型;需要连续对话时,应带上必要的历史消息。不过历史越长,输入 token 和费用越高,因此应保留与当前问题有关的内容,并在合适时总结旧上下文。
常用参数如何选择
temperature 控制随机性:接近 0 更稳定,适合提取、分类和代码修复;较高值更有发散性,适合头脑风暴。max_tokens 限制本次生成的最大长度,可避免意外产出过长内容。若接口支持 stream: true,服务端会分段推送生成结果,聊天界面应逐段追加文本,而不是等待完整答案后一次显示。
生产环境还应设置合理超时、记录请求 ID,并处理限流、网络失败与非 2xx 响应。切勿把 API Key 写进浏览器前端或公开仓库;应由自己的后端代为调用,并通过环境变量读取密钥。
如何读取普通响应与流式响应
非流式响应一般在 choices 数组中返回结果,常见路径是 choices[0] 中的 assistant 消息内容。调用代码不能假定 choices 永远非空,也要检查结束原因:正常完成、达到长度上限,或触发工具调用,后续处理并不相同。
流式响应则由多个增量事件组成。每个片段可能只包含几个字符,最后还会有结束信号。正确做法是累积每个增量中的文本字段,并在结束后再保存完整回答。不要把每个片段当成一条独立消息,否则会导致界面闪烁、日志碎片化,也难以统计最终内容。
工具调用与模型切换的注意点
当你向请求加入 tools 参数时,模型可能返回工具名与参数,而不是直接给出最终答案。应用应先验证参数、执行受控的业务函数,再把工具执行结果作为后续消息传回模型。对于转账、删除数据、发邮件等高风险动作,必须在服务端做权限校验和用户确认,不能仅凭模型输出执行。
通过 59API 使用时,建议先在其文档或控制台确认模型标识与能力,再将 OpenAI SDK 的 base URL 指向 https://api.59api.com。这样同一套 Chat Completions 调用可以按任务切换经济型模型和更强模型:简单分类、摘要可优先考虑成本,复杂推理或高要求写作再选择更合适的模型。59API 提供低价按量计费、原生官方质量模型与推荐返利,适合希望控制 AI 成本又不想牺牲兼容性的开发团队。可以注册 59API,先用一个最小聊天请求验证你的 SDK、密钥和模型配置。
शुरू करने के लिए तैयार?
कुछ ही मिनटों में Claude और GPT जोड़ें, सबसे कम कीमत पर। साइन अप करें और API key पाएं।
मुफ़्त साइन अप