Ir al contenido

Arize Phoenix - Observabilidad y Evaluación de LLM

Arize Phoenix - Observabilidad y Evaluación de LLM

Arize Phoenix es una plataforma abierta de observabilidad y evaluación para aplicaciones LLM y agentes. Es nativa de OpenTelemetry: la instrumentación emite trazas OTLP estándar que Phoenix recopila, para que puedas ver cada prompt, llamada de modelo, invocación de herramienta y paso de recuperación, luego ejecutar evaluaciones sobre ellos. Se ejecuta localmente (notebook, contenedor o servidor auto-hospedado) e integra con marcos comunes a través de instrumentadores OpenInference.

Instalación

MétodoComando
pippip install arize-phoenix
Ejecutar un servidor localphoenix serve (IU en http://localhost:6006)
Dockerdocker run -p 6006:6006 arizephoenix/phoenix:latest
En un notebookimport phoenix as px; px.launch_app()
Extras de instrumentaciónpip install openinference-instrumentation-openai (y otros)

Inicio Rápido de Tracing

from phoenix.otel import register

# Configurar el proveedor de tracer y apuntarlo a un recopilador Phoenix
tracer_provider = register(
    project_name="my-llm-app",
    endpoint="http://localhost:6006/v1/traces",
)

# Auto-instrumentar una biblioteca (ejemplo: OpenAI)
from openinference.instrumentation.openai import OpenAIInstrumentor
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)

# ...ahora tus llamadas LLM aparecen como trazas en Phoenix
ConceptoSignificado
SpanUna operación (llamada LLM, llamada de herramienta, paso de recuperador)
TraceUn árbol de spans para una solicitud
ProjectUna colección nombrada de trazas
OpenInferenceLas convenciones semánticas que Phoenix usa sobre OTLP

Instrumentación de Marco

BibliotecaPaquete de instrumentador
OpenAIopeninference-instrumentation-openai
LangChainopeninference-instrumentation-langchain
LlamaIndexopeninference-instrumentation-llama-index
Anthropicopeninference-instrumentation-anthropic
DSPyopeninference-instrumentation-dspy
Auto (muchas)activar vía register(auto_instrument=True)

Spans Manuales

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))

Evaluación

Phoenix puede puntuar trazas (especialmente evaluaciones LLM-as-judge) y adjuntar resultados.

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"],
)
EvaluaciónMide
Hallucination¿Está la respuesta fundamentada en el contexto?
QA correctness¿Es la respuesta correcta versus referencia?
Relevance¿Son los documentos recuperados relevantes para la consulta?
ToxicityContenido inseguro/tóxico
CustomTu propia plantilla LLM-as-judge o de código

Conjuntos de Datos y Experimentos

CapacidadUso
DatasetsCurar ejemplos de entrada/salida de trazas
ExperimentsEjecutar una tarea sobre un conjunto de datos y puntuarla
px.Client().upload_dataset(...)Crear un conjunto de datos programáticamente
Compare runsRastrear calidad entre cambios de prompt/modelo

Depuración de Recuperación

CaracterísticaAyuda con
Atributos de span para documentos recuperadosVer exactamente qué obtuvo RAG
Vistas de embedding/UMAPDetectar clusters y deriva en embeddings
Evaluación de relevancia de recuperaciónCuantificar calidad de recuperación por consulta

Phoenix vs Otra Observabilidad de LLM

AspectoArize PhoenixLangfuseMLflow
EstándarOpenTelemetry/OTLPOTel + SDKMLflow tracing
EnfoqueTracing + eval + depuración de recuperaciónTracing + prompts + evalPlataforma ML completa + LLM
Auto-hospedado
Mejor paraEval nativa de OTel y depuración RAGAnálisis de productos + promptsEquipos ya en MLflow

Recursos