Files
9router/open-sse/translator/concerns/reasoning.js
T
2026-06-15 18:18:04 +07:00

25 lines
1.1 KiB
JavaScript

import { ROLE } from "../schema/index.js";
// Build OpenAI delta carrying reasoning_content (optional leading assistant role)
export function reasoningDelta(text, withRole = false) {
return withRole
? { role: ROLE.ASSISTANT, reasoning_content: text }
: { reasoning_content: text };
}
// Extract reasoning text from a streamed OpenAI-compatible delta across vendor shapes:
// - reasoning_content (GLM, Qwen, DeepSeek, Kimi, Step, Hunyuan)
// - reasoning (some compat layers)
// - reasoning_details[] (MiniMax reasoning_split=true): [{ text|content }]
// Returns concatenated reasoning string, or "" when none.
export function extractReasoningText(delta) {
if (!delta || typeof delta !== "object") return "";
if (typeof delta.reasoning_content === "string" && delta.reasoning_content) return delta.reasoning_content;
if (typeof delta.reasoning === "string" && delta.reasoning) return delta.reasoning;
const details = delta.reasoning_details;
if (Array.isArray(details)) {
return details.map((d) => (typeof d === "string" ? d : d?.text || d?.content || "")).join("");
}
return "";
}