很多开发者拿到 Key 之后能跑通一条 hello world,却在接进项目时卡住:模型名该填哪个、流式怎么开、超时设多久、并发上来就报错、日志里看不出一次请求到底慢在哪贵在哪。这篇不讲协议兼容层,也不讲客户端怎么配,只给接入与开发环节的判断标准和排查顺序,让你把调用稳稳接进自己的服务里。
拿到 Key 能跑通一条 hello world,跟把一个调用稳稳接进自己的服务,是两回事。真正卡人的地方往往很碎:模型名到底填哪个、流式开不开、超时给多久、并发一上来就报错、日志里看不出一次请求慢在哪贵在哪。这篇不讲协议兼容层,也不讲客户端怎么配,只给接入和开发环节的判断标准与排查顺序。
先把一个前提说清楚:模型名、接口路径、计费口径这些会变,别靠记忆里的写法硬编码。接入前先到站内官方页面对一遍当前口径,把变动点集中到配置层,后面换版本才不至于满仓库改代码。
先确认调用哪个入口和哪个模型名
接入第一步不是写代码,是确认两件事:请求打到哪个入口,以及请求体里模型名填什么。走官方直连和走兼容层,路径和字段可能不完全一样,这个口径以站内页面为准,不要照搬别人的示例。
- 入口地址
- 决定你用的是哪套鉴权与字段约定,接入前去官方页面核一遍当前口径
- 模型名
- 当成配置项而非硬编码,写进环境变量或配置文件,换版本只改一处
- 推理类输出
- 带思维链的模型响应会多出相关字段,别用只认 content 的老结构解析
- 先把一次真实响应的原始结构打印出来,看清楚有哪些字段,再动手写解析,不要凭印象写
- 模型名统一从配置读,禁止散落在业务代码里,搜索一遍确认没有漏网的字符串
- 不确定用哪个模型时,到 /models 对照当前模型清单,别靠记忆填
- 鉴权失败先确认是不是入口和 Key 对不上,换入口时 Key 未必通用
请求体怎么写,流式要不要开
请求体通常只有模型名和消息数组是必填,温度、最大长度这类按任务调。流式不是性能开关,而是体验和工程复杂度的取舍:面向用户界面开流式,后台批处理用非流式更好做重试和统计。
| 场景 | 流式 | 理由 |
|---|---|---|
| 面向用户的对话界面 | 开 | 首字出现更快,等待感低 |
| 后台批处理 / 批任务 | 不开 | 一次性拿到完整结果,重试和统计简单 |
| 长文生成且要落库 | 看情况 | 落库用非流式,边生成边展示用流式 |
| 需要中间过程展示 | 开 | 可以边收边渲染,但解析逻辑要更严谨 |
- 开流式就要处理半包:按行切分数据块,遇到结束标记再收尾,别假设一次网络读取就是完整一条消息
- 断连要有兜底,客户端断开时及时停止后续请求,避免白花额度
- 把每次请求的模型名、耗时、用量一起写进日志,后面排查才有依据
- 温度这类参数按任务定:聊天可以放宽,结构化输出和代码类建议压低随机性
超时、并发和降级怎么设
超时不要用一个笼统的数字扛所有情况。连接、读取、整体三档分开设,读取这档要给推理留足余量,长输出被过早掐断是常见事故。并发则要按账号额度来定,本地先压一层比被限流后再退避省事。
- 设三档超时连接超时短一点,读取超时按最长输出估,整体超时作为最后兜底;上线后看日志里的耗时分布再调,别拍脑袋
- 本地限并发用信号量或队列把并发压在额度以内,超过就排队而不是直接打出去,避免集中报错
- 按错误分类处理网络类错误可重试并加退避,参数类错误重试无用要改代码,鉴权类先查 Key 和额度
- 准备降级路径主模型或主入口不可用时切备用,切换逻辑放在配置层,别写进业务代码
重试不是万能药:能重试的只有网络类错误,参数写错重试一百次也是同一个错。
日志和最小评测怎么留
日志是后面排查慢和贵唯一的抓手。至少把请求 ID、模型名、入参长度、出参长度、耗时和错误码记下来,能凭一条日志复现当时那次请求,才算合格。没有这层记录,换模型之后变好还是变差只能靠感觉。
- 建一个二三十条真实任务的小用例集,每次换模型或改提示词都跑一遍,对比通过率和返工率
- 用例不用追求全面,能回答「这次改动是变好还是变差」就够
- 换模型或换入口后计费规则可能变,用量到 /tools/token-price-calculator 换算一次再下结论
- 别只看单次耗时,把成败和耗时一起看,快了但错得多不算改进
常见问题
新版模型和 R1 的调用方式一样吗?
大体是同一套 HTTP 调用结构,差别主要在模型名和响应字段。R1 类模型会多出推理过程相关内容,如果你只解析正文,最好先打印一次原始响应看看结构,再决定解析逻辑,别直接套用旧代码。
调用一直超时或者返回很慢,先查什么?
按顺序查:先量一下你这边的网络延迟基线,到 /tools/speed-test 测一次;再看是不是读取超时设得太短,长输出容易被截断;最后看是不是并发撞上了额度上限导致排队。三项排完基本能定位。
并发一高就报错,是不是只能降速?
不一定。先在本地加一层队列把并发压到账号允许的范围内,再对可重试的错误做指数退避。如果业务量确实大,可以考虑申请提额或者走多入口分流,但分流逻辑要放在配置层,别硬塞进业务代码。