Pular para o conteúdo

Arize Phoenix - Observabilidade e Avaliação de LLM

Arize Phoenix - Observabilidade e Avaliação de LLM

Arize Phoenix é uma plataforma de observabilidade e avaliação de código aberto para aplicações LLM e agentes. É nativa do OpenTelemetry: a instrumentação emite traces OTLP padrão que Phoenix coleta, para que você possa ver cada prompt, chamada de modelo, invocação de ferramenta e passo de recuperação, depois execute avaliações sobre eles. Executa localmente (notebook, contêiner ou servidor auto-hospedado) e se integra com frameworks comuns através de instrumentadores OpenInference.

Instalação

MétodoComando
pippip install arize-phoenix
Executar um servidor localphoenix serve (UI em http://localhost:6006)
Dockerdocker run -p 6006:6006 arizephoenix/phoenix:latest
Em um notebookimport phoenix as px; px.launch_app()
Extras de instrumentaçãopip install openinference-instrumentation-openai (e outros)

Início Rápido de Rastreamento

from phoenix.otel import register

# Configurar o tracer provider e apontá-lo para um coletor Phoenix
tracer_provider = register(
    project_name="my-llm-app",
    endpoint="http://localhost:6006/v1/traces",
)

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

# ...agora suas chamadas de LLM aparecem como traces no Phoenix
ConceitoSignificado
SpanUma operação (chamada de LLM, chamada de ferramenta, passo de recuperador)
TraceUma árvore de spans para uma solicitação
ProjectUma coleção nomeada de traces
OpenInferenceAs convenções semânticas que Phoenix usa sobre OTLP

Instrumentação de Framework

BibliotecaPacote instrumentador
OpenAIopeninference-instrumentation-openai
LangChainopeninference-instrumentation-langchain
LlamaIndexopeninference-instrumentation-llama-index
Anthropicopeninference-instrumentation-anthropic
DSPyopeninference-instrumentation-dspy
Auto (muitos)habilitar via register(auto_instrument=True)

Spans Manuais

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

Avaliação

Phoenix pode pontuar traces (especialmente avaliações LLM-as-judge) e anexar 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"],
)
AvaliaçãoMede
HallucinationA resposta é fundamentada no contexto?
QA correctnessA resposta está correta em relação à referência?
RelevanceOs documentos recuperados são relevantes para a consulta?
ToxicityConteúdo inseguro/tóxico
CustomSeu próprio template de LLM-as-judge ou código

Datasets & Experimentos

CapacidadeUso
DatasetsCurar exemplos de entrada/saída de traces
ExperimentsExecutar uma tarefa sobre um dataset e pontuá-lo
px.Client().upload_dataset(...)Criar um dataset programaticamente
Compare runsRastrear qualidade através de mudanças de prompt/modelo

Depuração de Recuperação

RecursoAjuda com
Atributos de span para documentos recuperadosVer exatamente o que RAG buscou
Visualizações de embedding/UMAPDetectar clusters e drift em embeddings
Avaliação na relevância de recuperaçãoQuantificar qualidade de recuperação por consulta

Phoenix vs Outras Observabilidades de LLM

AspectoArize PhoenixLangfuseMLflow
PadrãoOpenTelemetry/OTLPOTel + SDKMLflow tracing
FocoRastreamento + avaliação + depuração de recuperaçãoRastreamento + prompts + avaliaçãoPlataforma ML completa + LLM
Self-hostSimSimSim
Melhor paraAvaliação nativa OTel & depuração de RAGProduct analytics + promptsTimes já no MLflow

Recursos