u
This commit is contained in:
@@ -154,22 +154,29 @@ 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;
|
||||
onReasoning?.(result.reasoning);
|
||||
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;
|
||||
|
||||
Reference in New Issue
Block a user