SuperAPI AI 工具集

sentry-setup-ai-monitoring

智能体与模型

查看项目

更新于 10-13 21:33

技能介绍

用途

本技能用于在任意项目中配置 Sentry AI Agent Monitoring,以便追踪和监控 AI 相关行为。调用场景包括:用户要求“监控 AI/LLM 调用”或“追踪 OpenAI/Anthropic 使用量”;用户需要“AI 可观测性”或“智能体监控”;用户询问 token 用量、模型延迟或 AI 成本。

主要能力

可配置 Sentry 以追踪 LLM 调用、智能体执行、工具使用情况以及 token 消耗,并提供自动集成与手动埋点两种方式。

支持以下 Span 类型:gen_ai.request(单次 LLM 调用)、gen_ai.invoke_agent(智能体执行生命周期)、gen_ai.execute_tool(工具/函数调用)、gen_ai.handoff(智能体间切换)。

关键属性包括:gen_ai.request.model(模型标识)、gen_ai.request.messages(JSON 输入消息)、gen_ai.usage.input_tokens(输入 token 数)、gen_ai.usage.output_tokens(输出 token 数)、gen_ai.agent.name(智能体标识)、gen_ai.tool.name(工具标识)。

前提条件

AI 监控需要启用 tracing,即 tracesSampleRate > 0。

数据捕获警告

提示词与输出记录会捕获用户内容,这些内容很可能属于 PII。在启用 recordInputs/recordOutputs(JS)或 include_prompts/send_default_pii(Python)之前,需确认:应用隐私政策允许捕获用户提示词与模型响应;捕获数据符合适用法规(GDPR、CCPA 等);Sentry 数据保留设置适合该数据的敏感程度。必须询问用户是否希望启用提示词/输出捕获,不要默认启用,仅在明确要求或确认后配置。tracesSampleRate: 1.0 仅用于开发环境;生产环境应使用较低值或 tracesSampler 函数。

检测优先

配置前务必检测已安装的 AI SDK:

JavaScript:

grep -E '"(openai|@anthropic-ai/sdk|ai|@langchain|@google/genai)"' package.json

Python:

grep -E '(openai|anthropic|langchain|huggingface)' requirements.txt pyproject.toml 2>/dev/null

支持的 SDK

JavaScript

Package Integration Min Sentry SDK Auto?
openai openAIIntegration() 10.28.0 Yes
@anthropic-ai/sdk anthropicAIIntegration() 10.28.0 Yes
ai (Vercel) vercelAIIntegration() 10.6.0 Yes*
@langchain/* langChainIntegration() 10.28.0 Yes
@langchain/langgraph langGraphIntegration() 10.28.0 Yes
@google/genai googleGenAIIntegration() 10.28.0 Yes

*Vercel AI:10.6.0+ 适用于 Node.js、Cloudflare Workers、Vercel Edge Functions、Bun;10.12.0+ 适用于 Deno。需要每次调用设置 experimental_telemetry。

Python

安装 AI 包后集成会自动启用,无需显式注册:

Package Auto? Notes
openai Yes 包含 OpenAI Agents SDK
anthropic Yes
langchain / langgraph Yes
huggingface_hub Yes
google-genai Yes
pydantic-ai Yes
litellm No 需要显式集成
mcp (Model Context Protocol) Yes

JavaScript 配置

Node.js — 自动启用集成

只需确保启用 tracing。安装 AI 包后集成会自动启用:

Sentry.init({
  dsn: "YOUR_DSN",
  tracesSampleRate: 1.0, // Lower in production (e.g., 0.1)
  // OpenAI, Anthropic, Google GenAI, LangChain integrations auto-enable in Node.js
});

自定义(例如启用提示词捕获——参见数据捕获警告):

integrations: [
  Sentry.openAIIntegration({
    // recordInputs: true,  // Opt-in: captures prompt content (PII)
    // recordOutputs: true, // Opt-in: captures response content (PII)
  }),
],

浏览器 / Next.js OpenAI(需手动包装)

在浏览器端代码或 Next.js 元框架应用中,无法自动埋点,需手动包装客户端:

import OpenAI from "openai";
import * as Sentry from "@sentry/nextjs"; // or @sentry/react, @sentry/browser

const openai = Sentry.instrumentOpenAiClient(new OpenAI());
// Use 'openai' client as normal

LangChain / LangGraph(自动启用)

integrations: [
  Sentry.langChainIntegration({
    // recordInputs: true,  // Opt-in: captures prompt content (PII)
    // recordOutputs: true, // Opt-in: captures response content (PII)
  }),
  Sentry.langGraphIntegration({
    // recordInputs: true,
    // recordOutputs: true,
  }),
],

Vercel AI SDK

在 Edge 运行时的 sentry.edge.config.ts 中添加:

integrations: [Sentry.vercelAIIntegration()],

每次调用启用 telemetry:

await generateText({
  model: openai("gpt-4o"),
  prompt: "Hello",
  experimental_telemetry: {
    isEnabled: true,
    // recordInputs: true,  // Opt-in: captures prompt content (PII)
    // recordOutputs: true, // Opt-in: captures response content (PII)
  },
});

Python 配置

集成会自动启用——只需初始化并带 tracing。只有自定义选项时才需显式导入:

import sentry_sdk

sentry_sdk.init(
    dsn="YOUR_DSN",
    traces_sample_rate=1.0,  # Lower in production (e.g., 0.1)
    # send_default_pii=True,  # Opt-in: required for prompt capture (sends user PII)
    # Integrations auto-enable when the AI package is installed.
    # Only specify explicitly to customize (e.g., include_prompts):
    # integrations=[OpenAIIntegration(include_prompts=True)],
)

手动埋点

当未检测到受支持的 SDK 时使用。

示例(JavaScript)

await Sentry.startSpan({
  op: "gen_ai.request",
  name: "LLM request gpt-4o",
  attributes: { "gen_ai.request.model": "gpt-4o" },
}, async (span) => {
  span.setAttribute("gen_ai.request.messages", JSON.stringify(messages));
  const result = await llmClient.complete(prompt);
  span.setAttribute("gen_ai.usage.input_tokens", result.inputTokens);
  span.setAttribute("gen_ai.usage.output_tokens", result.outputTokens);
  return result;
});

仅在与用户确认后再启用提示词/输出捕获(见上文数据捕获警告)。

验证

配置完成后,发起一次 LLM 调用并检查 Sentry Traces 仪表盘。AI spans 会以 gen_ai.* 操作出现,显示模型、token 计数与延迟。

故障排查

问题 解决方案
AI spans 未出现 验证 tracesSampleRate > 0,检查 SDK 版本
token 计数缺失 某些提供商在流式传输时不返回 token
提示词未捕获 启用 recordInputs/include_prompts
Vercel AI 不工作 为每次调用添加 experimental_telemetry

重要提示

上述 SDK 版本、API 名称与代码示例均为示例。实施前务必对照 docs.sentry.io 核实,因为 API 与最低版本可能已变更。