@crowandraven/evalkeeper 0.3.0 → 0.4.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
@@ -1 +1 @@
1
- {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"testing.js","sourceRoot":"","sources":["../src/testing.ts"],"names":[],"mappings":"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"}
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@crowandraven/evalkeeper",
3
- "version": "0.3.0",
3
+ "version": "0.4.1",
4
4
  "description": "An open-source eval harness for TypeScript apps: test each AI feature against answers people confirm, compare models on accuracy, cost, and speed, and choose the live model on evidence.",
5
5
  "license": "MIT",
6
6
  "type": "module",
package/src/board.ts CHANGED
@@ -49,7 +49,11 @@ export type BoardRow = {
49
49
  /** Against the live model's test, when both are current. */
50
50
  vsLive: Verdict | null;
51
51
  canMakeLive: boolean;
52
- /** Tested, current, and from another provider than the live model. */
52
+ /**
53
+ * Can be chosen as the fallback: any model the operation allows as one,
54
+ * except the live model and the current fallback. Tested or not; the
55
+ * board shows how it did and the suggestion recommends one.
56
+ */
53
57
  canMakeFallback: boolean;
54
58
  /** Can be live but not the fallback (a model that only answers typed questions). */
55
59
  liveOnly: boolean;
package/src/common.ts CHANGED
@@ -77,9 +77,12 @@ export function withCountedWords(text: string): string {
77
77
  * A number with an optional "k" or "m" ("150k", "1.5m"). It starts only
78
78
  * where a number starts and reads it once (the lookahead and backreference
79
79
  * keep the digits from being retried), so long digit runs in model output
80
- * stay linear. A number glued to a word ("3rd", "10am") doesn't count.
80
+ * stay linear. A number glued to a word ("3rd", "10am") doesn't count. A
81
+ * comma belongs to a number only as a thousands separator ("150,000"), so
82
+ * "In 2020, I joined" reads 2020, not "2020,".
81
83
  */
82
- const NUMBER = /(?<![\d,.])(?=(\d[\d,]*(?:\.\d+)?))\1\s*([km])?\b/gi;
84
+ const NUMBER =
85
+ /(?<![\d,.])(?=((?:\d{1,3}(?:,\d{3})+|\d+)(?:\.\d+)?))\1\s*([km])?\b/gi;
83
86
 
84
87
  /**
85
88
  * Numbers the text states that appear in none of the sources: likely invented.
package/src/glossary.ts CHANGED
@@ -14,7 +14,7 @@ export const GLOSSARY = {
14
14
  "A paired comparison with the live model on the same cases: more accurate, about as accurate, less accurate, or too few cases to tell.",
15
15
  live: "The model this feature runs on now.",
16
16
  fallback:
17
- "The model that answers when the live model's provider is down. It comes from another provider.",
17
+ "The model that answers when the live model's provider is down. Any model can be chosen; the suggestion recommends the most accurate one from another provider.",
18
18
  retiring:
19
19
  "The provider has announced a date it stops serving this model. It's never suggested, and a retiring live model gets replaced.",
20
20
  outOfDate:
@@ -246,6 +246,10 @@ export function memoryStore(): EvalStore &
246
246
  async listOutputs(runId) {
247
247
  return outputs.filter((o) => o.runId === runId);
248
248
  },
249
+ async listOutputsFor(runIds) {
250
+ const ids = new Set(runIds);
251
+ return outputs.filter((o) => ids.has(o.runId));
252
+ },
249
253
  async findReusableOutput(requestHash, since) {
250
254
  return (
251
255
  outputs
@@ -259,6 +263,20 @@ export function memoryStore(): EvalStore &
259
263
  .sort((a, b) => +b.createdAt - +a.createdAt)[0] ?? null
260
264
  );
261
265
  },
266
+ async findReusableHashes(requestHashes, since) {
267
+ const wanted = new Set(requestHashes);
268
+ return new Set(
269
+ outputs
270
+ .filter(
271
+ (o) =>
272
+ wanted.has(o.requestHash) &&
273
+ !o.reused &&
274
+ !o.error &&
275
+ o.createdAt >= since,
276
+ )
277
+ .map((o) => o.requestHash),
278
+ );
279
+ },
262
280
  async createOutput(data) {
263
281
  const o: OutputRecord = { ...data, id: id("out"), createdAt: now() };
264
282
  outputs.push(o);
package/src/runner.ts CHANGED
@@ -24,6 +24,7 @@ import type {
24
24
  EvalStore,
25
25
  RunMetrics,
26
26
  RunRecord,
27
+ OutputRecord,
27
28
  } from "./store.js";
28
29
  import { withTimeout } from "./timeout.js";
29
30
  import { SCHEDULED } from "./weekly.js";
@@ -334,29 +335,36 @@ export function createRunner(opts: RunnerOptions) {
334
335
  ]);
335
336
  const answers = cases.length * repeats;
336
337
  const since = new Date(Date.now() - REUSE_DAYS * 86_400_000);
337
- const reused = o.fresh
338
- ? 0
339
- : (
340
- await Promise.all(
341
- cases.flatMap((c) =>
342
- Array.from({ length: repeats }, (_, i) =>
343
- store.findReusableOutput(
344
- requestHashFor({
345
- suite: suite.key,
346
- model,
347
- effort,
348
- prompt,
349
- input: c.input,
350
- repeat: i + 1,
351
- temperature,
352
- maxOutputTokens: cap,
353
- }),
354
- since,
355
- ),
338
+ const hashes = o.fresh
339
+ ? []
340
+ : cases.flatMap((c) =>
341
+ Array.from({ length: repeats }, (_, i) =>
342
+ requestHashFor({
343
+ suite: suite.key,
344
+ model,
345
+ effort,
346
+ prompt,
347
+ input: c.input,
348
+ repeat: i + 1,
349
+ temperature,
350
+ maxOutputTokens: cap,
351
+ }),
352
+ ),
353
+ );
354
+ // One query where the store can: a lookup per answer is slow on a
355
+ // remote database.
356
+ const found = store.findReusableHashes
357
+ ? await store.findReusableHashes(hashes, since)
358
+ : new Set(
359
+ (
360
+ await Promise.all(
361
+ hashes.map(async (h) =>
362
+ (await store.findReusableOutput(h, since)) ? h : null,
356
363
  ),
357
- ),
358
- )
359
- ).filter(Boolean).length;
364
+ )
365
+ ).filter((h): h is string => h !== null),
366
+ );
367
+ const reused = hashes.filter((h) => found.has(h)).length;
360
368
  return {
361
369
  cases: cases.length,
362
370
  answers,
@@ -745,11 +753,30 @@ export function createRunner(opts: RunnerOptions) {
745
753
  return id;
746
754
  }
747
755
 
756
+ /**
757
+ * Several tests' outputs by test id: one call where the store can, so a
758
+ * remote database isn't asked once per test.
759
+ */
760
+ async function outputsByRun(
761
+ runIds: string[],
762
+ ): Promise<Map<string, OutputRecord[]>> {
763
+ const byRun = new Map(runIds.map((id) => [id, [] as OutputRecord[]]));
764
+ if (!runIds.length) return byRun;
765
+ const rows = store.listOutputsFor
766
+ ? await store.listOutputsFor(runIds)
767
+ : (await Promise.all(runIds.map((id) => store.listOutputs(id)))).flat();
768
+ for (const o of rows) byRun.get(o.runId)?.push(o);
769
+ return byRun;
770
+ }
771
+
748
772
  /** Marks tests the server stopped mid-way as failed. */
749
773
  async function stopStuckRuns(suiteKey: string, now = Date.now()) {
750
- for (const r of await store.listRuns(suiteKey, { status: "RUNNING" })) {
751
- if (now - +r.startedAt <= STUCK_MS) continue;
752
- const outs = await store.listOutputs(r.id);
774
+ const old = (await store.listRuns(suiteKey, { status: "RUNNING" })).filter(
775
+ (r) => now - +r.startedAt > STUCK_MS,
776
+ );
777
+ const outputs = await outputsByRun(old.map((r) => r.id));
778
+ for (const r of old) {
779
+ const outs = outputs.get(r.id) ?? [];
753
780
  const last = outs.reduce<Date | null>(
754
781
  (m, x) => (!m || x.createdAt > m ? x.createdAt : m),
755
782
  null,
@@ -820,12 +847,12 @@ export function createRunner(opts: RunnerOptions) {
820
847
  if (!opts.route || !opts.candidates)
821
848
  throw new Error("The board needs the route and candidates options");
822
849
  const suite = suiteOrThrow(suiteKey);
823
- await stopStuckRuns(suite.key);
824
- const [route, cases] = await Promise.all([
850
+ const [route, cases, prompt] = await Promise.all([
825
851
  opts.route(suite.operation),
826
852
  casesFor(suite.key, "ALL"),
853
+ opts.promptVersion(suite.operation),
854
+ stopStuckRuns(suite.key),
827
855
  ]);
828
- const prompt = await opts.promptVersion(suite.operation);
829
856
  const current = datasetVersion(cases);
830
857
  const { models, fallbackModels = models } = opts.candidates(
831
858
  suite.operation,
@@ -872,10 +899,12 @@ export function createRunner(opts: RunnerOptions) {
872
899
  (r.temperature ?? null) === (liveRun.temperature ?? null) &&
873
900
  (r.maxOutputTokens ?? null) === (liveRun.maxOutputTokens ?? null);
874
901
  const outputs = new Map<string, RunOutput[]>();
875
- for (const r of latestDone.values())
902
+ for (const [id, outs] of await outputsByRun(
903
+ [...latestDone.values()].map((r) => r.id),
904
+ ))
876
905
  outputs.set(
877
- r.id,
878
- (await store.listOutputs(r.id)).map((x) => ({
906
+ id,
907
+ outs.map((x) => ({
879
908
  caseId: x.caseId,
880
909
  checks: x.error ? null : (x.scores ?? []),
881
910
  costUsd: x.costUsd,
@@ -992,17 +1021,15 @@ export function createRunner(opts: RunnerOptions) {
992
1021
  (vsLive === "BETTER" || vsLive === "SAME"),
993
1022
  liveOnly: !fallbackModels.includes(model),
994
1023
  fallbackOnly: !models.includes(model),
1024
+ // The person choosing decides: tested or not, failed answers or
1025
+ // not, same provider or not. The board shows the evidence, the
1026
+ // suggestion recommends, and the change records its score.
995
1027
  canMakeFallback:
996
1028
  !baseline &&
997
1029
  fallbackModels.includes(model) &&
998
1030
  !variant &&
999
1031
  model !== route.model &&
1000
- model !== route.fallbackModel &&
1001
- opts.models[model]?.provider !== opts.models[route.model]?.provider &&
1002
- // A fallback only runs during an outage: it needs to be tested on
1003
- // these cases, not to beat the live model.
1004
- fresh &&
1005
- complete(r),
1032
+ model !== route.fallbackModel,
1006
1033
  };
1007
1034
  });
1008
1035
  // Live, then fallback, then tested rows by most right, then the rest.
package/src/stats.ts CHANGED
@@ -92,21 +92,34 @@ export function allPassed(checks: CheckResult[] | null): boolean {
92
92
  return checks !== null && checks.every((c) => c.pass !== false);
93
93
  }
94
94
 
95
- /** Sums each answer's partial credit; null when the suite gives none. */
95
+ /**
96
+ * Sums each answer's partial credit; null when the suite gives none. A
97
+ * failed answer (no checks) earns nothing and costs what a graded answer
98
+ * is worth on average, so a model that fails answers can't score 100%.
99
+ */
96
100
  export function sumUnits(
97
101
  outputs: { checks: CheckResult[] | null }[],
98
102
  ): { right: number; total: number } | null {
99
103
  let right = 0;
100
104
  let total = 0;
101
- let any = false;
102
- for (const o of outputs)
103
- for (const c of o.checks ?? [])
105
+ let graded = 0;
106
+ let failed = 0;
107
+ for (const o of outputs) {
108
+ if (!o.checks) {
109
+ failed++;
110
+ continue;
111
+ }
112
+ let counted = false;
113
+ for (const c of o.checks)
104
114
  if (c.units) {
105
- any = true;
115
+ counted = true;
106
116
  right += c.units.right;
107
117
  total += c.units.total;
108
118
  }
109
- return any ? { right, total } : null;
119
+ if (counted) graded++;
120
+ }
121
+ if (!graded) return null;
122
+ return { right, total: total + failed * (total / graded) };
110
123
  }
111
124
 
112
125
  /** One answer's score from 0 to 1: its partial credit, else all-or-nothing. */
package/src/store.ts CHANGED
@@ -179,6 +179,20 @@ export interface EvalStore {
179
179
  requestHash: string,
180
180
  since: Date,
181
181
  ): Promise<OutputRecord | null>;
182
+ /**
183
+ * The outputs of several tests in one call, for the board on a remote
184
+ * database. Optional: without it the runner calls listOutputs per test.
185
+ */
186
+ listOutputsFor?(runIds: string[]): Promise<OutputRecord[]>;
187
+ /**
188
+ * Which of these request hashes have an output findReusableOutput would
189
+ * return, in one call, for estimating a test's cost. Optional: without it
190
+ * the runner looks each hash up.
191
+ */
192
+ findReusableHashes?(
193
+ requestHashes: string[],
194
+ since: Date,
195
+ ): Promise<Set<string>>;
182
196
  createOutput(data: NewOutput): Promise<OutputRecord>;
183
197
  setOutputScores(id: string, scores: CheckResult[]): Promise<void>;
184
198
  }
package/src/testing.ts CHANGED
@@ -84,6 +84,9 @@ export function describeStoreContract(
84
84
  it("lists a suite's cases oldest first, leaving out retired ones", async () => {
85
85
  const store = await make();
86
86
  const first = await store.createCase(newCase("s"));
87
+ // Apart in time: two cases made in the same millisecond have no
88
+ // oldest one.
89
+ await new Promise((r) => setTimeout(r, 5));
87
90
  const second = await store.createCase(newCase("s"));
88
91
  await store.createCase(newCase("other"));
89
92
  await store.setCaseStatus(first.id, "RETIRED");
@@ -198,6 +201,61 @@ export function describeStoreContract(
198
201
  ).toBeNull();
199
202
  });
200
203
 
204
+ it("lists several tests' outputs and reusable hashes in one call, where it can", async () => {
205
+ const store = await make();
206
+ const c = await store.createCase(newCase("s"));
207
+ const [r1, r2, r3] = await Promise.all([
208
+ store.createRun(newRun("s")),
209
+ store.createRun(newRun("s")),
210
+ store.createRun(newRun("s")),
211
+ ]);
212
+ const base = {
213
+ caseId: c.id,
214
+ repeat: 1,
215
+ output: { text: "HELLO" },
216
+ error: null,
217
+ scores: null,
218
+ costUsd: 0.01,
219
+ ms: 12,
220
+ reused: false,
221
+ };
222
+ await store.createOutput({ ...base, runId: r1.id, requestHash: "a" });
223
+ await store.createOutput({ ...base, runId: r2.id, requestHash: "b" });
224
+ await store.createOutput({
225
+ ...base,
226
+ runId: r2.id,
227
+ requestHash: "c",
228
+ reused: true,
229
+ });
230
+ await store.createOutput({
231
+ ...base,
232
+ runId: r3.id,
233
+ requestHash: "d",
234
+ error: "boom",
235
+ output: null,
236
+ });
237
+ if (store.listOutputsFor) {
238
+ const outs = await store.listOutputsFor([r1.id, r2.id]);
239
+ expect(outs.map((o) => o.requestHash).sort()).toEqual(["a", "b", "c"]);
240
+ expect(await store.listOutputsFor([])).toEqual([]);
241
+ }
242
+ if (store.findReusableHashes) {
243
+ expect(
244
+ [
245
+ ...(await store.findReusableHashes(
246
+ ["a", "b", "c", "d", "e"],
247
+ new Date(0),
248
+ )),
249
+ ].sort(),
250
+ ).toEqual(["a", "b"]);
251
+ expect(
252
+ (await store.findReusableHashes(["a"], new Date(Date.now() + 60_000)))
253
+ .size,
254
+ ).toBe(0);
255
+ expect((await store.findReusableHashes([], new Date(0))).size).toBe(0);
256
+ }
257
+ });
258
+
201
259
  it("runs a whole test through the runner", async () => {
202
260
  const store = await make();
203
261
  const echo: Suite<{ text: string }, { text: string }, { want: string }> =
@@ -55,17 +55,23 @@ export default async function SuitePage({
55
55
  }) {
56
56
  await requireAdmin();
57
57
  const { suite: key } = await params;
58
- if (!SUITE_BY_KEY[key]) notFound();
59
- const b = await runner.board(key);
60
- // Records a deploy if the instructions changed under the live settings.
61
- await settings.syncPrompt(b.suite.operation);
58
+ const operation = SUITE_BY_KEY[key]?.operation;
59
+ if (!operation) notFound();
60
+ // The board and the settings load together: on a remote database each
61
+ // waits on round trips, so one after the other doubles the wait.
62
+ const [b, [history, liveSettings]] = await Promise.all([
63
+ runner.board(key),
64
+ // Records a deploy if the instructions changed under the live
65
+ // settings, before reading them.
66
+ settings
67
+ .syncPrompt(operation)
68
+ .then(() =>
69
+ Promise.all([settings.history(operation), settings.current(operation)]),
70
+ ),
71
+ ]);
62
72
  const { suite, rows } = b;
63
73
  const s = suggest(rows, suite.checks, suite.priority, MODELS);
64
74
  const testing = rows.some((r) => r.testing);
65
- const [history, liveSettings] = await Promise.all([
66
- settings.history(suite.operation),
67
- settings.current(suite.operation),
68
- ]);
69
75
  // What testing each model would cost now, counting answers it would reuse.
70
76
  const estimates = new Map(
71
77
  await Promise.all(
@@ -329,6 +335,13 @@ export default async function SuitePage({
329
335
  id={r.key}
330
336
  estimate={estimates.get(r.key)}
331
337
  />
338
+ {r.test && !r.test.stale && r.test.failedAnswers > 0 && (
339
+ <span className="text-right text-xs text-muted">
340
+ {r.test.failedAnswers}{" "}
341
+ {r.test.failedAnswers === 1 ? "answer" : "answers"}{" "}
342
+ failed on its last test
343
+ </span>
344
+ )}
332
345
  </div>
333
346
  </td>
334
347
  </tr>
@@ -279,21 +279,21 @@ function SuiteCard({
279
279
  </div>
280
280
 
281
281
  {s && (
282
- <div className="space-y-0.5 text-sm">
283
- <p>
284
- <span className="font-medium">v{version?.number ?? 1}</span>{" "}
285
- <span className="text-muted">
286
- · {since ? `live since ${day(since)}` : "defaults from code"}
287
- </span>
288
- </p>
289
- <p className="text-xs text-muted">
290
- {label(s.model)}
291
- {s.fallbackModel
292
- ? ` · fallback ${label(s.fallbackModel)}`
293
- : " · no fallback"}
294
- {s.reasoningEffort ? ` · reasoning ${s.reasoningEffort}` : ""}
295
- </p>
296
- </div>
282
+ <p className="text-sm text-muted">
283
+ <span className="font-semibold text-ink">{label(s.model)}</span>
284
+ {s.fallbackModel ? (
285
+ <>
286
+ {" "}
287
+ · fallback{" "}
288
+ <span className="font-semibold text-ink">
289
+ {label(s.fallbackModel)}
290
+ </span>
291
+ </>
292
+ ) : (
293
+ " · no fallback"
294
+ )}
295
+ {s.reasoningEffort ? ` · reasoning ${s.reasoningEffort}` : ""}
296
+ </p>
297
297
  )}
298
298
 
299
299
  <p className="text-sm">
@@ -329,6 +329,10 @@ function SuiteCard({
329
329
  <summary className="flex list-none items-center justify-between gap-2 p-3 text-sm font-medium">
330
330
  Versions
331
331
  <span className="flex items-center gap-1 text-xs font-normal text-muted">
332
+ <span className="font-medium text-ink">
333
+ v{version?.number ?? 1}
334
+ </span>{" "}
335
+ {since ? `live since ${day(since)}` : "defaults from code"} ·{" "}
332
336
  {versions} version{versions === 1 ? "" : "s"}
333
337
  <ChevronDown
334
338
  aria-hidden
@@ -2,6 +2,7 @@
2
2
 
3
3
  import { useState } from "react";
4
4
  import { Plus } from "lucide-react";
5
+ import { QUIET_BUTTON } from "./Submit";
5
6
  import { Card } from "./ui";
6
7
 
7
8
  /**
@@ -31,7 +32,7 @@ export function AddCaseHeader({
31
32
  onClick={() => {
32
33
  setOpen(!open);
33
34
  }}
34
- className="inline-flex items-center gap-1.5 rounded-md border border-line bg-card px-3 py-1.5 text-sm hover:bg-tint"
35
+ className={`inline-flex items-center gap-1.5 rounded-md px-3 py-1.5 text-sm ${QUIET_BUTTON}`}
35
36
  >
36
37
  <Plus aria-hidden className="h-4 w-4" />
37
38
  Add a case
@@ -7,17 +7,13 @@ import {
7
7
  type BoardRow,
8
8
  type CheckResult,
9
9
  } from "@crowandraven/evalkeeper";
10
- import {
11
- addCase,
12
- confirmAnswer,
13
- editAnswer,
14
- retireCase,
15
- } from "@/lib/evalkeeper/actions";
10
+ import { addCase, editAnswer, retireCase } from "@/lib/evalkeeper/actions";
16
11
  import { Check, ChevronRight, CircleAlert, X } from "lucide-react";
17
12
  import { store } from "@/lib/evalkeeper";
18
13
  import { FieldValues, Fields } from "./Fields";
19
14
  import { AddCaseHeader } from "./AddCase";
20
15
  import { CaseMenu } from "./CaseMenu";
16
+ import { ConfirmAnswer } from "./ConfirmAnswer";
21
17
  import { Submit } from "./Submit";
22
18
  import { Chip, type ChipTone } from "./ui";
23
19
  import { InfoTip, Tip } from "./Tip";
@@ -64,9 +60,12 @@ export async function AnswerKey({
64
60
  r.test && !r.variant ? [[r.test.runId, r.label] as const] : [],
65
61
  ),
66
62
  );
67
- const outputs = (
68
- await Promise.all([...modelByRun.keys()].map((id) => store.listOutputs(id)))
69
- ).flat();
63
+ // One query where the store can: one per test is slow on a remote
64
+ // database.
65
+ const runIds = [...modelByRun.keys()];
66
+ const outputs = store.listOutputsFor
67
+ ? await store.listOutputsFor(runIds)
68
+ : (await Promise.all(runIds.map((id) => store.listOutputs(id)))).flat();
70
69
  const byCase = new Map<string, { model: string; output: OutputRecord }[]>();
71
70
  for (const o of outputs) {
72
71
  byCase.set(o.caseId, [
@@ -189,7 +188,11 @@ function CaseItem({
189
188
  const tags = Array.isArray(c.tags) ? c.tags : [];
190
189
 
191
190
  return (
192
- <details className="group rounded-md border border-line bg-card">
191
+ <details
192
+ className="group rounded-md border border-line bg-card"
193
+ // Where ConfirmAnswer moves on to after confirming the case above.
194
+ data-pending={answer?.status === "PENDING" ? "true" : undefined}
195
+ >
193
196
  <summary className="flex cursor-pointer list-none flex-wrap items-center justify-between gap-2 p-3 text-sm">
194
197
  <span className="font-medium">
195
198
  <ChevronRight
@@ -312,11 +315,7 @@ function CaseItem({
312
315
  )}
313
316
 
314
317
  {answer?.status === "PENDING" && (
315
- <form action={confirmAnswer}>
316
- <input type="hidden" name="suite" value={suite.key} />
317
- <input type="hidden" name="label" value={answer.id} />
318
- <Submit>Confirm this answer</Submit>
319
- </form>
318
+ <ConfirmAnswer suite={suite.key} labelId={answer.id} />
320
319
  )}
321
320
 
322
321
  <CaseMenu