packages/ai: ignore null chunks in openai-completions streams (#2466)

This commit is contained in:
Cheng-Zi-Qing
2026-03-21 03:01:28 +08:00
committed by GitHub
parent eda1082d4b
commit 7e2689ac18
2 changed files with 58 additions and 10 deletions

View File

@@ -127,6 +127,8 @@ export const streamOpenAICompletions: StreamFunction<"openai-completions", OpenA
};
for await (const chunk of openaiStream) {
if (!chunk || typeof chunk !== "object") continue;
// OpenAI documents ChatCompletionChunk.id as the unique chat completion identifier,
// and each chunk in a streamed completion carries the same id.
output.responseId ||= chunk.id;
@@ -134,7 +136,7 @@ export const streamOpenAICompletions: StreamFunction<"openai-completions", OpenA
output.usage = parseChunkUsage(chunk.usage, model);
}
const choice = chunk.choices?.[0];
const choice = Array.isArray(chunk.choices) ? chunk.choices[0] : undefined;
if (!choice) continue;
// Fallback: some providers (e.g., Moonshot) return usage