使用 Arize AX 进行智能体可观测性¶
Arize AX is a production-grade observability platform for monitoring, debugging, and improving LLM applications and AI Agents at scale. It provides comprehensive tracing, evaluation, and monitoring capabilities for your Google ADK applications. To get started, sign up for a free account.
对于开源、自托管的替代方案,请查看 Phoenix。
概述¶
Arize AX 可以使用 OpenInference 仪表化 自动收集来自 Google ADK 的追踪信息,允许你:
- 追踪智能体交互 - 自动捕获每个智能体运行、工具调用、模型请求和响应,包含上下文和元数据
- 评估性能 - 使用自定义或预构建的评估器评估智能体行为,并运行实验来测试智能体配置
- 生产环境监控 - 设置实时仪表板和警报来跟踪性能
- 调试问题 - 分析详细的追踪信息,快速识别瓶颈、失败的工具调用和任何意外的智能体行为
安装¶
安装所需的包:
设置¶
1. 配置环境变量¶
设置你的 Google API 密钥:
2. 将你的应用程序连接到 Arize AX¶
from arize.otel import register
# 注册到 Arize AX
tracer_provider = register(
space_id="your-space-id", # 在应用空间设置页面中找到
api_key="your-api-key", # 在应用空间设置页面中找到
project_name="your-project-name" # 随意命名
)
# 从 OpenInference 导入并配置自动仪表器
from openinference.instrumentation.google_adk import GoogleADKInstrumentor
# 完成自动仪表化
GoogleADKInstrumentor().instrument(tracer_provider=tracer_provider)
观察¶
现在你已经设置了追踪,所有 Google ADK SDK 请求都将流式传输到 Arize AX 进行可观测性和评估。
import nest_asyncio
nest_asyncio.apply()
from google.adk.agents import Agent
from google.adk.runners import InMemoryRunner
from google.genai import types
# 定义一个工具函数
def get_weather(city: str) -> dict:
"""获取指定城市的当前天气报告。
Args:
city (str): 要获取天气报告的城市名称。
Returns:
dict: 状态和结果或错误信息。
"""
if city.lower() == "new york":
return {
"status": "success",
"report": (
"纽约的天气是晴天,温度为 25 摄氏度"
"(77 华氏度)。"
),
}
else:
return {
"status": "error",
"error_message": f"'{city}' 的天气信息不可用。",
}
# 创建一个带有工具的智能体
agent = Agent(
name="weather_agent",
model="gemini-2.0-flash-exp",
description="使用天气工具回答问题的智能体。",
instruction="你必须使用可用的工具来寻找答案。",
tools=[get_weather]
)
app_name = "weather_app"
user_id = "test_user"
session_id = "test_session"
runner = InMemoryRunner(agent=agent, app_name=app_name)
session_service = runner.session_service
await session_service.create_session(
app_name=app_name,
user_id=user_id,
session_id=session_id
)
# 运行智能体(所有交互都将被追踪)
async for event in runner.run_async(
user_id=user_id,
session_id=session_id,
new_message=types.Content(role="user", parts=[
types.Part(text="纽约的天气怎么样?")]
)
):
if event.is_final_response():
print(event.content.parts[0].text.strip())
在 Arize AX 中查看结果¶