Share an Arize Phoenix trace or eval

Phoenix is a local-first tool and that is mostly a feature: px.launch_app(), a browser tab, spans appearing as your chain runs. The cost shows up the moment someone else needs to look — the app is on localhost:6006, and the only sharing mechanism is a call where you drive the mouse.

Export the spans

import phoenix as px

client = px.Client()
spans = client.get_spans_dataframe()

cols = ["name", "span_kind", "status_code", "latency_ms",
        "attributes.input.value", "attributes.output.value"]
spans[cols].sort_values("latency_ms", ascending=False).to_html(
    "phoenix-spans.html", index=False, escape=True
)

Eval output is the same shape:

from phoenix.evals import llm_classify

evals = llm_classify(dataframe=df, template=HALLUCINATION_PROMPT, model=model,
                     rails=["factual", "hallucinated"], provide_explanation=True)
evals.to_html("phoenix-evals.html", index=False, escape=True)

Drag either file into the app, or publish from a job:

curl -fsS -X PATCH "https://commareports.com/api/v1/reports/$REPORT_ID" \
  -H "Authorization: Bearer $COMMA_API_TOKEN" \
  -H "Content-Type: application/json" \
  -d "$(jq -n --rawfile html phoenix-evals.html \
        --arg title "Hallucination sweep — $(date +%F)" '{title: $title, html: $html}')"

Why publish rather than re-run

The trace that mattered was produced by a specific input on a specific day. A teammate re-running the chain gets a different trace, and the conversation starts over. A published table is the same rows for everyone, with the disagreement attached:

  • Anchored threads — "this span is the one adding 4 seconds" sits on the row. See commenting on HTML.
  • Revisions — one report id per sweep; the URL keeps the history.
  • Access per report — spans contain prompt and user text. Keep the report private, team-only, or domain-gated; see the sharing model.

Limits

  • Entry HTML: 5 MB. Span input/output values are the bulk of it — truncate them, or export the slowest few hundred spans rather than all of them.
  • Assets: 25 MB per file, 250 MB and 500 files per report.
  • 60 requests/minute per token.

Try it

Comma is free — unlimited reports, unlimited commenters, unlimited revision history.

Publish a trace report →

Related