UNPKG

parea-ai

Version:

Client SDK library to connect to Parea AI.

148 lines (147 loc) 6.26 kB
"use strict"; 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, };