evalite
Version:
Test your LLM-powered apps with a TypeScript-native, Vitest-based eval runner. No API key required.
220 lines • 6.83 kB
TypeScript
import type * as BetterSqlite3 from "better-sqlite3";
import type { Evalite } from "./types.js";
import type { TaskState } from "vitest";
export type SQLiteDatabase = BetterSqlite3.Database;
export declare const createDatabase: (url: string) => BetterSqlite3.Database;
export declare namespace Db {
type Run = {
id: number;
runType: Evalite.RunType;
created_at: string;
};
type EvalStatus = "fail" | "success" | "running";
type Eval = {
id: number;
run_id: number;
name: string;
status: EvalStatus;
filepath: string;
duration: number;
created_at: string;
};
type Result = {
id: number;
eval_id: number;
duration: number;
input: unknown;
output: unknown;
expected?: unknown;
created_at: string;
col_order: number;
status: Evalite.ResultStatus;
rendered_columns?: unknown;
};
type Score = {
id: number;
result_id: number;
name: string;
score: number;
description?: string;
metadata?: unknown;
created_at: string;
};
type Trace = {
id: number;
result_id: number;
input: unknown;
output: unknown;
start_time: number;
end_time: number;
prompt_tokens?: number;
completion_tokens?: number;
col_order: number;
};
}
/**
* @deprecated
*/
export declare const saveRun: (db: BetterSqlite3.Database, { files, runType, }: {
runType: Evalite.RunType;
files: {
name: string;
filepath: string;
tasks: {
name: string;
result?: {
state: TaskState;
};
tasks?: {
name: string;
result?: {
state: TaskState;
};
meta: {
evalite?: Evalite.TaskMeta;
};
}[];
}[];
}[];
}) => void;
export interface ResultWithInlineScoresAndTraces extends Db.Result {
scores: Db.Score[];
traces: Db.Trace[];
}
interface EvalWithInlineResults extends Db.Eval {
results: ResultWithInlineScoresAndTraces[];
}
/**
* @deprecated
*
* Used in existing tests, but in future code should be replaced
* by more specific queries.
*/
export declare const getEvalsAsRecord: (db: SQLiteDatabase) => Promise<Record<string, EvalWithInlineResults[]>>;
export declare const getEvals: (db: BetterSqlite3.Database, runIds: number[], allowedStatuses: Db.EvalStatus[]) => Db.Eval[];
export declare const getResults: (db: BetterSqlite3.Database, evalIds: number[]) => {
duration: number;
status: Evalite.ResultStatus;
id: number;
eval_id: number;
created_at: string;
col_order: number;
input: unknown;
expected: unknown;
output: unknown;
rendered_columns: unknown;
}[];
export declare const getScores: (db: BetterSqlite3.Database, resultIds: number[]) => {
name: string;
description?: string | undefined;
score: number;
id: number;
created_at: string;
result_id: number;
metadata: unknown;
}[];
export declare const getTraces: (db: BetterSqlite3.Database, resultIds: number[]) => {
id: number;
col_order: number;
result_id: number;
start_time: number;
end_time: number;
prompt_tokens?: number | undefined;
completion_tokens?: number | undefined;
input: unknown;
output: unknown;
}[];
export declare const getMostRecentRun: (db: BetterSqlite3.Database, runType: Evalite.RunType) => Db.Run | undefined;
export declare const getPreviousCompletedEval: (db: BetterSqlite3.Database, name: string, startTime: string) => Db.Eval | undefined;
export declare const getAverageScoresFromResults: (db: BetterSqlite3.Database, resultIds: number[]) => {
result_id: number;
average: number;
}[];
export declare const getEvalsAverageScores: (db: BetterSqlite3.Database, evalIds: number[]) => {
eval_id: number;
average: number;
}[];
type Prettify<T> = {
[K in keyof T]: T[K];
} & {};
export declare const jsonParseFields: <T extends object, K extends keyof T>(obj: T, fields: K[]) => Prettify<Omit<T, K> & Record<K, unknown>>;
/**
* Defaults to most recent if timestamp not passed
*/
export declare const getEvalByName: (db: BetterSqlite3.Database, opts: {
name: string;
timestamp?: string;
statuses?: Db.EvalStatus[];
}) => Db.Eval | undefined;
export declare const getHistoricalEvalsWithScoresByName: (db: BetterSqlite3.Database, name: string) => (Db.Eval & {
average_score: number;
})[];
export declare const createEvalIfNotExists: ({ db, runId, name, filepath, }: {
db: SQLiteDatabase;
runId: number | bigint;
name: string;
filepath: string;
}) => number | bigint;
export declare const createRun: ({ db, runType, }: {
db: SQLiteDatabase;
runType: Evalite.RunType;
}) => number | bigint;
export declare const insertResult: ({ db, evalId, order, input, expected, output, duration, status, renderedColumns, }: {
db: SQLiteDatabase;
evalId: number | bigint;
order: number;
input: unknown;
expected: unknown;
output: unknown;
duration: number;
status: string;
renderedColumns: unknown;
}) => number | bigint;
export declare const updateResult: ({ db, resultId, output, duration, status, renderedColumns, input, expected, }: {
db: SQLiteDatabase;
resultId: number | bigint;
output: unknown;
duration: number;
input: unknown;
expected: unknown;
status: string;
renderedColumns: unknown;
}) => void;
export declare const insertScore: ({ db, resultId, description, name, score, metadata, }: {
db: SQLiteDatabase;
resultId: number | bigint;
description: string | undefined;
name: string;
score: number;
metadata: unknown;
}) => void;
export declare const insertTrace: ({ db, resultId, input, output, start, end, promptTokens, completionTokens, order, }: {
db: SQLiteDatabase;
resultId: number | bigint;
input: unknown;
output: unknown;
start: number;
end: number;
promptTokens: number | undefined;
completionTokens: number | undefined;
order: number;
}) => void;
export declare const updateEvalStatusAndDuration: ({ db, evalId, status, }: {
db: SQLiteDatabase;
evalId: number | bigint;
status: Db.EvalStatus;
}) => void;
export declare const findResultByEvalIdAndOrder: ({ db, evalId, order, }: {
db: SQLiteDatabase;
evalId: number | bigint;
order: number;
}) => number | undefined;
export declare const getAllResultsForEval: ({ db, evalId, }: {
db: SQLiteDatabase;
evalId: number | bigint;
}) => Array<{
id: number;
status: Evalite.ResultStatus;
}>;
export {};
//# sourceMappingURL=db.d.ts.map