UNPKG

ai-utils.js

Version:

Build AI applications, chatbots, and agents with JavaScript and TypeScript.

30 lines (29 loc) 1.65 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.summarizeRecursivelyWithTextGenerationAndTokenSplitting = void 0; const generateText_js_1 = require("../../model-function/generate-text/generateText.cjs"); const splitRecursively_js_1 = require("../../text-chunk/split/splitRecursively.cjs"); const summarizeRecursively_js_1 = require("./summarizeRecursively.cjs"); /** * Recursively summarizes a text using a text generation model, e.g. for summarization or text extraction. * It automatically splits the text into optimal chunks that are small enough to be processed by the model, * while leaving enough space for the model to generate text. */ async function summarizeRecursivelyWithTextGenerationAndTokenSplitting({ text, model, prompt, reservedCompletionTokens, join, }, options) { const emptyPromptTokens = await model.countPromptTokens(await prompt({ text: "" })); return (0, summarizeRecursively_js_1.summarizeRecursively)({ split: (0, splitRecursively_js_1.splitRecursivelyAtTokenAsSplitFunction)({ tokenizer: model.tokenizer, maxChunkSize: model.contextWindowSize - reservedCompletionTokens - emptyPromptTokens, }), summarize: async (input) => { const { text } = await (0, generateText_js_1.generateText)(model.withMaxCompletionTokens(reservedCompletionTokens), await prompt(input), options); return text; }, join, text, }, options); } exports.summarizeRecursivelyWithTextGenerationAndTokenSplitting = summarizeRecursivelyWithTextGenerationAndTokenSplitting;