u
This commit is contained in:
@@ -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;
|
||||||
|
|||||||
Reference in New Issue
Block a user