使用 Arize AX 进行智能体可观测性¶
Arize AX 是一个生产级的可观测性平台,用于大规模监控、调试和改进 LLM 应用程序和 AI 智能体。它为你的 Google ADK 应用程序提供全面的追踪、评估和监控能力。要开始使用,请注册免费账户。
对于开源、自托管的替代方案,请查看 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 中查看结果¶