Phoenix 是一个开源的 AI 可观测性与评估平台,面向 LLM 应用提供追踪、评估、数据集、实验和实时监控能力。
用途
Phoenix 适用于以下场景:使用详细追踪调试 LLM 应用问题;在数据集上运行系统化评估;实时监控生产 LLM 系统;构建用于提示/模型对比的实验流水线;以及在不被供应商锁定的前提下自托管可观测性。
主要能力
- 追踪:基于 OpenTelemetry 的追踪采集,支持任意 LLM 框架。
- 评估:提供 LLM-as-judge 评估器用于质量评估。
- 数据集:版本化测试集,用于回归测试。
- 实验:对比提示、模型和配置。
- Playground:支持多模型的交互式提示测试。
- 开源:可使用 PostgreSQL 或 SQLite 自托管。
安装
pip install arize-phoenix
# With specific backends
pip install arize-phoenix[embeddings] # Embedding analysis
pip install arize-phoenix-otel # OpenTelemetry config
pip install arize-phoenix-evals # Evaluation framework
pip install arize-phoenix-client # Lightweight REST client
使用方式
启动 Phoenix 服务器:
import phoenix as px
# Launch in notebook (ThreadServer mode)
session = px.launch_app()
# View UI
session.view() # Embedded iframe
print(session.url) # http://localhost:6006
命令行服务器(生产):
# Start Phoenix server
phoenix serve
# With PostgreSQL
export PHOENIX_SQL_DATABASE_URL="postgresql://user:pass@host/db"
phoenix serve --port 6006
基础追踪:
from phoenix.otel import register
from openinference.instrumentation.openai import OpenAIInstrumentor
# Configure OpenTelemetry with Phoenix
tracer_provider = register(
project_name="my-llm-app",
endpoint="http://localhost:6006/v1/traces"
)
# Instrument OpenAI SDK
OpenAIInstrumentor().instrument(tracer_provider=tracer_provider)
# All OpenAI calls are now traced
from openai import OpenAI
client = OpenAI()
response = client.chat.completions.create(
model="gpt-4o",
messages=[{"role": "user", "content": "Hello!"}]
)
核心概念方面,trace 表示一次完整执行流程,span 是其中单个操作。可通过 tracer.start_as_current_span 创建自定义 span,子 span 会自动嵌套。项目(Projects)用于组织相关追踪,可通过环境变量 PHOENIX_PROJECT_NAME 或 register(project_name=...) 指定。
框架插桩支持 OpenAI、LangChain、LlamaIndex、Anthropic 等,分别使用对应的 Instrumentor 进行插桩。
评估框架提供内置评估器(如 HallucinationEvaluator、RelevanceEvaluator、ToxicityEvaluator)和自定义评估器(通过 llm_classify 定义模板与 rails)。可在数据集上运行评估,并将结果记录回 Phoenix。
数据集与实验:可通过 Client 创建数据集、添加示例,并使用 run_experiment 运行实验,传入任务函数与评估器,获取聚合指标。
Client API 支持查询 traces 和 spans(get_spans_dataframe、get_span、get_trace)、记录反馈(log_annotation)以及导出数据。
生产部署
Docker:
docker run -p 6006:6006 arizephoenix/phoenix:latest
配合 PostgreSQL:
# Set database URL
export PHOENIX_SQL_DATABASE_URL="postgresql://user:pass@host:5432/phoenix"
# Start server
phoenix serve --host 0.0.0.0 --port 6006
环境变量包括 PHOENIX_PORT(默认 6006)、PHOENIX_HOST(默认 127.0.0.1)、PHOENIX_GRPC_PORT(默认 4317)、PHOENIX_SQL_DATABASE_URL(默认 SQLite 临时库)、PHOENIX_WORKING_DIR(默认 OS 临时目录)、PHOENIX_ENABLE_AUTH(默认 false)、PHOENIX_SECRET(启用认证时必填)。启用认证需设置 PHOENIX_ENABLE_AUTH、PHOENIX_SECRET、PHOENIX_ADMIN_SECRET 后运行 phoenix serve。
最佳实践
使用项目按环境(dev/staging/prod)分离追踪;添加用户 ID、会话 ID 等元数据便于调试;在 CI/CD 中定期运行自动化评估;对数据集进行版本管理;通过 Phoenix 仪表盘监控 token 用量;生产部署使用 PostgreSQL 自托管。
常见问题
追踪未出现时,检查 endpoint 是否为 http://localhost:6006/v1/traces,并调用 force_flush()。Notebook 内存过高时,完成后调用 session.close() 和 px.close_app()。数据库连接问题可用 psql 验证连接,并用 phoenix serve --log-level debug 查看日志。
资源
文档:https://docs.arize.com/phoenix 仓库:https://github.com/Arize-ai/phoenix Docker Hub:https://hub.docker.com/r/arizephoenix/phoenix 版本:12.0.0+ 许可证:Apache 2.0
替代方案
LangSmith:以 LangChain 优先集成的托管平台;Weights & Biases:侧重深度学习实验追踪;Arize Cloud:带企业功能的托管版 Phoenix;MLflow:通用 ML 生命周期,侧重模型注册。
限制
资料未提供具体收费、价格、平台支持范围、性能指标或效果保证等信息。