Turn OTel GenAI spans into evals

The GenAI semantic conventions are still moving, so exports in the wild use several different spellings at once. GetEvals accepts all of them: the current <code>gen_ai.input.messages</code> parts model, the older <code>gen_ai.user.message</code> span events, OpenInference's flattened <code>llm.input_messages.0.message.*</code> attributes, and the Vercel AI SDK's <code>ai.prompt.*</code> JSON-string attributes.

Drop your traces here

JSONL · JSON · NDJSON · CSV · TSV · TXT · GZ · ZIP

Getting OTLP JSON out

  1. 1Use the OTel collector's file exporter, or the file exporter in your SDK, to write OTLP JSON.
  2. 2From Jaeger: open the trace and use Download JSON.
  3. 3From Phoenix: px.Client().get_spans_dataframe(), then save as CSV or JSON.
  4. 4Drop the file above. Spans are grouped by traceId and ordered by start time; tool spans become real tool calls with their results.

Content capture is opt-in in most instrumentations. If your spans carry only tool names and token counts, the report will say the traces have no content rather than inventing an analysis — turn on content capture and re-export.

What you get back

A self-contained HTML report: the failure modes discovered in your own traces (not a generic checklist), a heatmap of which traces hit which mode, the exact quoted evidence behind every verdict, and the judge's own reliability numbers. Plus downloadable evals — a promptfoo config, an OpenAI Evals data file, and a portable judge suite — so the analysis turns into a regression suite you keep.

Related