DeepSeek 的接口走的是与主流生态兼容的对话补全格式,会发 HTTP 请求就能接入,不装额外 SDK 也能跑。这篇给一条最短路径:备齐三样东西、发出首个请求、看懂响应字段、写好限流重试。具体参数名、模型名与价格以官方文档当前版本为准。
调用前备齐三样
API Key 在平台控制台创建,创建后立刻妥善保管:不进公开仓库、不写进前端代码、不贴进群聊。接口地址以官方文档为准。再准备一个能发请求的环境,命令行脚本或任意后端语言都可以。确认账户有可用额度后,先跑通一个最小请求,再逐步加参数。Key 按最小权限原则管理,测试与生产分开建,出问题时容易定位是哪套环境的事。
最简请求:三个字段
请求体是 JSON,最少只需要三个字段。写出来长这样:
{"model": "deepseek-chat", "messages": [{"role": "user", "content": "你好"}], "stream": false}
model 指定模型(可用模型名以官方文档为准),messages 传对话数组,stream 决定是否流式输出。messages 里每条消息有两个键:role 和 content。system 放角色与规则,user 放你的问题。初次联调用非流式,拿到完整响应逐字段看一遍,比只看封装结果学到的东西多;temperature 这类可选参数先保持默认,跑通后再调。
响应看三处:content、usage、finish_reason
| 字段 | 位置 | 怎么用 |
|---|---|---|
| content | choices 内 message 里 | 回答正文,业务逻辑主要处理它 |
| usage | 响应顶层 | prompt 与 completion 两项 token 数,成本核算的依据 |
| finish_reason | choices 内 | 值为 length 表示被输出上限截断,需调大上限或分段请求 |
把这三处的读取写进调用脚本,排查问题时效率高很多。多轮应用还要留意 usage 的逐轮累计:费用异常上涨,多半是历史消息越滚越长的信号。
限流与重试:退避,别硬撞
高峰或超额时会遇到限流响应(HTTP 429)。正确的写法是指数退避:首次等 1 秒重试,再失败等 2 秒,然后 4 秒,逐次翻倍,重试上限设 3 次左右,仍失败就放弃并告警。重试前先分清错误类型:限流按退避来;鉴权失败重试没有意义,先修配置;参数错误同理。不要写死循环高频重试,那只会加剧排队。批量任务把并发压低、请求间隔拉开,整体成功率反而更高。重要流程把每次重试记进日志,事后排查全靠它。
多轮对话的两个成本陷阱
接口不缓存任何历史,每一轮都要把之前的消息重新发一遍,token 消耗随轮数线性上涨。控制办法有两条:历史太长时做摘要压缩,只保留与当前问题相关的部分;system 提示词写成条目式,去掉成段的铺垫,规则类内容压缩后省 token,执行也更准。改写 system 时可以参考现成的提示词库再按需删减,见DeepSeek 官方提示词库值得抄吗。
另一个容易混淆的点:网页版的聊天记录管理与接口侧的历史数组是两回事,前者在产品设置里操作,后者完全由你的代码控制,参考DeepSeek 的历史记录怎么管理。至于深度思考模式在接口里怎么启用、什么任务值得开,见DeepSeek 的深度思考什么时候开。
它的边界:接口层管不到的事
接口只负责「发请求、回响应」。输出内容的准确性要靠你的业务层校验,敏感场景要加过滤;Key 泄露的损失由调用方承担,所以权限管理永远排在功能之前;模型能力本身的上限,换调用方式解决不了,该换模型就换模型。
还没展开的三个追问
请求偶尔超时,先查什么?先看是不是长输出导致的等待,把输出上限调小或改用流式再测;仍超时再查网络与平台状态,以官方状态说明为准。
怎么估算每月消耗?拿试运行期的 usage 数据算单次平均 token 数,乘以预计调用次数,单价按官方价格页当前标准计算,别用第三方转述的旧数字。
流式和非流式该怎么选?联调阶段用非流式,方便看完整响应;上线后长回答任务改流式,用户端的等待感会小很多。
接口调用速查
- 三字段起步:model、messages、stream
- 响应盯三处:content、usage、finish_reason
- 遇 429:指数退避,1 秒起翻倍,设重试上限
- Key 纪律:不进前端、不进仓库,测试与生产分开


