UNPKG

@maximai/maxim-js

Version:

Maxim AI JS SDK. Visit https://getmaxim.ai for more info.

185 lines 7.53 kB
"use strict"; Object.defineProperty(exports, "__esModule", { value: true }); exports.runOutputFunction = runOutputFunction; exports.runLocalEvaluations = runLocalEvaluations; exports.workflowIdOutputFunctionClosure = workflowIdOutputFunctionClosure; exports.promptVersionIdOutputFunctionClosure = promptVersionIdOutputFunctionClosure; exports.promptChainVersionIdOutputFunctionClosure = promptChainVersionIdOutputFunctionClosure; async function runOutputFunction(outputFunction, dataEntry) { try { const result = await outputFunction(dataEntry); return result; } catch (err) { throw new Error(`Error while running output function`, { cause: err, }); } } async function runLocalEvaluations(evaluators, dataEntry, processedData) { try { const evaluatorResults = await Promise.all(evaluators.map(async (evaluator) => { if ("names" in evaluator) { try { const results = await evaluator.evaluationFunction({ output: processedData.output, contextToEvaluate: processedData.contextToEvaluate, }, { ...dataEntry, }); return Object.entries(results).map(([evaluatorName, result]) => { const name = evaluator.names.find((name) => name === evaluatorName); if (!name) { return { name: evaluatorName, passFailCriteria: evaluator.passFailCriteria[evaluatorName], result: { score: "Err", reasoning: `No name found for "${evaluatorName}" in combined evaluator with names ${evaluator.names}`, }, }; } const passFailCriteria = evaluator.passFailCriteria[evaluatorName]; if (!passFailCriteria) { return { name: evaluatorName, passFailCriteria: evaluator.passFailCriteria[evaluatorName], result: { score: "Err", reasoning: `No pass fail criteria found with name "${evaluatorName}" for combined evaluator with names ${evaluator.names}`, }, }; } return { name, passFailCriteria, result, }; }); } catch (err) { return evaluator.names.map((name) => { return { name, passFailCriteria: evaluator.passFailCriteria[name], result: { score: "Err", reasoning: `Error while running combined evaluator with names ${evaluator.names}: ${err instanceof Error ? err.message : JSON.stringify(err)}`, }, }; }); } } else { try { const result = await evaluator.evaluationFunction({ output: processedData.output, contextToEvaluate: processedData.contextToEvaluate, }, { ...dataEntry, }); return [{ name: evaluator.name, passFailCriteria: evaluator.passFailCriteria, result }]; } catch (err) { return [ { name: evaluator.name, passFailCriteria: evaluator.passFailCriteria, result: { score: "Err", reasoning: `Error while running evaluator "${evaluator.name}": ${err instanceof Error ? err.message : JSON.stringify(err)}`, }, }, ]; } } })); return evaluatorResults.flat(); } catch (err) { return evaluators .map((evaluator) => { if ("names" in evaluator) { return evaluator.names.map((name) => { return { name, passFailCriteria: evaluator.passFailCriteria[name], result: { score: "Err", reasoning: `Error while running local evaluators overall: ${err instanceof Error ? err.message : JSON.stringify(err)}`, }, }; }); } return [ { name: evaluator.name, passFailCriteria: evaluator.passFailCriteria, result: { score: "Err", reasoning: `Error while local evaluators overall: ${err instanceof Error ? err.message : JSON.stringify(err)}`, }, }, ]; }) .flat(); } } function workflowIdOutputFunctionClosure(workflowId, TestRunAPIService, contextToEvaluate) { return async (data) => { var _a; const result = await TestRunAPIService.executeWorkflowForData({ dataEntry: data, workflowId, contextToEvaluate, }); return { data: (_a = result.output) !== null && _a !== void 0 ? _a : "", retrievedContextToEvaluate: result.contextToEvaluate, meta: { usage: { latency: result.latency, }, }, }; }; } function promptVersionIdOutputFunctionClosure(promptVersionId, input, TestRunAPIService, contextToEvaluate) { return async (data) => { var _a; const result = await TestRunAPIService.executePromptForData({ dataEntry: data, input, promptVersionId, contextToEvaluate, }); return { data: (_a = result.output) !== null && _a !== void 0 ? _a : "", retrievedContextToEvaluate: result.contextToEvaluate, meta: { usage: result.usage, cost: result.cost, }, }; }; } function promptChainVersionIdOutputFunctionClosure(promptChainVersionId, input, TestRunAPIService, contextToEvaluate) { return async (data) => { var _a; const result = await TestRunAPIService.executePromptChainForData({ dataEntry: data, input, promptChainVersionId, contextToEvaluate, }); return { data: (_a = result.output) !== null && _a !== void 0 ? _a : "", retrievedContextToEvaluate: result.contextToEvaluate, meta: { usage: result.usage, cost: result.cost, }, }; }; } //# sourceMappingURL=runUtils.js.map