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.