import { Dataset, Evaluator, RunConfig, S, TestCase, percentScore } from '@m4trix/evals';
const inputSchema = S.Struct({ prompt: S.String });
const outputSchema = S.Struct({ expectedMinScore: S.Number });
export const smokeDataset = Dataset.define({
name: 'smoke',
includedTags: ['smoke'],
});
export const shortAnswerCase = TestCase.describe({
name: 'short-answer',
tags: ['smoke'],
inputSchema,
input: { prompt: 'Answer in one sentence: what is an eval?' },
outputSchema,
output: { expectedMinScore: 70 },
});
export const qualityEvaluator = Evaluator.use({
name: 'noop',
resolve: () => ({}),
})
.define({
name: 'quality',
inputSchema,
outputSchema,
scoreSchema: S.Struct({ scores: S.Array(S.Unknown) }),
})
.evaluate(async ({ output }) => ({
scores: [
percentScore.make(
{ value: 85 },
{ definePassed: (data) => data.value >= (output?.expectedMinScore ?? 50) },
),
],
}));
export const smokeRun = RunConfig.define({
name: 'smoke',
runs: [{ dataset: smokeDataset, evaluators: [qualityEvaluator] }],
});