Skip to main content
Case fields:
  • input — required; passed to the runner
  • expected — optional; expected output (Contains, Compare, and similar)
  • expected_trace / expectedTrace — optional; only for Trajectory. Trajectory config that describes the accepted tool scenarios
  • any other key — optional custom field; becomes a TEXT column with that exact title

Inline cases

Extra keys become sparse TEXT columns (empty when missing). Point scorers at the same title — for example contains_scorer(source_column="topic", expected="math"). Names must not collide with reserved columns (input, expected, Output, Trace, expected_trace / expectedTrace, or legacy Input / Expected / Expected Trace) or with supporting column titles.

Use a dashboard Table

Pass a Table id. The SDK reads input / expected / expected_trace (or expectedTrace in JS) plus other non-reserved TEXT columns from that sheet and writes results to a new experiment sheet. Legacy titles (Input, Expected, Expected Trace) still resolve.
Optional sheet_id / sheetId picks a non-default source sheet. Omit it to use the Table’s default sheet.

Common mistakes

  • Empty dataset or a case without input
  • Passing a Table title instead of table_id / tableId
  • Setting top-level sheet_id on evaluate(...) — that targets the experiment sheet and is rejected
  • Custom field names that collide with reserved columns or supporting column titles