UNPKG

axiom

Version:

Axiom AI SDK provides - an API to wrap your AI calls with observability instrumentation. - offline evals - online evals

96 lines (64 loc) 2.62 kB
[**axiom v0.51.1**](../../../README.md) *** [axiom](../../../README.md) / [evals/online](../README.md) / onlineEval # Function: onlineEval() > **onlineEval**\<`TInput`, `TOutput`, `Name`, `TScorers`\>(`name`, `params`): `Promise`\<`Partial`\<`Record`\<`Extract`\<`InferScorerName`\<`TScorers`\[`number`\]\>, `string`\>, `InferOnlineEvalResult`\<`TScorers`\>\>\>\> Run online evaluation scorers against production outputs. Returns a promise that resolves to scorer results. Use `void onlineEval(...)` for fire-and-forget, or `await onlineEval(...)` when you need to wait for completion (e.g., before flushing telemetry in short-lived processes). Each eval span links back to the originating generation span via an OpenTelemetry span link. Parent/child hierarchy follows natural context propagation — inside `withSpan` the eval is a child, outside it depends on the active context. ## Usage Patterns **Inside withSpan (recommended):** Active span is automatically detected and linked. ```ts await withSpan({ capability: 'qa', step: 'answer' }, async () => { const response = await generateText({ ... }); void onlineEval( 'my-eval', { capability: 'qa', step: 'answer' }, { output: response.text, scorers: [formatScorer] } ); return response.text; }); ``` **Deferred evaluation with explicit link:** Pass the originating span's context for linking when evaluating later. Supports single or multiple span contexts. ```ts let spanCtx: SpanContext; const result = await withSpan({ ... }, async (span) => { spanCtx = span.spanContext(); return await generateText({ ... }); }); void onlineEval('my-eval', { ..., links: spanCtx }, { output: result, scorers }); // Or link to multiple spans: void onlineEval('my-eval', { ..., links: [spanCtx1, spanCtx2] }, { output, scorers }); ``` **Awaiting for flush (short-lived processes):** ```ts await onlineEval('my-eval', { ... }, { output, scorers }); await flushTelemetry(); ``` ## Type Parameters ### TInput `TInput` ### TOutput `TOutput` ### Name `Name` *extends* `string` ### TScorers `TScorers` *extends* readonly `ScorerEntry`\<`TInput`, `TOutput`\>[] ## Parameters ### name `ValidateName`\<`Name`\> Eval name (A-Z, a-z, 0-9, -, _ only). Used as the span name and `eval.name` attribute. ### params [`OnlineEvalParams`](../type-aliases/OnlineEvalParams.md)\<`TInput`, `TOutput`, `TScorers`\> Evaluation configuration ## Returns `Promise`\<`Partial`\<`Record`\<`Extract`\<`InferScorerName`\<`TScorers`\[`number`\]\>, `string`\>, `InferOnlineEvalResult`\<`TScorers`\>\>\>\> Promise resolving to scorer results keyed by scorer name