Skip to content

使用 WandB 的 Weave 进行智能体可观测性

Weights & Biases (WandB) 的 Weave 提供了一个强大的平台,用于记录和可视化模型调用。通过将 Google ADK 与 Weave 集成,你可以使用 OpenTelemetry (OTEL) 跟踪来跟踪和分析你的智能体的性能和行为。

先决条件

  1. WandB 注册账户。

  2. WandB Authorize 获取你的 API 密钥。

  3. 使用所需的 API 密钥配置你的环境:

export WANDB_API_KEY=<your-wandb-api-key>
export GOOGLE_API_KEY=<your-google-api-key>

安装依赖项

确保你已安装必要的包:

pip install google-adk opentelemetry-sdk opentelemetry-exporter-otlp-proto-http

向 Weave 发送跟踪

此示例演示如何配置 OpenTelemetry 以将 Google ADK 跟踪发送到 Weave。

# math_agent/agent.py

import base64
import os
from opentelemetry.exporter.otlp.proto.http.trace_exporter import OTLPSpanExporter
from opentelemetry.sdk import trace as trace_sdk
from opentelemetry.sdk.trace.export import SimpleSpanProcessor
from opentelemetry import trace

from google.adk.agents import LlmAgent
from google.adk.tools import FunctionTool

from dotenv import load_dotenv

load_dotenv()

# 配置 Weave 端点和身份验证
WANDB_BASE_URL = "https://trace.wandb.ai"
PROJECT_ID = "your-entity/your-project"  # 例如,"teamid/projectid"
OTEL_EXPORTER_OTLP_ENDPOINT = f"{WANDB_BASE_URL}/otel/v1/traces"

# 设置身份验证
WANDB_API_KEY = os.getenv("WANDB_API_KEY")
AUTH = base64.b64encode(f"api:{WANDB_API_KEY}".encode()).decode()

OTEL_EXPORTER_OTLP_HEADERS = {
    "Authorization": f"Basic {AUTH}",
    "project_id": PROJECT_ID,
}

# 创建带有端点和头的 OTLP span 导出器
exporter = OTLPSpanExporter(
    endpoint=OTEL_EXPORTER_OTLP_ENDPOINT,
    headers=OTEL_EXPORTER_OTLP_HEADERS,
)

# 创建跟踪器提供程序并添加导出器
tracer_provider = trace_sdk.TracerProvider()
tracer_provider.add_span_processor(SimpleSpanProcessor(exporter))

# 在导入/使用 ADK 之前设置全局跟踪器提供程序
trace.set_tracer_provider(tracer_provider)

# 定义一个简单的工具进行演示
def calculator(a: float, b: float) -> str:
    """将两个数字相加并返回结果。

    Args:
        a: 第一个数字
        b: 第二个数字

    Returns:
        a 和 b 的和
    """
    return str(a + b)

calculator_tool = FunctionTool(func=calculator)

# 创建一个 LLM 智能体
root_agent = LlmAgent(
    name="MathAgent",
    model="gemini-2.0-flash-exp",
    instruction=(
        "你是一个可以做数学的有帮助的助手。"
        "当被问到数学问题时,使用计算器工具来解决它。"
    ),
    tools=[calculator_tool],
)

在 Weave 仪表板中查看跟踪

一旦智能体运行,其所有跟踪都会记录到 Weave 仪表板 上的相应项目中。

Weave 中的跟踪

你可以查看你的 ADK 智能体在执行期间进行的调用的时间线 -

时间线视图

注意事项

  • 环境变量:确保你的环境变量正确设置为 WandB 和 Google API 密钥。
  • 项目配置:将 <your-entity>/<your-project> 替换为你实际的 WandB 实体和项目名称。
  • 实体名称:你可以通过访问你的 WandB 仪表板 并检查左侧边栏中的团队字段来找到你的实体名称。
  • 跟踪器提供程序:在使用任何 ADK 组件之前设置全局跟踪器提供程序对于确保正确的跟踪至关重要。

通过遵循这些步骤,你可以有效地将 Google ADK 与 Weave 集成,实现对 AI 智能体的模型调用、工具调用和推理过程的全面记录和可视化。

资源

  • 向 Weave 发送 OpenTelemetry 跟踪 - 关于配置 Weave 的 OTEL 的综合指南,包括身份验证和高级配置选项。

  • 导航跟踪视图 - 学习如何在 Weave UI 中有效分析和调试你的跟踪,包括理解跟踪层次结构和 span 详细信息。

  • Weave 集成 - 探索其他框架集成,了解 Weave 如何与你的整个 AI 堆栈协同工作。