近日,开发者社区 Linux.do 揭露了 OpenRouter 推理模式与 OpenAI TypeScript SDK 之间存在严重的数据兼容性问题。该问题发生在流式传输场景中,当用户试图获取完整的思维链数据时,系统仅返回了推理过程的最后一段内容,而非完整的思考轨迹。
技术细节显示,OpenRouter 在处理具备推理能力的大模型时,将思维链内容存储在非标准字段 `reasoning_details` 中。然而,OpenAI 官方 SDK 的 `ChatCompletionStream.ts` 文件内的 `accumulateChatCompletion` 函数,在设计上使用了 `Object.assign(choice.message, rest)` 来合并流式数据块。在标准的流式响应中,这种方法适用于文本内容的拼接,但对于 `reasoning_details` 这类非标准对象或数组字段,`Object.assign` 会直接覆盖原有数据,导致流式传输过程中产生的中间推理内容被丢弃。最终,当开发者调用 `stream.finalChatCompletion()` 获取最终结果时,只能拿到最后一个增量数据,造成了关键信息的永久性丢失。这一缺陷严重阻碍了利用 OpenRouter 调用 DeepSeek-R1 等推理模型时的开发体验。
事件分析
💡 核心观点:非标准推理字段冲击通用SDK兼容性,开发者需警惕聚合API流式传输中的数据截断风险。
原文链接:Linux.do





