Skip to main content

evaluate(options)

Run an evaluation against a dataset.
import { evaluate, LaminarDataset } from '@lmnr-ai/lmnr';

const data = new LaminarDataset('my-dataset');

const result = await evaluate({
  data,
  executor: async (input) => {
    return await myFunction(input.query);
  },
  evaluators: {
    containsAnswer: (output, target) => output.includes(target.answer),
    isValid: (output) => output.length > 0,
  },
});

console.log(result.averageScores);
Parameters:
NameTypeDefaultDescription
dataEvaluationDataset | Datapoint[]Dataset or array
executor(data, ...args) => anyFunction to evaluate
evaluatorsRecord<string, Function or HumanEvaluator>Scoring functions
namestringEvaluation name
groupNamestring'default'Group name
metadataRecord<string, any>Evaluation metadata
config.concurrencyLimitnumber5Parallel executions (min 1)
config.projectApiKeystringenvAPI key
config.traceExportBatchSizenumber64Batch size
Returns: Promise<EvaluationRunResult | undefined>If invoked in “prepare only” mode, returns undefined.Return shape:
{
  averageScores: Record<string, number>,
  evaluationId: string,
  projectId: string,
  url: string,
  errorMessage?: string,
}

LaminarDataset

Load a dataset from Laminar.
import { LaminarDataset } from '@lmnr-ai/lmnr';

const dataset = new LaminarDataset('my-dataset', { fetchSize: 50 });
Constructor parameters:
NameTypeDefaultDescription
namestringDataset name (or use id)
idstringDataset ID (or use name)
fetchSizenumber25Datapoints per fetch
Methods:
  • size() — Returns number of datapoints
  • get(index) — Get datapoint by index
  • slice(start, end) — Get range of datapoints
  • push(paths, recursive?) — Upload local files
Note: Requires exactly one of name or id.

EvaluationDataset

Abstract base class for custom datasets.
import { EvaluationDataset } from '@lmnr-ai/lmnr';

class MyDataset extends EvaluationDataset {
  async size(): Promise<number> {
    return this.items.length;
  }
  
  async get(index: number): Promise<Datapoint> {
    return this.items[index];
  }
}
Methods to implement:
  • size(): Promise<number> | number
  • get(index: number): Promise<Datapoint> | Datapoint
Provided:
  • slice(start, end) — Helper using get()

HumanEvaluator

Placeholder for human evaluation.
import { HumanEvaluator } from '@lmnr-ai/lmnr';

await evaluate({
  data,
  executor,
  evaluators: {
    quality: new HumanEvaluator([
      { value: 1, label: 'Good' },
      { value: 0, label: 'Bad' },
    ]),
  },
});
Note: Creates spans with type HUMAN_EVALUATOR and null scores for later human annotation.