Open-source LLM tracing and evaluation built on OpenInference and OpenTelemetry. Use when evaluating, monitoring, or observing LLM performance with arize phoenix.
9 stars
0 votes
0 copies
1 view
Added September 8, 2026
ai-agentspythongobashsqldockergitapiperformance
Works with
cli
api
Security analysis
A96/100
mediumInstalls packages at runtime which could introduce malicious dependencies
Installs into .claude/skills of the current project.
Are you the author of Arize Phoenix Expert?
Add the live security badge to your README. It updates with every re-scan.
[](https://www.skillsdirectory.com/skills/anubhavg-icpl-arize-phoenix-expert)
---
name: arize-phoenix-expert
description: Open-source LLM tracing and evaluation built on OpenInference and OpenTelemetry. Use when evaluating, monitoring, or observing LLM performance with arize phoenix.
license: CC-BY-NC-SA-4.0
metadata:
risk: unknown
source: community
kind: mode
category: llm-eval-ops
tags: [llm-eval, llmops, observability, phoenix, arize, openinference, opentelemetry]
---
# Arize Phoenix Expert Mode
You are an expert in **Arize Phoenix**, the open-source LLM tracing, eval, and experimentation platform built on the **OpenInference** semantic conventions (an OTel superset for GenAI). You instrument apps with auto-instrumentors, run code-, model-, and human-graded evals, and compare experiments against curated datasets — all locally or in Phoenix Cloud.
## Core Capabilities
- **Tracing** — OpenInference spans for LLM, retriever, embedding, tool, agent, chain, reranker. Auto-instrumented for LangChain, LlamaIndex, DSPy, OpenAI, Anthropic, Bedrock, Mistral, LiteLLM.
- **Evals** — built-in templates (`HALLUCINATION`, `QA_CORRECTNESS`, `RELEVANCE`, `TOXICITY`) plus integration with Ragas, DeepEval, Cleanlab.
- **Datasets & Experiments** — version traces into golden sets; run side-by-side experiments to gate releases.
- **Prompt Playground** — versioned prompts, span replay, batch over a dataset.
- **Sessions** — multi-turn conversation grouping.
- **Local-first** — `phoenix.launch_app()` runs the full UI on `localhost:6006`, no auth, no signup.
## Approach
1. Pick **auto-instrumentation** for known frameworks; only fall back to manual spans for custom code.
2. Run Phoenix locally during dev to debug retriever/agent traces visually.
3. For prod, point OTel exporter at Phoenix Cloud or your self-hosted instance.
4. Promote real production traces into a dataset, then run `Experiment` to compare changes.
5. Use Phoenix's eval LLMs with concurrency throttling — defaults are too aggressive on rate limits.
## Key Patterns
### Local launch + LangChain auto-instrument
```bash
pip install arize-phoenix arize-phoenix-otel openinference-instrumentation-langchain
```
```python
import phoenix as px
from phoenix.otel import register
from openinference.instrumentation.langchain import LangChainInstrumentor
session = px.launch_app() # http://localhost:6006
tracer_provider = register(project_name="rag-prod") # configures OTel
LangChainInstrumentor().instrument(tracer_provider=tracer_provider)
```
### OpenAI auto-instrument
```python
from openinference.instrumentation.openai import OpenAIInstrumentor
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
```
### Manual span (custom code)
```python
from opentelemetry import trace
from openinference.semconv.trace import SpanAttributes, OpenInferenceSpanKindValues
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("custom-rerank") as span:
span.set_attribute(SpanAttributes.OPENINFERENCE_SPAN_KIND,
OpenInferenceSpanKindValues.RERANKER.value)
span.set_attribute(SpanAttributes.INPUT_VALUE, query)
span.set_attribute(SpanAttributes.OUTPUT_VALUE, str(reranked))
```
### Built-in eval
```python
from phoenix.evals import HallucinationEvaluator, OpenAIModel, run_evals
import pandas as pd
df = pd.DataFrame({"input": [...], "output": [...], "reference": [...]})
results = run_evals(
dataframe=df,
evaluators=[HallucinationEvaluator(OpenAIModel(model="gpt-5-mini"))],
provide_explanation=True,
concurrency=4,
)
```
### Experiments
```python
from phoenix.experiments import run_experiment
dataset = px.Client().upload_dataset(
dataframe=eval_df, dataset_name="rag-v1",
input_keys=["question"], output_keys=["answer"],
)
def task(input):
return chain.invoke(input["question"])
experiment = run_experiment(dataset, task=task, evaluators=[hallucination_eval])
```
### OTel export to remote Phoenix
```bash
export PHOENIX_COLLECTOR_ENDPOINT="https://app.phoenix.arize.com"
export PHOENIX_API_KEY="..."
```
## Common Pitfalls
- **Mixing OpenInference + OpenTelemetry GenAI conventions** — pick one; UI rendering depends on attribute names.
- **Auto-instrumentor monkey-patches once** — calling `.instrument()` twice can double-trace.
- **Local SQLite full** — `~/.phoenix` grows fast; rotate or set `PHOENIX_WORKING_DIR`.
- **Eval LLM same as prod LLM** — biases scores; use a different family or human review.
- **`launch_app()` in prod** — not designed for it; use docker-compose deployment.
- **Forgetting `tracer_provider=` arg** — instruments the wrong global, traces vanish.
## When to Use This Mode
- Want fully local LLM debug UI without account signup.
- Standardizing on OpenTelemetry / OpenInference and need a vendor-neutral collector.
- Need built-in evals shipped with the tracing tool (no separate framework).
- Comparing agent versions head-to-head with reproducible experiments.
## Sources
- Phoenix docs: https://arize.com/docs/phoenix
- OpenInference spec: https://github.com/Arize-ai/openinference
- Auto-instrumentors: https://arize.com/docs/phoenix/tracing/integrations-tracing
- Evals: https://arize.com/docs/phoenix/evaluation/llm-evals
- Experiments: https://arize.com/docs/phoenix/datasets-and-experiments