parea-ai
Version:
Client SDK library to connect to Parea AI.
148 lines (147 loc) • 6.26 kB
JavaScript
;
Object.defineProperty(exports, "__esModule", { value: true });
exports.defaultQueryParams = exports.TimeRange = exports.FilterOperator = exports.ExperimentStatus = exports.TestCaseCollection = exports.TraceIntegrations = exports.ExperimentStatsSchema = exports.Role = void 0;
var Role;
(function (Role) {
Role["user"] = "user";
Role["assistant"] = "assistant";
Role["system"] = "system";
Role["example_user"] = "example_user";
Role["example_assistant"] = "example_assistant";
Role["function"] = "function";
Role["tool"] = "tool";
})(Role || (exports.Role = Role = {}));
class ExperimentStatsSchema {
constructor(parent_trace_stats) {
this.parent_trace_stats = parent_trace_stats;
}
get avgScores() {
const accumulators = {};
const counts = {};
for (const traceStat of this.parent_trace_stats) {
for (const score of traceStat.scores || []) {
accumulators[score.name] = (accumulators[score.name] || 0.0) + score.score;
counts[score.name] = (counts[score.name] || 0) + 1;
}
}
return Object.fromEntries(Object.entries(accumulators).map(([name, value]) => [name, value / counts[name]]));
}
cumulativeAvgScore() {
const scores = this.parent_trace_stats.flatMap((traceStat) => traceStat.scores?.map((score) => score.score) || []);
return scores.length > 0 ? scores.reduce((acc, curr) => acc + curr, 0) / scores.length : 0.0;
}
avgScore(scoreName) {
const scores = this.parent_trace_stats.flatMap((traceStat) => traceStat.scores?.filter((score) => score.name === scoreName).map((score) => score.score) || []);
return scores.length > 0 ? scores.reduce((acc, curr) => acc + curr, 0) / scores.length : 0.0;
}
}
exports.ExperimentStatsSchema = ExperimentStatsSchema;
var TraceIntegrations;
(function (TraceIntegrations) {
TraceIntegrations["LANGCHAIN"] = "langchain";
})(TraceIntegrations || (exports.TraceIntegrations = TraceIntegrations = {}));
class TestCaseCollection {
constructor(id, name, created_at, last_updated_at, column_names, test_cases) {
this.id = id;
this.name = name;
this.created_at = created_at;
this.last_updated_at = last_updated_at;
this.column_names = column_names;
this.test_cases = test_cases;
}
getAllTestCaseInputs() {
return Object.values(this.test_cases).map((test_case) => Object.values(test_case.inputs));
}
numTestCases() {
return Object.keys(this.test_cases).length;
}
getAllTestCaseTargets() {
return Object.values(this.test_cases).map((test_case) => [test_case.target || '']);
}
getAllTestInputsAndTargets() {
return Object.values(this.test_cases).map((test_case) => ({
...test_case.inputs,
target: test_case.target || '',
}));
}
convertToFinetuneJsonl() {
const jsonlRows = [];
for (const testCase of Object.values(this.test_cases)) {
try {
const messages = JSON.parse(testCase.inputs.messages);
let assistantResponse;
let functionCall;
if (testCase.target) {
try {
functionCall = JSON.parse(testCase.target);
if (Array.isArray(functionCall)) {
functionCall = functionCall[0];
}
if (!functionCall.hasOwnProperty('arguments')) {
// Assuming need to convert to a different format
functionCall = functionCall['function'];
}
functionCall['arguments'] = JSON.stringify(functionCall['arguments']);
assistantResponse = { role: 'assistant', function_call: functionCall };
}
catch (error) {
assistantResponse = { role: 'assistant', content: testCase.target };
}
messages.push(assistantResponse);
}
let loadedFunctions;
if (testCase.inputs.functions) {
loadedFunctions = JSON.parse(testCase.inputs.functions);
}
jsonlRows.push({
messages: messages,
...(loadedFunctions?.length > 0 && { functions: loadedFunctions }),
});
}
catch (error) {
console.error('Error handling test case and ignoring it: ', error);
}
}
return jsonlRows;
}
}
exports.TestCaseCollection = TestCaseCollection;
var ExperimentStatus;
(function (ExperimentStatus) {
ExperimentStatus["PENDING"] = "pending";
ExperimentStatus["RUNNING"] = "running";
ExperimentStatus["COMPLETED"] = "completed";
ExperimentStatus["FAILED"] = "failed";
})(ExperimentStatus || (exports.ExperimentStatus = ExperimentStatus = {}));
var FilterOperator;
(function (FilterOperator) {
FilterOperator["EQUALS"] = "equals";
FilterOperator["NOT_EQUALS"] = "not_equals";
FilterOperator["LIKE"] = "like";
FilterOperator["GREATER_THAN_OR_EQUAL"] = "greater_than_or_equal";
FilterOperator["LESS_THAN_OR_EQUAL"] = "less_than_or_equal";
FilterOperator["GREATER_THAN"] = "greater_than";
FilterOperator["LESS_THAN"] = "less_than";
FilterOperator["IS_NULL"] = "is_null";
FilterOperator["EXISTS"] = "exists";
FilterOperator["IN"] = "in";
})(FilterOperator || (exports.FilterOperator = FilterOperator = {}));
var TimeRange;
(function (TimeRange) {
TimeRange["NA"] = "na";
TimeRange["LAST_1_HOUR"] = "1h";
TimeRange["LAST_3_HOURS"] = "3h";
TimeRange["LAST_6_HOURS"] = "6h";
TimeRange["LAST_24_HOURS"] = "24h";
TimeRange["LAST_7_DAYS"] = "7d";
TimeRange["LAST_1_MONTH"] = "1m";
TimeRange["LAST_3_MONTHS"] = "3m";
TimeRange["LAST_6_MONTHS"] = "6m";
TimeRange["LAST_12_MONTHS"] = "1y";
})(TimeRange || (exports.TimeRange = TimeRange = {}));
exports.defaultQueryParams = {
project_name: 'default',
page: 1,
page_size: 10,
time_range: TimeRange.NA,
};