mattpocock / mattpocock/evalite

evalite.report() for the simplest-possible integration story

Open
#308 0 comments 1 reaction 0 assignees View on GitHub

Nobody has claimed this yet.

enhancement
Dominant language
TypeScript
Stars
1.7k
Forks
102
PR merge metrics
No merged PRs in 30d

Description

I've been thinking about how Evalite might best integrate with systems that already run their own evaluations. These apps tend to run their evaluations in some kind of script which spits out a report.

It occurs to me that Evalite does really three things for you:

  1. Handles bundling and running your files
  2. Registers 'evals' and runs them concurrently
  3. Provides a reporting page

But what about users who already have their own scripts and manage their own concurrency? Users, in other words, who already have a hand-rolled solution.

Option 1: evalite.report

It seems like then we could provide a solution that only does 1 and 3:

const results = await customHandRolledScript();

evalite.report({
  suiteName: 'foo',
  rows: results,
  columns: [...],
  score: 0.5,
})

I think this would make Evalite a lot more attractive for lots of companies since it would be really just a UI on top of their logic. All they'd need to do would be to change their file names to .eval.ts and add a single function call.

Option 2: evalite.run()

Option one might not end up being feasible, but there is another simple option:

evalite.run('Eval Name', async () => {
  return {
    suiteName: 'foo',
    rows: results,
    columns: [...],
    score: 0.5,
  }
});

This would allow us to do a bit of concurrency management with Vitest (wrapping the code inside evalite.run in an it.concurrent) while still being very minimal overhead to add.

Contributor guide

Open the contributing guide

First steps

  1. Read the whole issue, then the project's contributing guide.
  2. Comment on the issue to say you are picking it up — it saves two people doing the same work.
  3. Fork the repository and make your change on a branch.
  4. Open a pull request that references the issue number.

Research direction

No files, tests, or entry points are named. Start by reading the existing bundling, eval registration, concurrency, and reporting integrations, then compare whether the proposed evalite.report or evalite.run API fits them. Done means selecting and implementing a defined integration path with a clear reporting and concurrency behavior.

Written by the indexing model from the issue text.

Assessment

Tech stack
typescript
Domain
developer-experience, testing-qa
Issue type
Feature
Difficulty
5/5
Estimated time
Over a week
Activity status
Stale
Clarity
Needs clarification
Newbie friendliness
25/100

Get new issues in your inbox

A short digest of beginner-friendly GitHub issues.