UNPKG

@tanstack/ai

Version:

Core TanStack AI library - Open source AI SDK

77 lines (76 loc) 1.86 kB
import { aiEventClient } from "@tanstack/ai-event-client"; import { streamGenerationResult } from "../stream-generation-result.js"; const kind = "summarize"; function createId(prefix) { return `${prefix}-${Date.now()}-${Math.random().toString(36).slice(2, 9)}`; } function summarize(options) { const { stream } = options; if (stream) { return runStreamingSummarize( options ); } return runSummarize( options ); } async function runSummarize(options) { const { adapter, text, maxLength, style, focus } = options; const model = adapter.model; const requestId = createId("summarize"); const inputLength = text.length; const startTime = Date.now(); aiEventClient.emit("summarize:request:started", { requestId, provider: adapter.name, model, inputLength, timestamp: startTime }); const summarizeOptions = { model, text, maxLength, style, focus }; const result = await adapter.summarize(summarizeOptions); const duration = Date.now() - startTime; const outputLength = result.summary.length; aiEventClient.emit("summarize:request:completed", { requestId, provider: adapter.name, model, inputLength, outputLength, duration, timestamp: Date.now() }); return result; } async function* runStreamingSummarize(options) { const { adapter, text, maxLength, style, focus } = options; const model = adapter.model; const summarizeOptions = { model, text, maxLength, style, focus }; if (adapter.summarizeStream) { yield* adapter.summarizeStream(summarizeOptions); return; } yield* streamGenerationResult(() => adapter.summarize(summarizeOptions)); } function createSummarizeOptions(options) { return options; } export { createSummarizeOptions, kind, summarize }; //# sourceMappingURL=index.js.map