Arize Phoenix - Feuille de triche observabilité et évaluation LLM
Arize Phoenix est une plateforme open-source d”observabilité et d”évaluation pour les applications et les agents LLM. Elle est native OpenTelemetry : l”instrumentation émet des traces OTLP standard que Phoenix collecte, vous pouvez donc voir chaque prompt, appel de modèle, invocation d”outil et étape de récupération, puis exécuter des évaluations sur eux. Il s”exécute localement (notebook, conteneur ou serveur auto-hébergé) et s”intègre aux frameworks communs via les instrumenteurs OpenInference.
Installation
| Méthode | Commande |
|---|
| pip | pip install arize-phoenix |
| Exécuter un serveur local | phoenix serve (UI à http://localhost:6006) |
| Docker | docker run -p 6006:6006 arizephoenix/phoenix:latest |
| Dans un notebook | import phoenix as px; px.launch_app() |
| Extras d”instrumentation | pip install openinference-instrumentation-openai (et autres) |
Démarrage rapide du suivi
from phoenix.otel import register
# Configurer le fournisseur de suivi et le pointer vers un collecteur Phoenix
tracer_provider = register(
project_name="my-llm-app",
endpoint="http://localhost:6006/v1/traces",
)
# Auto-instrumenter une bibliothèque (exemple : OpenAI)
from openinference.instrumentation.openai import OpenAIInstrumentor
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
# ...maintenant vos appels LLM apparaissent comme des traces dans Phoenix
| Concept | Sens |
|---|
| Span | Une opération (appel LLM, appel d”outil, étape du récupérateur) |
| Trace | Un arbre de spans pour une requête |
| Project | Une collection nommée de traces |
| OpenInference | Les conventions sémantiques que Phoenix utilise sur OTLP |
Instrumentation du framework
| Bibliothèque | Paquet instrumentor |
|---|
| OpenAI | openinference-instrumentation-openai |
| LangChain | openinference-instrumentation-langchain |
| LlamaIndex | openinference-instrumentation-llama-index |
| Anthropic | openinference-instrumentation-anthropic |
| DSPy | openinference-instrumentation-dspy |
| Auto (beaucoup) | activer via register(auto_instrument=True) |
Spans manuels
from opentelemetry import trace
tracer = trace.get_tracer(__name__)
with tracer.start_as_current_span("retrieve") as span:
span.set_attribute("input.value", query)
docs = retriever(query)
span.set_attribute("retrieval.documents", len(docs))
Évaluation
Phoenix peut évaluer les traces (en particulier les évaluations LLM-as-judge) et joindre les résultats.
from phoenix.evals import llm_classify, OpenAIModel, HALLUCINATION_PROMPT_TEMPLATE
results = llm_classify(
dataframe=spans_df,
model=OpenAIModel(model="gpt-4o"),
template=HALLUCINATION_PROMPT_TEMPLATE,
rails=["factual", "hallucinated"],
)
| Évaluation | Mesure |
|---|
| Hallucination | La réponse est-elle fondée sur le contexte ? |
| Correction QA | La réponse est-elle correcte par rapport à la référence ? |
| Pertinence | Les documents récupérés sont-ils pertinents à la requête ? |
| Toxicité | Contenu non sûr/toxique |
| Custom | Votre propre LLM-as-judge ou modèle de code |
Ensembles de données et expériences
| Capacité | Utilisation |
|---|
| Datasets | Curer les entrées/sorties d”exemple à partir de traces |
| Experiments | Exécuter une tâche sur un ensemble de données et la noter |
px.Client().upload_dataset(...) | Créer un ensemble de données par programmation |
| Compare runs | Suivre la qualité à travers les changements de prompt/modèle |
Débogage de la récupération
| Fonctionnalité | Aide avec |
|---|
| Attributs de span pour les documents récupérés | Voir exactement ce que RAG a récupéré |
| Vues embedding/UMAP | Repérer les clusters et la dérive dans les embeddings |
| Eval sur la pertinence de la récupération | Quantifier la qualité de la récupération par requête |
Phoenix vs autre observabilité LLM
| Aspect | Arize Phoenix | Langfuse | MLflow |
|---|
| Standard | OpenTelemetry/OTLP | OTel + SDK | Suivi MLflow |
| Focus | Suivi + éval + débogage de récupération | Suivi + prompts + éval | Plateforme ML complète + LLM |
| Auto-hébergement | Oui | Oui | Oui |
| Meilleur pour | Éval native OTel et débogage RAG | Analyses de produit + prompts | Les équipes déjà sur MLflow |
Ressources