UNPKG

@convo-lang/convo-lang

Version:
43 lines 1.91 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.mergeConvoRagResults = exports.defaultConvoRagServiceCallback = exports.defaultMaxConvoRagSearchLimit = exports.defaultConvoRagSearchLimit = exports.convoRagService = void 0; const common_1 = require("@iyio/common"); const convo_lib_1 = require("./convo-lib"); exports.convoRagService = (0, common_1.defineService)('ConvoRagService'); exports.defaultConvoRagSearchLimit = 5; exports.defaultMaxConvoRagSearchLimit = 50; const defaultConvoRagServiceCallback = async (ragContext) => { const services = exports.convoRagService.all(); if (!services.length) { return null; } const paramValues = ragContext.params?.['values']; const search = { content: ragContext.lastMessage.content, paths: Array.isArray(paramValues) ? paramValues.filter(v => typeof v === 'string') : undefined, tolerance: ragContext.tolerance, limit: (0, common_1.safeParseNumber)(ragContext.params?.['limit'], exports.defaultConvoRagSearchLimit), }; const removeTask = ragContext.conversation.addTask({ name: 'Retrieving related information' }); try { const r = await Promise.all(services.map(s => s.searchAsync(search))); return (0, exports.mergeConvoRagResults)(r).items.map(i => i.document); } finally { removeTask(); } }; exports.defaultConvoRagServiceCallback = defaultConvoRagServiceCallback; const mergeConvoRagResults = (r) => { if (r.length === 1 && r[0]) { return r[0]; } const merged = { items: [], usage: (0, convo_lib_1.createEmptyConvoTokenUsage)() }; for (const result of r) { merged.items.push(...result.items); (0, convo_lib_1.addConvoUsageTokens)(merged.usage, result.usage); } return merged; }; exports.mergeConvoRagResults = mergeConvoRagResults; //# sourceMappingURL=convo-rag-lib.js.map