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

View File

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