@maximai/maxim-js
Version:
Maxim AI JS SDK. Visit https://getmaxim.ai for more info.
185 lines • 7.53 kB
JavaScript
;
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