ai-utils.js
Version:
Build AI applications, chatbots, and agents with JavaScript and TypeScript.
30 lines (29 loc) • 1.65 kB
JavaScript
;
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;