@convo-lang/convo-lang
Version:
The language of AI
43 lines • 1.91 kB
JavaScript
;
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