This commit is contained in:
seb
2026-09-25 06:41:35 +02:00
parent 3c28d00367
commit da37b76105

View File

@@ -154,23 +154,30 @@ class OpenRouterProvider {
}
}
// Reasoning (delta.reasoning or delta.reasoning_details)
if (choice.delta?.reasoning) {
result.reasoning = (result.reasoning || '') + choice.delta.reasoning;
onReasoning?.(result.reasoning);
}
// Reasoning (delta.reasoning, delta.reasoning_content, or delta.reasoning_details)
// OpenRouter may return both delta.reasoning and delta.reasoning_details for the same chunk.
// We assemble reasoning_details, but only append text once to result.reasoning.
let reasoningText = choice.delta?.reasoning || choice.delta?.reasoning_content || '';
if (choice.delta?.reasoning_details) {
if (!result.reasoning_details) result.reasoning_details = [];
let detailsText = '';
for (const rd of choice.delta.reasoning_details) {
const slot = result.reasoning_details[rd.index] ||= { type: rd.type, format: rd.format, text: '' };
if (rd.text) {
slot.text += rd.text;
result.reasoning = (result.reasoning || '') + rd.text;
detailsText += rd.text;
}
}
if (!reasoningText && detailsText) {
reasoningText = detailsText;
}
}
if (reasoningText) {
result.reasoning = (result.reasoning || '') + reasoningText;
onReasoning?.(result.reasoning);
}
}
}
if (choice.finish_reason) result.finish_reason = choice.finish_reason;
if (data.usage) result.usage = data.usage;