Aller au contenu

Arize Phoenix - Feuille de triche observabilité et évaluation LLM

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éthodeCommande
pippip install arize-phoenix
Exécuter un serveur localphoenix serve (UI à http://localhost:6006)
Dockerdocker run -p 6006:6006 arizephoenix/phoenix:latest
Dans un notebookimport phoenix as px; px.launch_app()
Extras d”instrumentationpip 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
ConceptSens
SpanUne opération (appel LLM, appel d”outil, étape du récupérateur)
TraceUn arbre de spans pour une requête
ProjectUne collection nommée de traces
OpenInferenceLes conventions sémantiques que Phoenix utilise sur OTLP

Instrumentation du framework

BibliothèquePaquet instrumentor
OpenAIopeninference-instrumentation-openai
LangChainopeninference-instrumentation-langchain
LlamaIndexopeninference-instrumentation-llama-index
Anthropicopeninference-instrumentation-anthropic
DSPyopeninference-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"],
)
ÉvaluationMesure
HallucinationLa réponse est-elle fondée sur le contexte ?
Correction QALa réponse est-elle correcte par rapport à la référence ?
PertinenceLes documents récupérés sont-ils pertinents à la requête ?
ToxicitéContenu non sûr/toxique
CustomVotre propre LLM-as-judge ou modèle de code

Ensembles de données et expériences

CapacitéUtilisation
DatasetsCurer les entrées/sorties d”exemple à partir de traces
ExperimentsExé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 runsSuivre 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ésVoir exactement ce que RAG a récupéré
Vues embedding/UMAPRepérer les clusters et la dérive dans les embeddings
Eval sur la pertinence de la récupérationQuantifier la qualité de la récupération par requête

Phoenix vs autre observabilité LLM

AspectArize PhoenixLangfuseMLflow
StandardOpenTelemetry/OTLPOTel + SDKSuivi MLflow
FocusSuivi + éval + débogage de récupérationSuivi + prompts + évalPlateforme ML complète + LLM
Auto-hébergementOuiOuiOui
Meilleur pourÉval native OTel et débogage RAGAnalyses de produit + promptsLes équipes déjà sur MLflow

Ressources