> ## Documentation Index
> Fetch the complete documentation index at: https://wb-21fd5541-docs-2516.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# EvaluationLogger

> TypeScript SDK reference

export const GitHubLink = ({url, compact = false}) => <a href={url} target="_blank" rel="noopener noreferrer" className={compact ? "source-link" : "github-source-link"}>
    {compact ? "View source" : <>
    <svg width="20" height="20" viewBox="0 0 24 24" fill="currentColor" xmlns="http://www.w3.org/2000/svg">
      <path d="M12 0C5.37 0 0 5.37 0 12c0 5.31 3.435 9.795 8.205 11.385.6.105.825-.255.825-.57 0-.285-.015-1.23-.015-2.235-3.015.555-3.795-.735-4.035-1.41-.135-.345-.72-1.41-1.23-1.695-.42-.225-1.02-.78-.015-.795.945-.015 1.62.87 1.845 1.23 1.08 1.815 2.805 1.305 3.495.99.105-.78.42-1.305.765-1.605-2.67-.3-5.46-1.335-5.46-5.925 0-1.305.465-2.385 1.23-3.225-.12-.3-.54-1.53.12-3.18 0 0 1.005-.315 3.3 1.23.96-.27 1.98-.405 3-.405s2.04.135 3 .405c2.295-1.56 3.3-1.23 3.3-1.23.66 1.65.24 2.88.12 3.18.765.84 1.23 1.905 1.23 3.225 0 4.605-2.805 5.625-5.475 5.925.435.375.81 1.095.81 2.22 0 1.605-.015 2.895-.015 3.3 0 .315.225.69.825.57A12.02 12.02 0 0024 12c0-6.63-5.37-12-12-12z" />
    </svg>
    GitHub source
      </>}
  </a>;

<GitHubLink url="https://github.com/wandb/weave/blob/7c9efdc9fe05ffcaf2430dd652ef9bc5b3ffdfaa/sdks/node/src/evaluationLogger.ts#L556" />

EvaluationLogger enables incremental logging of predictions and scores.

Unlike the traditional Evaluation class which requires upfront dataset and batch processing,
EvaluationLogger allows you to log predictions as they happen, with flexible scoring.

## Example

```ts twoslash theme={null}
// @noErrors
const ev = new EvaluationLogger({name: 'my-eval', dataset: 'my-dataset'});

for (const example of streamingData) {
  const output = await myModel.predict(example);
  const pred = ev.logPrediction(example, output);

  if (shouldScore(output)) {
    pred.logScore("accuracy", calculateAccuracy(output));
  }
  pred.finish();
}

await ev.logSummary();
```

## Constructor

> **new EvaluationLogger**(`options`): `EvaluationLogger`

### Parameters

<ParamField path="options" type="object" required>
  <Expandable title="properties" defaultOpen>
    <ParamField path="attributes" type="Record<string, any>" />

    <ParamField path="dataset" type="string | Dataset<DatasetRow>">
      See [`Dataset`](./dataset).
    </ParamField>

    <ParamField path="description" type="string" />

    <ParamField path="model" type="WeaveObject | { name?: string; }">
      See [`WeaveObject`](./weaveobject).
    </ParamField>

    <ParamField path="name" type="string" required />

    <ParamField path="scorers" type="string[]" />
  </Expandable>
</ParamField>

### Returns

`EvaluationLogger`

## Methods

### logPrediction()

> **logPrediction**(`inputs`, `output`): [`ScoreLogger`](./scorelogger)

Log a prediction with its input and output (synchronous version).
Creates a predict\_and\_score call (with child predict call).
Returns a ScoreLogger immediately for adding scores.

This method returns the ScoreLogger synchronously. Operations on the
ScoreLogger (logScore, finish) will be queued and executed when initialization completes.

#### Parameters

<ParamField path="inputs" type="Record<string, any>" required />

<ParamField path="output" type="any" required />

#### Returns

[`ScoreLogger`](./scorelogger)

#### Example

```ts twoslash theme={null}
// @noErrors
// Fire-and-forget style
const scoreLogger = evalLogger.logPrediction({input: 'test'}, 'output');
scoreLogger.logScore('accuracy', 0.95);
scoreLogger.finish();
await evalLogger.logSummary(); // Waits for everything
```

***

### logPredictionAsync()

> **logPredictionAsync**(`inputs`, `output`): `Promise`\<[`ScoreLogger`](./scorelogger)>

Log a prediction with its input and output (async version).
Like logPrediction() but returns a Promise that resolves when
the prediction call is fully initialized.

Use this if you need to await the initialization before proceeding.

#### Parameters

<ParamField path="inputs" type="Record<string, any>" required />

<ParamField path="output" type="any" required />

#### Returns

`Promise`\<[`ScoreLogger`](./scorelogger)>

#### Example

```ts twoslash theme={null}
// @noErrors
// Awaitable style
const scoreLogger = await evalLogger.logPredictionAsync({input: 'test'}, 'output');
await scoreLogger.logScore('accuracy', 0.95);
await scoreLogger.finish();
```

***

### logSummary()

> **logSummary**(`summary?`): `Promise`\<`void`>

Log a summary and finalize the evaluation.
Creates a summarize call and finishes the evaluate call.

This method can be called without await (fire-and-forget), but internally
it will wait for all pending operations to complete.

#### Parameters

<ParamField path="summary" type="Record<string, any>" />

#### Returns

`Promise`\<`void`>
