[{"data":1,"prerenderedAt":-1},["ShallowReactive",2],{"skill-sentry-sentry-setup-ai-monitoring":3,"mdc--ckq2mj-key":39,"related-org-sentry-sentry-setup-ai-monitoring":2569,"related-repo-sentry-sentry-setup-ai-monitoring":2747},{"slug":4,"name":4,"fn":5,"description":6,"org":7,"tags":12,"stars":27,"repoUrl":28,"updatedAt":29,"license":30,"forks":31,"topics":32,"repo":34,"sourceUrl":37,"mdContent":38},"sentry-setup-ai-monitoring","setup Sentry AI Agent Monitoring","Setup Sentry AI Agent Monitoring in any project. Use when asked to monitor LLM calls, track AI agents, or instrument OpenAI\u002FAnthropic\u002FVercel AI\u002FLangChain\u002FGoogle GenAI\u002FPydantic AI. Detects installed AI SDKs and configures appropriate integrations.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},"sentry","Sentry","https:\u002F\u002Fpexgzepcugksgbtrxkhf.supabase.co\u002Fstorage\u002Fv1\u002Fobject\u002Fpublic\u002Forg-logos\u002Fsentry.png","getsentry",[13,17,20,23,26],{"name":14,"slug":15,"type":16},"Observability","observability","tag",{"name":18,"slug":19,"type":16},"LLM","llm",{"name":21,"slug":22,"type":16},"Agents","agents",{"name":24,"slug":25,"type":16},"Instrumentation","instrumentation",{"name":9,"slug":8,"type":16},19,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-agent-skills","2026-07-18T05:47:22.376586","Apache-2.0",2,[33],"tag-production",{"repoUrl":28,"stars":27,"forks":31,"topics":35,"description":36},[33],null,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fsentry-agent-skills\u002Ftree\u002FHEAD\u002Fskills\u002Fsentry-setup-ai-monitoring","---\nname: sentry-setup-ai-monitoring\ndescription: Setup Sentry AI Agent Monitoring in any project. Use when asked to monitor LLM calls, track AI agents, or instrument OpenAI\u002FAnthropic\u002FVercel AI\u002FLangChain\u002FGoogle GenAI\u002FPydantic AI. Detects installed AI SDKs and configures appropriate integrations.\nlicense: Apache-2.0\n---\n\n# Setup Sentry AI Agent Monitoring\n\nConfigure Sentry to track LLM calls, agent executions, tool usage, and token consumption.\n\n## Invoke This Skill When\n\n- User asks to \"monitor AI\u002FLLM calls\" or \"track OpenAI\u002FAnthropic usage\"\n- User wants \"AI observability\" or \"agent monitoring\"\n- User asks about token usage, model latency, or AI costs\n\n**Important:** The SDK versions, API names, and code samples below are examples. Always verify against [docs.sentry.io](https:\u002F\u002Fdocs.sentry.io) before implementing, as APIs and minimum versions may have changed.\n\n## Prerequisites\n\nAI monitoring requires **tracing enabled** (`tracesSampleRate > 0`).\n\n## Data Capture Warning\n\n**Prompt and output recording captures user content that is likely PII.** Before enabling `recordInputs`\u002F`recordOutputs` (JS) or `include_prompts`\u002F`send_default_pii` (Python), confirm:\n\n- The application's privacy policy permits capturing user prompts and model responses\n- Captured data complies with applicable regulations (GDPR, CCPA, etc.)\n- Sentry data retention settings are appropriate for the sensitivity of the data\n\n**Ask the user** whether they want prompt\u002Foutput capture enabled. Do not enable it by default — configure it only when explicitly requested or confirmed. Use `tracesSampleRate: 1.0` only in development; in production, use a lower value or a `tracesSampler` function.\n\n## Detection First\n\n**Always detect installed AI SDKs before configuring:**\n\n```bash\n# JavaScript\ngrep -E '\"(openai|@anthropic-ai\u002Fsdk|ai|@langchain|@google\u002Fgenai)\"' package.json\n\n# Python\ngrep -E '(openai|anthropic|langchain|huggingface)' requirements.txt pyproject.toml 2>\u002Fdev\u002Fnull\n```\n\n## Supported SDKs\n\n### JavaScript\n\n| Package | Integration | Min Sentry SDK | Auto? |\n|---------|-------------|----------------|-------|\n| `openai` | `openAIIntegration()` | 10.28.0 | Yes |\n| `@anthropic-ai\u002Fsdk` | `anthropicAIIntegration()` | 10.28.0 | Yes |\n| `ai` (Vercel) | `vercelAIIntegration()` | 10.6.0 | Yes* |\n| `@langchain\u002F*` | `langChainIntegration()` | 10.28.0 | Yes |\n| `@langchain\u002Flanggraph` | `langGraphIntegration()` | 10.28.0 | Yes |\n| `@google\u002Fgenai` | `googleGenAIIntegration()` | 10.28.0 | Yes |\n\n*Vercel AI: 10.6.0+ for Node.js, Cloudflare Workers, Vercel Edge Functions, Bun. 10.12.0+ for Deno. Requires `experimental_telemetry` per-call.\n\n### Python\n\nIntegrations auto-enable when the AI package is installed — no explicit registration needed:\n\n| Package | Auto? | Notes |\n|---------|-------|-------|\n| `openai` | Yes | Includes OpenAI Agents SDK |\n| `anthropic` | Yes | |\n| `langchain` \u002F `langgraph` | Yes | |\n| `huggingface_hub` | Yes | |\n| `google-genai` | Yes | |\n| `pydantic-ai` | Yes | |\n| `litellm` | **No** | Requires explicit integration |\n| `mcp` (Model Context Protocol) | Yes | |\n\n## JavaScript Configuration\n\n### Node.js — auto-enabled integrations\n\nJust ensure tracing is enabled. Integrations auto-enable when the AI package is installed:\n\n```javascript\nSentry.init({\n  dsn: \"YOUR_DSN\",\n  tracesSampleRate: 1.0, \u002F\u002F Lower in production (e.g., 0.1)\n  \u002F\u002F OpenAI, Anthropic, Google GenAI, LangChain integrations auto-enable in Node.js\n});\n```\n\nTo customize (e.g., enable prompt capture — see Data Capture Warning):\n\n```javascript\nintegrations: [\n  Sentry.openAIIntegration({\n    \u002F\u002F recordInputs: true,  \u002F\u002F Opt-in: captures prompt content (PII)\n    \u002F\u002F recordOutputs: true, \u002F\u002F Opt-in: captures response content (PII)\n  }),\n],\n```\n\n### Browser \u002F Next.js OpenAI (manual wrapping required)\n\nIn browser-side code or Next.js meta-framework apps, auto-instrumentation is not available. Wrap the client manually:\n\n```javascript\nimport OpenAI from \"openai\";\nimport * as Sentry from \"@sentry\u002Fnextjs\"; \u002F\u002F or @sentry\u002Freact, @sentry\u002Fbrowser\n\nconst openai = Sentry.instrumentOpenAiClient(new OpenAI());\n\u002F\u002F Use 'openai' client as normal\n```\n\n### LangChain \u002F LangGraph (auto-enabled)\n\n```javascript\nintegrations: [\n  Sentry.langChainIntegration({\n    \u002F\u002F recordInputs: true,  \u002F\u002F Opt-in: captures prompt content (PII)\n    \u002F\u002F recordOutputs: true, \u002F\u002F Opt-in: captures response content (PII)\n  }),\n  Sentry.langGraphIntegration({\n    \u002F\u002F recordInputs: true,\n    \u002F\u002F recordOutputs: true,\n  }),\n],\n```\n\n### Vercel AI SDK\n\nAdd to `sentry.edge.config.ts` for Edge runtime:\n```javascript\nintegrations: [Sentry.vercelAIIntegration()],\n```\n\nEnable telemetry per-call:\n```javascript\nawait generateText({\n  model: openai(\"gpt-4o\"),\n  prompt: \"Hello\",\n  experimental_telemetry: {\n    isEnabled: true,\n    \u002F\u002F recordInputs: true,  \u002F\u002F Opt-in: captures prompt content (PII)\n    \u002F\u002F recordOutputs: true, \u002F\u002F Opt-in: captures response content (PII)\n  },\n});\n```\n\n## Python Configuration\n\nIntegrations auto-enable — just init with tracing. Only add explicit imports to customize options:\n\n```python\nimport sentry_sdk\n\nsentry_sdk.init(\n    dsn=\"YOUR_DSN\",\n    traces_sample_rate=1.0,  # Lower in production (e.g., 0.1)\n    # send_default_pii=True,  # Opt-in: required for prompt capture (sends user PII)\n    # Integrations auto-enable when the AI package is installed.\n    # Only specify explicitly to customize (e.g., include_prompts):\n    # integrations=[OpenAIIntegration(include_prompts=True)],\n)\n```\n\n## Manual Instrumentation\n\nUse when no supported SDK is detected.\n\n### Span Types\n\n| `op` Value | Purpose |\n|------------|---------|\n| `gen_ai.request` | Individual LLM calls |\n| `gen_ai.invoke_agent` | Agent execution lifecycle |\n| `gen_ai.execute_tool` | Tool\u002Ffunction calls |\n| `gen_ai.handoff` | Agent-to-agent transitions |\n\n### Example (JavaScript)\n\n```javascript\nawait Sentry.startSpan({\n  op: \"gen_ai.request\",\n  name: \"LLM request gpt-4o\",\n  attributes: { \"gen_ai.request.model\": \"gpt-4o\" },\n}, async (span) => {\n  span.setAttribute(\"gen_ai.request.messages\", JSON.stringify(messages));\n  const result = await llmClient.complete(prompt);\n  span.setAttribute(\"gen_ai.usage.input_tokens\", result.inputTokens);\n  span.setAttribute(\"gen_ai.usage.output_tokens\", result.outputTokens);\n  return result;\n});\n```\n\n### Key Attributes\n\n| Attribute | Description |\n|-----------|-------------|\n| `gen_ai.request.model` | Model identifier |\n| `gen_ai.request.messages` | JSON input messages |\n| `gen_ai.usage.input_tokens` | Input token count |\n| `gen_ai.usage.output_tokens` | Output token count |\n| `gen_ai.agent.name` | Agent identifier |\n| `gen_ai.tool.name` | Tool identifier |\n\nEnable prompt\u002Foutput capture only after confirming with the user (see Data Capture Warning above).\n\n## Verification\n\nAfter configuring, make an LLM call and check the Sentry Traces dashboard. AI spans appear with `gen_ai.*` operations showing model, token counts, and latency.\n\n## Troubleshooting\n\n| Issue | Solution |\n|-------|----------|\n| AI spans not appearing | Verify `tracesSampleRate > 0`, check SDK version |\n| Token counts missing | Some providers don't return tokens for streaming |\n| Prompts not captured | Enable `recordInputs`\u002F`include_prompts` |\n| Vercel AI not working | Add `experimental_telemetry` to each call |\n",{"data":40,"body":41},{"name":4,"description":6,"license":30},{"type":42,"children":43},"root",[44,53,59,66,86,108,114,135,141,182,200,226,232,240,363,369,376,594,607,613,618,812,818,824,829,954,959,1063,1069,1074,1236,1242,1395,1401,1414,1455,1460,1643,1649,1654,1741,1747,1752,1758,1854,1860,2308,2314,2434,2439,2445,2458,2464,2563],{"type":45,"tag":46,"props":47,"children":49},"element","h1",{"id":48},"setup-sentry-ai-agent-monitoring",[50],{"type":51,"value":52},"text","Setup Sentry AI Agent Monitoring",{"type":45,"tag":54,"props":55,"children":56},"p",{},[57],{"type":51,"value":58},"Configure Sentry to track LLM calls, agent executions, tool usage, and token consumption.",{"type":45,"tag":60,"props":61,"children":63},"h2",{"id":62},"invoke-this-skill-when",[64],{"type":51,"value":65},"Invoke This Skill When",{"type":45,"tag":67,"props":68,"children":69},"ul",{},[70,76,81],{"type":45,"tag":71,"props":72,"children":73},"li",{},[74],{"type":51,"value":75},"User asks to \"monitor AI\u002FLLM calls\" or \"track OpenAI\u002FAnthropic usage\"",{"type":45,"tag":71,"props":77,"children":78},{},[79],{"type":51,"value":80},"User wants \"AI observability\" or \"agent monitoring\"",{"type":45,"tag":71,"props":82,"children":83},{},[84],{"type":51,"value":85},"User asks about token usage, model latency, or AI costs",{"type":45,"tag":54,"props":87,"children":88},{},[89,95,97,106],{"type":45,"tag":90,"props":91,"children":92},"strong",{},[93],{"type":51,"value":94},"Important:",{"type":51,"value":96}," The SDK versions, API names, and code samples below are examples. Always verify against ",{"type":45,"tag":98,"props":99,"children":103},"a",{"href":100,"rel":101},"https:\u002F\u002Fdocs.sentry.io",[102],"nofollow",[104],{"type":51,"value":105},"docs.sentry.io",{"type":51,"value":107}," before implementing, as APIs and minimum versions may have changed.",{"type":45,"tag":60,"props":109,"children":111},{"id":110},"prerequisites",[112],{"type":51,"value":113},"Prerequisites",{"type":45,"tag":54,"props":115,"children":116},{},[117,119,124,126,133],{"type":51,"value":118},"AI monitoring requires ",{"type":45,"tag":90,"props":120,"children":121},{},[122],{"type":51,"value":123},"tracing enabled",{"type":51,"value":125}," (",{"type":45,"tag":127,"props":128,"children":130},"code",{"className":129},[],[131],{"type":51,"value":132},"tracesSampleRate > 0",{"type":51,"value":134},").",{"type":45,"tag":60,"props":136,"children":138},{"id":137},"data-capture-warning",[139],{"type":51,"value":140},"Data Capture Warning",{"type":45,"tag":54,"props":142,"children":143},{},[144,149,151,157,159,165,167,173,174,180],{"type":45,"tag":90,"props":145,"children":146},{},[147],{"type":51,"value":148},"Prompt and output recording captures user content that is likely PII.",{"type":51,"value":150}," Before enabling ",{"type":45,"tag":127,"props":152,"children":154},{"className":153},[],[155],{"type":51,"value":156},"recordInputs",{"type":51,"value":158},"\u002F",{"type":45,"tag":127,"props":160,"children":162},{"className":161},[],[163],{"type":51,"value":164},"recordOutputs",{"type":51,"value":166}," (JS) or ",{"type":45,"tag":127,"props":168,"children":170},{"className":169},[],[171],{"type":51,"value":172},"include_prompts",{"type":51,"value":158},{"type":45,"tag":127,"props":175,"children":177},{"className":176},[],[178],{"type":51,"value":179},"send_default_pii",{"type":51,"value":181}," (Python), confirm:",{"type":45,"tag":67,"props":183,"children":184},{},[185,190,195],{"type":45,"tag":71,"props":186,"children":187},{},[188],{"type":51,"value":189},"The application's privacy policy permits capturing user prompts and model responses",{"type":45,"tag":71,"props":191,"children":192},{},[193],{"type":51,"value":194},"Captured data complies with applicable regulations (GDPR, CCPA, etc.)",{"type":45,"tag":71,"props":196,"children":197},{},[198],{"type":51,"value":199},"Sentry data retention settings are appropriate for the sensitivity of the data",{"type":45,"tag":54,"props":201,"children":202},{},[203,208,210,216,218,224],{"type":45,"tag":90,"props":204,"children":205},{},[206],{"type":51,"value":207},"Ask the user",{"type":51,"value":209}," whether they want prompt\u002Foutput capture enabled. Do not enable it by default — configure it only when explicitly requested or confirmed. Use ",{"type":45,"tag":127,"props":211,"children":213},{"className":212},[],[214],{"type":51,"value":215},"tracesSampleRate: 1.0",{"type":51,"value":217}," only in development; in production, use a lower value or a ",{"type":45,"tag":127,"props":219,"children":221},{"className":220},[],[222],{"type":51,"value":223},"tracesSampler",{"type":51,"value":225}," function.",{"type":45,"tag":60,"props":227,"children":229},{"id":228},"detection-first",[230],{"type":51,"value":231},"Detection First",{"type":45,"tag":54,"props":233,"children":234},{},[235],{"type":45,"tag":90,"props":236,"children":237},{},[238],{"type":51,"value":239},"Always detect installed AI SDKs before configuring:",{"type":45,"tag":241,"props":242,"children":247},"pre",{"className":243,"code":244,"language":245,"meta":246,"style":246},"language-bash shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","# JavaScript\ngrep -E '\"(openai|@anthropic-ai\u002Fsdk|ai|@langchain|@google\u002Fgenai)\"' package.json\n\n# Python\ngrep -E '(openai|anthropic|langchain|huggingface)' requirements.txt pyproject.toml 2>\u002Fdev\u002Fnull\n","bash","",[248],{"type":45,"tag":127,"props":249,"children":250},{"__ignoreMap":246},[251,263,299,309,318],{"type":45,"tag":252,"props":253,"children":256},"span",{"class":254,"line":255},"line",1,[257],{"type":45,"tag":252,"props":258,"children":260},{"style":259},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#546E7A;--shiki-default-font-style:italic;--shiki-dark:#676E95;--shiki-dark-font-style:italic",[261],{"type":51,"value":262},"# JavaScript\n",{"type":45,"tag":252,"props":264,"children":265},{"class":254,"line":31},[266,272,278,284,289,294],{"type":45,"tag":252,"props":267,"children":269},{"style":268},"--shiki-light:#E2931D;--shiki-default:#FFCB6B;--shiki-dark:#FFCB6B",[270],{"type":51,"value":271},"grep",{"type":45,"tag":252,"props":273,"children":275},{"style":274},"--shiki-light:#91B859;--shiki-default:#C3E88D;--shiki-dark:#C3E88D",[276],{"type":51,"value":277}," -E",{"type":45,"tag":252,"props":279,"children":281},{"style":280},"--shiki-light:#39ADB5;--shiki-default:#89DDFF;--shiki-dark:#89DDFF",[282],{"type":51,"value":283}," '",{"type":45,"tag":252,"props":285,"children":286},{"style":274},[287],{"type":51,"value":288},"\"(openai|@anthropic-ai\u002Fsdk|ai|@langchain|@google\u002Fgenai)\"",{"type":45,"tag":252,"props":290,"children":291},{"style":280},[292],{"type":51,"value":293},"'",{"type":45,"tag":252,"props":295,"children":296},{"style":274},[297],{"type":51,"value":298}," package.json\n",{"type":45,"tag":252,"props":300,"children":302},{"class":254,"line":301},3,[303],{"type":45,"tag":252,"props":304,"children":306},{"emptyLinePlaceholder":305},true,[307],{"type":51,"value":308},"\n",{"type":45,"tag":252,"props":310,"children":312},{"class":254,"line":311},4,[313],{"type":45,"tag":252,"props":314,"children":315},{"style":259},[316],{"type":51,"value":317},"# Python\n",{"type":45,"tag":252,"props":319,"children":321},{"class":254,"line":320},5,[322,326,330,334,339,343,348,353,358],{"type":45,"tag":252,"props":323,"children":324},{"style":268},[325],{"type":51,"value":271},{"type":45,"tag":252,"props":327,"children":328},{"style":274},[329],{"type":51,"value":277},{"type":45,"tag":252,"props":331,"children":332},{"style":280},[333],{"type":51,"value":283},{"type":45,"tag":252,"props":335,"children":336},{"style":274},[337],{"type":51,"value":338},"(openai|anthropic|langchain|huggingface)",{"type":45,"tag":252,"props":340,"children":341},{"style":280},[342],{"type":51,"value":293},{"type":45,"tag":252,"props":344,"children":345},{"style":274},[346],{"type":51,"value":347}," requirements.txt",{"type":45,"tag":252,"props":349,"children":350},{"style":274},[351],{"type":51,"value":352}," pyproject.toml",{"type":45,"tag":252,"props":354,"children":355},{"style":280},[356],{"type":51,"value":357}," 2>",{"type":45,"tag":252,"props":359,"children":360},{"style":274},[361],{"type":51,"value":362},"\u002Fdev\u002Fnull\n",{"type":45,"tag":60,"props":364,"children":366},{"id":365},"supported-sdks",[367],{"type":51,"value":368},"Supported SDKs",{"type":45,"tag":370,"props":371,"children":373},"h3",{"id":372},"javascript",[374],{"type":51,"value":375},"JavaScript",{"type":45,"tag":377,"props":378,"children":379},"table",{},[380,409],{"type":45,"tag":381,"props":382,"children":383},"thead",{},[384],{"type":45,"tag":385,"props":386,"children":387},"tr",{},[388,394,399,404],{"type":45,"tag":389,"props":390,"children":391},"th",{},[392],{"type":51,"value":393},"Package",{"type":45,"tag":389,"props":395,"children":396},{},[397],{"type":51,"value":398},"Integration",{"type":45,"tag":389,"props":400,"children":401},{},[402],{"type":51,"value":403},"Min Sentry SDK",{"type":45,"tag":389,"props":405,"children":406},{},[407],{"type":51,"value":408},"Auto?",{"type":45,"tag":410,"props":411,"children":412},"tbody",{},[413,445,474,507,536,565],{"type":45,"tag":385,"props":414,"children":415},{},[416,426,435,440],{"type":45,"tag":417,"props":418,"children":419},"td",{},[420],{"type":45,"tag":127,"props":421,"children":423},{"className":422},[],[424],{"type":51,"value":425},"openai",{"type":45,"tag":417,"props":427,"children":428},{},[429],{"type":45,"tag":127,"props":430,"children":432},{"className":431},[],[433],{"type":51,"value":434},"openAIIntegration()",{"type":45,"tag":417,"props":436,"children":437},{},[438],{"type":51,"value":439},"10.28.0",{"type":45,"tag":417,"props":441,"children":442},{},[443],{"type":51,"value":444},"Yes",{"type":45,"tag":385,"props":446,"children":447},{},[448,457,466,470],{"type":45,"tag":417,"props":449,"children":450},{},[451],{"type":45,"tag":127,"props":452,"children":454},{"className":453},[],[455],{"type":51,"value":456},"@anthropic-ai\u002Fsdk",{"type":45,"tag":417,"props":458,"children":459},{},[460],{"type":45,"tag":127,"props":461,"children":463},{"className":462},[],[464],{"type":51,"value":465},"anthropicAIIntegration()",{"type":45,"tag":417,"props":467,"children":468},{},[469],{"type":51,"value":439},{"type":45,"tag":417,"props":471,"children":472},{},[473],{"type":51,"value":444},{"type":45,"tag":385,"props":475,"children":476},{},[477,488,497,502],{"type":45,"tag":417,"props":478,"children":479},{},[480,486],{"type":45,"tag":127,"props":481,"children":483},{"className":482},[],[484],{"type":51,"value":485},"ai",{"type":51,"value":487}," (Vercel)",{"type":45,"tag":417,"props":489,"children":490},{},[491],{"type":45,"tag":127,"props":492,"children":494},{"className":493},[],[495],{"type":51,"value":496},"vercelAIIntegration()",{"type":45,"tag":417,"props":498,"children":499},{},[500],{"type":51,"value":501},"10.6.0",{"type":45,"tag":417,"props":503,"children":504},{},[505],{"type":51,"value":506},"Yes*",{"type":45,"tag":385,"props":508,"children":509},{},[510,519,528,532],{"type":45,"tag":417,"props":511,"children":512},{},[513],{"type":45,"tag":127,"props":514,"children":516},{"className":515},[],[517],{"type":51,"value":518},"@langchain\u002F*",{"type":45,"tag":417,"props":520,"children":521},{},[522],{"type":45,"tag":127,"props":523,"children":525},{"className":524},[],[526],{"type":51,"value":527},"langChainIntegration()",{"type":45,"tag":417,"props":529,"children":530},{},[531],{"type":51,"value":439},{"type":45,"tag":417,"props":533,"children":534},{},[535],{"type":51,"value":444},{"type":45,"tag":385,"props":537,"children":538},{},[539,548,557,561],{"type":45,"tag":417,"props":540,"children":541},{},[542],{"type":45,"tag":127,"props":543,"children":545},{"className":544},[],[546],{"type":51,"value":547},"@langchain\u002Flanggraph",{"type":45,"tag":417,"props":549,"children":550},{},[551],{"type":45,"tag":127,"props":552,"children":554},{"className":553},[],[555],{"type":51,"value":556},"langGraphIntegration()",{"type":45,"tag":417,"props":558,"children":559},{},[560],{"type":51,"value":439},{"type":45,"tag":417,"props":562,"children":563},{},[564],{"type":51,"value":444},{"type":45,"tag":385,"props":566,"children":567},{},[568,577,586,590],{"type":45,"tag":417,"props":569,"children":570},{},[571],{"type":45,"tag":127,"props":572,"children":574},{"className":573},[],[575],{"type":51,"value":576},"@google\u002Fgenai",{"type":45,"tag":417,"props":578,"children":579},{},[580],{"type":45,"tag":127,"props":581,"children":583},{"className":582},[],[584],{"type":51,"value":585},"googleGenAIIntegration()",{"type":45,"tag":417,"props":587,"children":588},{},[589],{"type":51,"value":439},{"type":45,"tag":417,"props":591,"children":592},{},[593],{"type":51,"value":444},{"type":45,"tag":54,"props":595,"children":596},{},[597,599,605],{"type":51,"value":598},"*Vercel AI: 10.6.0+ for Node.js, Cloudflare Workers, Vercel Edge Functions, Bun. 10.12.0+ for Deno. Requires ",{"type":45,"tag":127,"props":600,"children":602},{"className":601},[],[603],{"type":51,"value":604},"experimental_telemetry",{"type":51,"value":606}," per-call.",{"type":45,"tag":370,"props":608,"children":610},{"id":609},"python",[611],{"type":51,"value":612},"Python",{"type":45,"tag":54,"props":614,"children":615},{},[616],{"type":51,"value":617},"Integrations auto-enable when the AI package is installed — no explicit registration needed:",{"type":45,"tag":377,"props":619,"children":620},{},[621,640],{"type":45,"tag":381,"props":622,"children":623},{},[624],{"type":45,"tag":385,"props":625,"children":626},{},[627,631,635],{"type":45,"tag":389,"props":628,"children":629},{},[630],{"type":51,"value":393},{"type":45,"tag":389,"props":632,"children":633},{},[634],{"type":51,"value":408},{"type":45,"tag":389,"props":636,"children":637},{},[638],{"type":51,"value":639},"Notes",{"type":45,"tag":410,"props":641,"children":642},{},[643,663,682,709,728,747,766,791],{"type":45,"tag":385,"props":644,"children":645},{},[646,654,658],{"type":45,"tag":417,"props":647,"children":648},{},[649],{"type":45,"tag":127,"props":650,"children":652},{"className":651},[],[653],{"type":51,"value":425},{"type":45,"tag":417,"props":655,"children":656},{},[657],{"type":51,"value":444},{"type":45,"tag":417,"props":659,"children":660},{},[661],{"type":51,"value":662},"Includes OpenAI Agents SDK",{"type":45,"tag":385,"props":664,"children":665},{},[666,675,679],{"type":45,"tag":417,"props":667,"children":668},{},[669],{"type":45,"tag":127,"props":670,"children":672},{"className":671},[],[673],{"type":51,"value":674},"anthropic",{"type":45,"tag":417,"props":676,"children":677},{},[678],{"type":51,"value":444},{"type":45,"tag":417,"props":680,"children":681},{},[],{"type":45,"tag":385,"props":683,"children":684},{},[685,702,706],{"type":45,"tag":417,"props":686,"children":687},{},[688,694,696],{"type":45,"tag":127,"props":689,"children":691},{"className":690},[],[692],{"type":51,"value":693},"langchain",{"type":51,"value":695}," \u002F ",{"type":45,"tag":127,"props":697,"children":699},{"className":698},[],[700],{"type":51,"value":701},"langgraph",{"type":45,"tag":417,"props":703,"children":704},{},[705],{"type":51,"value":444},{"type":45,"tag":417,"props":707,"children":708},{},[],{"type":45,"tag":385,"props":710,"children":711},{},[712,721,725],{"type":45,"tag":417,"props":713,"children":714},{},[715],{"type":45,"tag":127,"props":716,"children":718},{"className":717},[],[719],{"type":51,"value":720},"huggingface_hub",{"type":45,"tag":417,"props":722,"children":723},{},[724],{"type":51,"value":444},{"type":45,"tag":417,"props":726,"children":727},{},[],{"type":45,"tag":385,"props":729,"children":730},{},[731,740,744],{"type":45,"tag":417,"props":732,"children":733},{},[734],{"type":45,"tag":127,"props":735,"children":737},{"className":736},[],[738],{"type":51,"value":739},"google-genai",{"type":45,"tag":417,"props":741,"children":742},{},[743],{"type":51,"value":444},{"type":45,"tag":417,"props":745,"children":746},{},[],{"type":45,"tag":385,"props":748,"children":749},{},[750,759,763],{"type":45,"tag":417,"props":751,"children":752},{},[753],{"type":45,"tag":127,"props":754,"children":756},{"className":755},[],[757],{"type":51,"value":758},"pydantic-ai",{"type":45,"tag":417,"props":760,"children":761},{},[762],{"type":51,"value":444},{"type":45,"tag":417,"props":764,"children":765},{},[],{"type":45,"tag":385,"props":767,"children":768},{},[769,778,786],{"type":45,"tag":417,"props":770,"children":771},{},[772],{"type":45,"tag":127,"props":773,"children":775},{"className":774},[],[776],{"type":51,"value":777},"litellm",{"type":45,"tag":417,"props":779,"children":780},{},[781],{"type":45,"tag":90,"props":782,"children":783},{},[784],{"type":51,"value":785},"No",{"type":45,"tag":417,"props":787,"children":788},{},[789],{"type":51,"value":790},"Requires explicit integration",{"type":45,"tag":385,"props":792,"children":793},{},[794,805,809],{"type":45,"tag":417,"props":795,"children":796},{},[797,803],{"type":45,"tag":127,"props":798,"children":800},{"className":799},[],[801],{"type":51,"value":802},"mcp",{"type":51,"value":804}," (Model Context Protocol)",{"type":45,"tag":417,"props":806,"children":807},{},[808],{"type":51,"value":444},{"type":45,"tag":417,"props":810,"children":811},{},[],{"type":45,"tag":60,"props":813,"children":815},{"id":814},"javascript-configuration",[816],{"type":51,"value":817},"JavaScript Configuration",{"type":45,"tag":370,"props":819,"children":821},{"id":820},"nodejs-auto-enabled-integrations",[822],{"type":51,"value":823},"Node.js — auto-enabled integrations",{"type":45,"tag":54,"props":825,"children":826},{},[827],{"type":51,"value":828},"Just ensure tracing is enabled. Integrations auto-enable when the AI package is installed:",{"type":45,"tag":241,"props":830,"children":833},{"className":831,"code":832,"language":372,"meta":246,"style":246},"language-javascript shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","Sentry.init({\n  dsn: \"YOUR_DSN\",\n  tracesSampleRate: 1.0, \u002F\u002F Lower in production (e.g., 0.1)\n  \u002F\u002F OpenAI, Anthropic, Google GenAI, LangChain integrations auto-enable in Node.js\n});\n",[834],{"type":45,"tag":127,"props":835,"children":836},{"__ignoreMap":246},[837,866,900,928,936],{"type":45,"tag":252,"props":838,"children":839},{"class":254,"line":255},[840,845,850,856,861],{"type":45,"tag":252,"props":841,"children":843},{"style":842},"--shiki-light:#90A4AE;--shiki-default:#EEFFFF;--shiki-dark:#BABED8",[844],{"type":51,"value":9},{"type":45,"tag":252,"props":846,"children":847},{"style":280},[848],{"type":51,"value":849},".",{"type":45,"tag":252,"props":851,"children":853},{"style":852},"--shiki-light:#6182B8;--shiki-default:#82AAFF;--shiki-dark:#82AAFF",[854],{"type":51,"value":855},"init",{"type":45,"tag":252,"props":857,"children":858},{"style":842},[859],{"type":51,"value":860},"(",{"type":45,"tag":252,"props":862,"children":863},{"style":280},[864],{"type":51,"value":865},"{\n",{"type":45,"tag":252,"props":867,"children":868},{"class":254,"line":31},[869,875,880,885,890,895],{"type":45,"tag":252,"props":870,"children":872},{"style":871},"--shiki-light:#E53935;--shiki-default:#F07178;--shiki-dark:#F07178",[873],{"type":51,"value":874},"  dsn",{"type":45,"tag":252,"props":876,"children":877},{"style":280},[878],{"type":51,"value":879},":",{"type":45,"tag":252,"props":881,"children":882},{"style":280},[883],{"type":51,"value":884}," \"",{"type":45,"tag":252,"props":886,"children":887},{"style":274},[888],{"type":51,"value":889},"YOUR_DSN",{"type":45,"tag":252,"props":891,"children":892},{"style":280},[893],{"type":51,"value":894},"\"",{"type":45,"tag":252,"props":896,"children":897},{"style":280},[898],{"type":51,"value":899},",\n",{"type":45,"tag":252,"props":901,"children":902},{"class":254,"line":301},[903,908,912,918,923],{"type":45,"tag":252,"props":904,"children":905},{"style":871},[906],{"type":51,"value":907},"  tracesSampleRate",{"type":45,"tag":252,"props":909,"children":910},{"style":280},[911],{"type":51,"value":879},{"type":45,"tag":252,"props":913,"children":915},{"style":914},"--shiki-light:#F76D47;--shiki-default:#F78C6C;--shiki-dark:#F78C6C",[916],{"type":51,"value":917}," 1.0",{"type":45,"tag":252,"props":919,"children":920},{"style":280},[921],{"type":51,"value":922},",",{"type":45,"tag":252,"props":924,"children":925},{"style":259},[926],{"type":51,"value":927}," \u002F\u002F Lower in production (e.g., 0.1)\n",{"type":45,"tag":252,"props":929,"children":930},{"class":254,"line":311},[931],{"type":45,"tag":252,"props":932,"children":933},{"style":259},[934],{"type":51,"value":935},"  \u002F\u002F OpenAI, Anthropic, Google GenAI, LangChain integrations auto-enable in Node.js\n",{"type":45,"tag":252,"props":937,"children":938},{"class":254,"line":320},[939,944,949],{"type":45,"tag":252,"props":940,"children":941},{"style":280},[942],{"type":51,"value":943},"}",{"type":45,"tag":252,"props":945,"children":946},{"style":842},[947],{"type":51,"value":948},")",{"type":45,"tag":252,"props":950,"children":951},{"style":280},[952],{"type":51,"value":953},";\n",{"type":45,"tag":54,"props":955,"children":956},{},[957],{"type":51,"value":958},"To customize (e.g., enable prompt capture — see Data Capture Warning):",{"type":45,"tag":241,"props":960,"children":962},{"className":831,"code":961,"language":372,"meta":246,"style":246},"integrations: [\n  Sentry.openAIIntegration({\n    \u002F\u002F recordInputs: true,  \u002F\u002F Opt-in: captures prompt content (PII)\n    \u002F\u002F recordOutputs: true, \u002F\u002F Opt-in: captures response content (PII)\n  }),\n],\n",[963],{"type":45,"tag":127,"props":964,"children":965},{"__ignoreMap":246},[966,983,1008,1021,1034,1050],{"type":45,"tag":252,"props":967,"children":968},{"class":254,"line":255},[969,974,978],{"type":45,"tag":252,"props":970,"children":971},{"style":268},[972],{"type":51,"value":973},"integrations",{"type":45,"tag":252,"props":975,"children":976},{"style":280},[977],{"type":51,"value":879},{"type":45,"tag":252,"props":979,"children":980},{"style":842},[981],{"type":51,"value":982}," [\n",{"type":45,"tag":252,"props":984,"children":985},{"class":254,"line":31},[986,991,995,1000,1004],{"type":45,"tag":252,"props":987,"children":988},{"style":842},[989],{"type":51,"value":990},"  Sentry",{"type":45,"tag":252,"props":992,"children":993},{"style":280},[994],{"type":51,"value":849},{"type":45,"tag":252,"props":996,"children":997},{"style":852},[998],{"type":51,"value":999},"openAIIntegration",{"type":45,"tag":252,"props":1001,"children":1002},{"style":842},[1003],{"type":51,"value":860},{"type":45,"tag":252,"props":1005,"children":1006},{"style":280},[1007],{"type":51,"value":865},{"type":45,"tag":252,"props":1009,"children":1010},{"class":254,"line":301},[1011,1016],{"type":45,"tag":252,"props":1012,"children":1013},{"style":259},[1014],{"type":51,"value":1015},"    \u002F\u002F recordInputs: true,",{"type":45,"tag":252,"props":1017,"children":1018},{"style":259},[1019],{"type":51,"value":1020},"  \u002F\u002F Opt-in: captures prompt content (PII)\n",{"type":45,"tag":252,"props":1022,"children":1023},{"class":254,"line":311},[1024,1029],{"type":45,"tag":252,"props":1025,"children":1026},{"style":259},[1027],{"type":51,"value":1028},"    \u002F\u002F recordOutputs: true,",{"type":45,"tag":252,"props":1030,"children":1031},{"style":259},[1032],{"type":51,"value":1033}," \u002F\u002F Opt-in: captures response content (PII)\n",{"type":45,"tag":252,"props":1035,"children":1036},{"class":254,"line":320},[1037,1042,1046],{"type":45,"tag":252,"props":1038,"children":1039},{"style":280},[1040],{"type":51,"value":1041},"  }",{"type":45,"tag":252,"props":1043,"children":1044},{"style":842},[1045],{"type":51,"value":948},{"type":45,"tag":252,"props":1047,"children":1048},{"style":280},[1049],{"type":51,"value":899},{"type":45,"tag":252,"props":1051,"children":1053},{"class":254,"line":1052},6,[1054,1059],{"type":45,"tag":252,"props":1055,"children":1056},{"style":842},[1057],{"type":51,"value":1058},"]",{"type":45,"tag":252,"props":1060,"children":1061},{"style":280},[1062],{"type":51,"value":899},{"type":45,"tag":370,"props":1064,"children":1066},{"id":1065},"browser-nextjs-openai-manual-wrapping-required",[1067],{"type":51,"value":1068},"Browser \u002F Next.js OpenAI (manual wrapping required)",{"type":45,"tag":54,"props":1070,"children":1071},{},[1072],{"type":51,"value":1073},"In browser-side code or Next.js meta-framework apps, auto-instrumentation is not available. Wrap the client manually:",{"type":45,"tag":241,"props":1075,"children":1077},{"className":831,"code":1076,"language":372,"meta":246,"style":246},"import OpenAI from \"openai\";\nimport * as Sentry from \"@sentry\u002Fnextjs\"; \u002F\u002F or @sentry\u002Freact, @sentry\u002Fbrowser\n\nconst openai = Sentry.instrumentOpenAiClient(new OpenAI());\n\u002F\u002F Use 'openai' client as normal\n",[1078],{"type":45,"tag":127,"props":1079,"children":1080},{"__ignoreMap":246},[1081,1116,1165,1172,1228],{"type":45,"tag":252,"props":1082,"children":1083},{"class":254,"line":255},[1084,1090,1095,1100,1104,1108,1112],{"type":45,"tag":252,"props":1085,"children":1087},{"style":1086},"--shiki-light:#39ADB5;--shiki-light-font-style:italic;--shiki-default:#89DDFF;--shiki-default-font-style:italic;--shiki-dark:#89DDFF;--shiki-dark-font-style:italic",[1088],{"type":51,"value":1089},"import",{"type":45,"tag":252,"props":1091,"children":1092},{"style":842},[1093],{"type":51,"value":1094}," OpenAI ",{"type":45,"tag":252,"props":1096,"children":1097},{"style":1086},[1098],{"type":51,"value":1099},"from",{"type":45,"tag":252,"props":1101,"children":1102},{"style":280},[1103],{"type":51,"value":884},{"type":45,"tag":252,"props":1105,"children":1106},{"style":274},[1107],{"type":51,"value":425},{"type":45,"tag":252,"props":1109,"children":1110},{"style":280},[1111],{"type":51,"value":894},{"type":45,"tag":252,"props":1113,"children":1114},{"style":280},[1115],{"type":51,"value":953},{"type":45,"tag":252,"props":1117,"children":1118},{"class":254,"line":31},[1119,1123,1128,1133,1138,1142,1146,1151,1155,1160],{"type":45,"tag":252,"props":1120,"children":1121},{"style":1086},[1122],{"type":51,"value":1089},{"type":45,"tag":252,"props":1124,"children":1125},{"style":280},[1126],{"type":51,"value":1127}," *",{"type":45,"tag":252,"props":1129,"children":1130},{"style":1086},[1131],{"type":51,"value":1132}," as",{"type":45,"tag":252,"props":1134,"children":1135},{"style":842},[1136],{"type":51,"value":1137}," Sentry ",{"type":45,"tag":252,"props":1139,"children":1140},{"style":1086},[1141],{"type":51,"value":1099},{"type":45,"tag":252,"props":1143,"children":1144},{"style":280},[1145],{"type":51,"value":884},{"type":45,"tag":252,"props":1147,"children":1148},{"style":274},[1149],{"type":51,"value":1150},"@sentry\u002Fnextjs",{"type":45,"tag":252,"props":1152,"children":1153},{"style":280},[1154],{"type":51,"value":894},{"type":45,"tag":252,"props":1156,"children":1157},{"style":280},[1158],{"type":51,"value":1159},";",{"type":45,"tag":252,"props":1161,"children":1162},{"style":259},[1163],{"type":51,"value":1164}," \u002F\u002F or @sentry\u002Freact, @sentry\u002Fbrowser\n",{"type":45,"tag":252,"props":1166,"children":1167},{"class":254,"line":301},[1168],{"type":45,"tag":252,"props":1169,"children":1170},{"emptyLinePlaceholder":305},[1171],{"type":51,"value":308},{"type":45,"tag":252,"props":1173,"children":1174},{"class":254,"line":311},[1175,1181,1186,1191,1196,1200,1205,1209,1214,1219,1224],{"type":45,"tag":252,"props":1176,"children":1178},{"style":1177},"--shiki-light:#9C3EDA;--shiki-default:#C792EA;--shiki-dark:#C792EA",[1179],{"type":51,"value":1180},"const",{"type":45,"tag":252,"props":1182,"children":1183},{"style":842},[1184],{"type":51,"value":1185}," openai ",{"type":45,"tag":252,"props":1187,"children":1188},{"style":280},[1189],{"type":51,"value":1190},"=",{"type":45,"tag":252,"props":1192,"children":1193},{"style":842},[1194],{"type":51,"value":1195}," Sentry",{"type":45,"tag":252,"props":1197,"children":1198},{"style":280},[1199],{"type":51,"value":849},{"type":45,"tag":252,"props":1201,"children":1202},{"style":852},[1203],{"type":51,"value":1204},"instrumentOpenAiClient",{"type":45,"tag":252,"props":1206,"children":1207},{"style":842},[1208],{"type":51,"value":860},{"type":45,"tag":252,"props":1210,"children":1211},{"style":280},[1212],{"type":51,"value":1213},"new",{"type":45,"tag":252,"props":1215,"children":1216},{"style":852},[1217],{"type":51,"value":1218}," OpenAI",{"type":45,"tag":252,"props":1220,"children":1221},{"style":842},[1222],{"type":51,"value":1223},"())",{"type":45,"tag":252,"props":1225,"children":1226},{"style":280},[1227],{"type":51,"value":953},{"type":45,"tag":252,"props":1229,"children":1230},{"class":254,"line":320},[1231],{"type":45,"tag":252,"props":1232,"children":1233},{"style":259},[1234],{"type":51,"value":1235},"\u002F\u002F Use 'openai' client as normal\n",{"type":45,"tag":370,"props":1237,"children":1239},{"id":1238},"langchain-langgraph-auto-enabled",[1240],{"type":51,"value":1241},"LangChain \u002F LangGraph (auto-enabled)",{"type":45,"tag":241,"props":1243,"children":1245},{"className":831,"code":1244,"language":372,"meta":246,"style":246},"integrations: [\n  Sentry.langChainIntegration({\n    \u002F\u002F recordInputs: true,  \u002F\u002F Opt-in: captures prompt content (PII)\n    \u002F\u002F recordOutputs: true, \u002F\u002F Opt-in: captures response content (PII)\n  }),\n  Sentry.langGraphIntegration({\n    \u002F\u002F recordInputs: true,\n    \u002F\u002F recordOutputs: true,\n  }),\n],\n",[1246],{"type":45,"tag":127,"props":1247,"children":1248},{"__ignoreMap":246},[1249,1264,1288,1299,1310,1325,1349,1358,1367,1383],{"type":45,"tag":252,"props":1250,"children":1251},{"class":254,"line":255},[1252,1256,1260],{"type":45,"tag":252,"props":1253,"children":1254},{"style":268},[1255],{"type":51,"value":973},{"type":45,"tag":252,"props":1257,"children":1258},{"style":280},[1259],{"type":51,"value":879},{"type":45,"tag":252,"props":1261,"children":1262},{"style":842},[1263],{"type":51,"value":982},{"type":45,"tag":252,"props":1265,"children":1266},{"class":254,"line":31},[1267,1271,1275,1280,1284],{"type":45,"tag":252,"props":1268,"children":1269},{"style":842},[1270],{"type":51,"value":990},{"type":45,"tag":252,"props":1272,"children":1273},{"style":280},[1274],{"type":51,"value":849},{"type":45,"tag":252,"props":1276,"children":1277},{"style":852},[1278],{"type":51,"value":1279},"langChainIntegration",{"type":45,"tag":252,"props":1281,"children":1282},{"style":842},[1283],{"type":51,"value":860},{"type":45,"tag":252,"props":1285,"children":1286},{"style":280},[1287],{"type":51,"value":865},{"type":45,"tag":252,"props":1289,"children":1290},{"class":254,"line":301},[1291,1295],{"type":45,"tag":252,"props":1292,"children":1293},{"style":259},[1294],{"type":51,"value":1015},{"type":45,"tag":252,"props":1296,"children":1297},{"style":259},[1298],{"type":51,"value":1020},{"type":45,"tag":252,"props":1300,"children":1301},{"class":254,"line":311},[1302,1306],{"type":45,"tag":252,"props":1303,"children":1304},{"style":259},[1305],{"type":51,"value":1028},{"type":45,"tag":252,"props":1307,"children":1308},{"style":259},[1309],{"type":51,"value":1033},{"type":45,"tag":252,"props":1311,"children":1312},{"class":254,"line":320},[1313,1317,1321],{"type":45,"tag":252,"props":1314,"children":1315},{"style":280},[1316],{"type":51,"value":1041},{"type":45,"tag":252,"props":1318,"children":1319},{"style":842},[1320],{"type":51,"value":948},{"type":45,"tag":252,"props":1322,"children":1323},{"style":280},[1324],{"type":51,"value":899},{"type":45,"tag":252,"props":1326,"children":1327},{"class":254,"line":1052},[1328,1332,1336,1341,1345],{"type":45,"tag":252,"props":1329,"children":1330},{"style":842},[1331],{"type":51,"value":990},{"type":45,"tag":252,"props":1333,"children":1334},{"style":280},[1335],{"type":51,"value":849},{"type":45,"tag":252,"props":1337,"children":1338},{"style":852},[1339],{"type":51,"value":1340},"langGraphIntegration",{"type":45,"tag":252,"props":1342,"children":1343},{"style":842},[1344],{"type":51,"value":860},{"type":45,"tag":252,"props":1346,"children":1347},{"style":280},[1348],{"type":51,"value":865},{"type":45,"tag":252,"props":1350,"children":1352},{"class":254,"line":1351},7,[1353],{"type":45,"tag":252,"props":1354,"children":1355},{"style":259},[1356],{"type":51,"value":1357},"    \u002F\u002F recordInputs: true,\n",{"type":45,"tag":252,"props":1359,"children":1361},{"class":254,"line":1360},8,[1362],{"type":45,"tag":252,"props":1363,"children":1364},{"style":259},[1365],{"type":51,"value":1366},"    \u002F\u002F recordOutputs: true,\n",{"type":45,"tag":252,"props":1368,"children":1370},{"class":254,"line":1369},9,[1371,1375,1379],{"type":45,"tag":252,"props":1372,"children":1373},{"style":280},[1374],{"type":51,"value":1041},{"type":45,"tag":252,"props":1376,"children":1377},{"style":842},[1378],{"type":51,"value":948},{"type":45,"tag":252,"props":1380,"children":1381},{"style":280},[1382],{"type":51,"value":899},{"type":45,"tag":252,"props":1384,"children":1386},{"class":254,"line":1385},10,[1387,1391],{"type":45,"tag":252,"props":1388,"children":1389},{"style":842},[1390],{"type":51,"value":1058},{"type":45,"tag":252,"props":1392,"children":1393},{"style":280},[1394],{"type":51,"value":899},{"type":45,"tag":370,"props":1396,"children":1398},{"id":1397},"vercel-ai-sdk",[1399],{"type":51,"value":1400},"Vercel AI SDK",{"type":45,"tag":54,"props":1402,"children":1403},{},[1404,1406,1412],{"type":51,"value":1405},"Add to ",{"type":45,"tag":127,"props":1407,"children":1409},{"className":1408},[],[1410],{"type":51,"value":1411},"sentry.edge.config.ts",{"type":51,"value":1413}," for Edge runtime:",{"type":45,"tag":241,"props":1415,"children":1417},{"className":831,"code":1416,"language":372,"meta":246,"style":246},"integrations: [Sentry.vercelAIIntegration()],\n",[1418],{"type":45,"tag":127,"props":1419,"children":1420},{"__ignoreMap":246},[1421],{"type":45,"tag":252,"props":1422,"children":1423},{"class":254,"line":255},[1424,1428,1432,1437,1441,1446,1451],{"type":45,"tag":252,"props":1425,"children":1426},{"style":268},[1427],{"type":51,"value":973},{"type":45,"tag":252,"props":1429,"children":1430},{"style":280},[1431],{"type":51,"value":879},{"type":45,"tag":252,"props":1433,"children":1434},{"style":842},[1435],{"type":51,"value":1436}," [Sentry",{"type":45,"tag":252,"props":1438,"children":1439},{"style":280},[1440],{"type":51,"value":849},{"type":45,"tag":252,"props":1442,"children":1443},{"style":852},[1444],{"type":51,"value":1445},"vercelAIIntegration",{"type":45,"tag":252,"props":1447,"children":1448},{"style":842},[1449],{"type":51,"value":1450},"()]",{"type":45,"tag":252,"props":1452,"children":1453},{"style":280},[1454],{"type":51,"value":899},{"type":45,"tag":54,"props":1456,"children":1457},{},[1458],{"type":51,"value":1459},"Enable telemetry per-call:",{"type":45,"tag":241,"props":1461,"children":1463},{"className":831,"code":1462,"language":372,"meta":246,"style":246},"await generateText({\n  model: openai(\"gpt-4o\"),\n  prompt: \"Hello\",\n  experimental_telemetry: {\n    isEnabled: true,\n    \u002F\u002F recordInputs: true,  \u002F\u002F Opt-in: captures prompt content (PII)\n    \u002F\u002F recordOutputs: true, \u002F\u002F Opt-in: captures response content (PII)\n  },\n});\n",[1464],{"type":45,"tag":127,"props":1465,"children":1466},{"__ignoreMap":246},[1467,1488,1530,1559,1576,1598,1609,1620,1628],{"type":45,"tag":252,"props":1468,"children":1469},{"class":254,"line":255},[1470,1475,1480,1484],{"type":45,"tag":252,"props":1471,"children":1472},{"style":1086},[1473],{"type":51,"value":1474},"await",{"type":45,"tag":252,"props":1476,"children":1477},{"style":852},[1478],{"type":51,"value":1479}," generateText",{"type":45,"tag":252,"props":1481,"children":1482},{"style":842},[1483],{"type":51,"value":860},{"type":45,"tag":252,"props":1485,"children":1486},{"style":280},[1487],{"type":51,"value":865},{"type":45,"tag":252,"props":1489,"children":1490},{"class":254,"line":31},[1491,1496,1500,1505,1509,1513,1518,1522,1526],{"type":45,"tag":252,"props":1492,"children":1493},{"style":871},[1494],{"type":51,"value":1495},"  model",{"type":45,"tag":252,"props":1497,"children":1498},{"style":280},[1499],{"type":51,"value":879},{"type":45,"tag":252,"props":1501,"children":1502},{"style":852},[1503],{"type":51,"value":1504}," openai",{"type":45,"tag":252,"props":1506,"children":1507},{"style":842},[1508],{"type":51,"value":860},{"type":45,"tag":252,"props":1510,"children":1511},{"style":280},[1512],{"type":51,"value":894},{"type":45,"tag":252,"props":1514,"children":1515},{"style":274},[1516],{"type":51,"value":1517},"gpt-4o",{"type":45,"tag":252,"props":1519,"children":1520},{"style":280},[1521],{"type":51,"value":894},{"type":45,"tag":252,"props":1523,"children":1524},{"style":842},[1525],{"type":51,"value":948},{"type":45,"tag":252,"props":1527,"children":1528},{"style":280},[1529],{"type":51,"value":899},{"type":45,"tag":252,"props":1531,"children":1532},{"class":254,"line":301},[1533,1538,1542,1546,1551,1555],{"type":45,"tag":252,"props":1534,"children":1535},{"style":871},[1536],{"type":51,"value":1537},"  prompt",{"type":45,"tag":252,"props":1539,"children":1540},{"style":280},[1541],{"type":51,"value":879},{"type":45,"tag":252,"props":1543,"children":1544},{"style":280},[1545],{"type":51,"value":884},{"type":45,"tag":252,"props":1547,"children":1548},{"style":274},[1549],{"type":51,"value":1550},"Hello",{"type":45,"tag":252,"props":1552,"children":1553},{"style":280},[1554],{"type":51,"value":894},{"type":45,"tag":252,"props":1556,"children":1557},{"style":280},[1558],{"type":51,"value":899},{"type":45,"tag":252,"props":1560,"children":1561},{"class":254,"line":311},[1562,1567,1571],{"type":45,"tag":252,"props":1563,"children":1564},{"style":871},[1565],{"type":51,"value":1566},"  experimental_telemetry",{"type":45,"tag":252,"props":1568,"children":1569},{"style":280},[1570],{"type":51,"value":879},{"type":45,"tag":252,"props":1572,"children":1573},{"style":280},[1574],{"type":51,"value":1575}," {\n",{"type":45,"tag":252,"props":1577,"children":1578},{"class":254,"line":320},[1579,1584,1588,1594],{"type":45,"tag":252,"props":1580,"children":1581},{"style":871},[1582],{"type":51,"value":1583},"    isEnabled",{"type":45,"tag":252,"props":1585,"children":1586},{"style":280},[1587],{"type":51,"value":879},{"type":45,"tag":252,"props":1589,"children":1591},{"style":1590},"--shiki-light:#FF5370;--shiki-default:#FF9CAC;--shiki-dark:#FF9CAC",[1592],{"type":51,"value":1593}," true",{"type":45,"tag":252,"props":1595,"children":1596},{"style":280},[1597],{"type":51,"value":899},{"type":45,"tag":252,"props":1599,"children":1600},{"class":254,"line":1052},[1601,1605],{"type":45,"tag":252,"props":1602,"children":1603},{"style":259},[1604],{"type":51,"value":1015},{"type":45,"tag":252,"props":1606,"children":1607},{"style":259},[1608],{"type":51,"value":1020},{"type":45,"tag":252,"props":1610,"children":1611},{"class":254,"line":1351},[1612,1616],{"type":45,"tag":252,"props":1613,"children":1614},{"style":259},[1615],{"type":51,"value":1028},{"type":45,"tag":252,"props":1617,"children":1618},{"style":259},[1619],{"type":51,"value":1033},{"type":45,"tag":252,"props":1621,"children":1622},{"class":254,"line":1360},[1623],{"type":45,"tag":252,"props":1624,"children":1625},{"style":280},[1626],{"type":51,"value":1627},"  },\n",{"type":45,"tag":252,"props":1629,"children":1630},{"class":254,"line":1369},[1631,1635,1639],{"type":45,"tag":252,"props":1632,"children":1633},{"style":280},[1634],{"type":51,"value":943},{"type":45,"tag":252,"props":1636,"children":1637},{"style":842},[1638],{"type":51,"value":948},{"type":45,"tag":252,"props":1640,"children":1641},{"style":280},[1642],{"type":51,"value":953},{"type":45,"tag":60,"props":1644,"children":1646},{"id":1645},"python-configuration",[1647],{"type":51,"value":1648},"Python Configuration",{"type":45,"tag":54,"props":1650,"children":1651},{},[1652],{"type":51,"value":1653},"Integrations auto-enable — just init with tracing. Only add explicit imports to customize options:",{"type":45,"tag":241,"props":1655,"children":1658},{"className":1656,"code":1657,"language":609,"meta":246,"style":246},"language-python shiki shiki-themes material-theme-lighter material-theme material-theme-palenight","import sentry_sdk\n\nsentry_sdk.init(\n    dsn=\"YOUR_DSN\",\n    traces_sample_rate=1.0,  # Lower in production (e.g., 0.1)\n    # send_default_pii=True,  # Opt-in: required for prompt capture (sends user PII)\n    # Integrations auto-enable when the AI package is installed.\n    # Only specify explicitly to customize (e.g., include_prompts):\n    # integrations=[OpenAIIntegration(include_prompts=True)],\n)\n",[1659],{"type":45,"tag":127,"props":1660,"children":1661},{"__ignoreMap":246},[1662,1670,1677,1685,1693,1701,1709,1717,1725,1733],{"type":45,"tag":252,"props":1663,"children":1664},{"class":254,"line":255},[1665],{"type":45,"tag":252,"props":1666,"children":1667},{},[1668],{"type":51,"value":1669},"import sentry_sdk\n",{"type":45,"tag":252,"props":1671,"children":1672},{"class":254,"line":31},[1673],{"type":45,"tag":252,"props":1674,"children":1675},{"emptyLinePlaceholder":305},[1676],{"type":51,"value":308},{"type":45,"tag":252,"props":1678,"children":1679},{"class":254,"line":301},[1680],{"type":45,"tag":252,"props":1681,"children":1682},{},[1683],{"type":51,"value":1684},"sentry_sdk.init(\n",{"type":45,"tag":252,"props":1686,"children":1687},{"class":254,"line":311},[1688],{"type":45,"tag":252,"props":1689,"children":1690},{},[1691],{"type":51,"value":1692},"    dsn=\"YOUR_DSN\",\n",{"type":45,"tag":252,"props":1694,"children":1695},{"class":254,"line":320},[1696],{"type":45,"tag":252,"props":1697,"children":1698},{},[1699],{"type":51,"value":1700},"    traces_sample_rate=1.0,  # Lower in production (e.g., 0.1)\n",{"type":45,"tag":252,"props":1702,"children":1703},{"class":254,"line":1052},[1704],{"type":45,"tag":252,"props":1705,"children":1706},{},[1707],{"type":51,"value":1708},"    # send_default_pii=True,  # Opt-in: required for prompt capture (sends user PII)\n",{"type":45,"tag":252,"props":1710,"children":1711},{"class":254,"line":1351},[1712],{"type":45,"tag":252,"props":1713,"children":1714},{},[1715],{"type":51,"value":1716},"    # Integrations auto-enable when the AI package is installed.\n",{"type":45,"tag":252,"props":1718,"children":1719},{"class":254,"line":1360},[1720],{"type":45,"tag":252,"props":1721,"children":1722},{},[1723],{"type":51,"value":1724},"    # Only specify explicitly to customize (e.g., include_prompts):\n",{"type":45,"tag":252,"props":1726,"children":1727},{"class":254,"line":1369},[1728],{"type":45,"tag":252,"props":1729,"children":1730},{},[1731],{"type":51,"value":1732},"    # integrations=[OpenAIIntegration(include_prompts=True)],\n",{"type":45,"tag":252,"props":1734,"children":1735},{"class":254,"line":1385},[1736],{"type":45,"tag":252,"props":1737,"children":1738},{},[1739],{"type":51,"value":1740},")\n",{"type":45,"tag":60,"props":1742,"children":1744},{"id":1743},"manual-instrumentation",[1745],{"type":51,"value":1746},"Manual Instrumentation",{"type":45,"tag":54,"props":1748,"children":1749},{},[1750],{"type":51,"value":1751},"Use when no supported SDK is detected.",{"type":45,"tag":370,"props":1753,"children":1755},{"id":1754},"span-types",[1756],{"type":51,"value":1757},"Span Types",{"type":45,"tag":377,"props":1759,"children":1760},{},[1761,1783],{"type":45,"tag":381,"props":1762,"children":1763},{},[1764],{"type":45,"tag":385,"props":1765,"children":1766},{},[1767,1778],{"type":45,"tag":389,"props":1768,"children":1769},{},[1770,1776],{"type":45,"tag":127,"props":1771,"children":1773},{"className":1772},[],[1774],{"type":51,"value":1775},"op",{"type":51,"value":1777}," Value",{"type":45,"tag":389,"props":1779,"children":1780},{},[1781],{"type":51,"value":1782},"Purpose",{"type":45,"tag":410,"props":1784,"children":1785},{},[1786,1803,1820,1837],{"type":45,"tag":385,"props":1787,"children":1788},{},[1789,1798],{"type":45,"tag":417,"props":1790,"children":1791},{},[1792],{"type":45,"tag":127,"props":1793,"children":1795},{"className":1794},[],[1796],{"type":51,"value":1797},"gen_ai.request",{"type":45,"tag":417,"props":1799,"children":1800},{},[1801],{"type":51,"value":1802},"Individual LLM calls",{"type":45,"tag":385,"props":1804,"children":1805},{},[1806,1815],{"type":45,"tag":417,"props":1807,"children":1808},{},[1809],{"type":45,"tag":127,"props":1810,"children":1812},{"className":1811},[],[1813],{"type":51,"value":1814},"gen_ai.invoke_agent",{"type":45,"tag":417,"props":1816,"children":1817},{},[1818],{"type":51,"value":1819},"Agent execution lifecycle",{"type":45,"tag":385,"props":1821,"children":1822},{},[1823,1832],{"type":45,"tag":417,"props":1824,"children":1825},{},[1826],{"type":45,"tag":127,"props":1827,"children":1829},{"className":1828},[],[1830],{"type":51,"value":1831},"gen_ai.execute_tool",{"type":45,"tag":417,"props":1833,"children":1834},{},[1835],{"type":51,"value":1836},"Tool\u002Ffunction calls",{"type":45,"tag":385,"props":1838,"children":1839},{},[1840,1849],{"type":45,"tag":417,"props":1841,"children":1842},{},[1843],{"type":45,"tag":127,"props":1844,"children":1846},{"className":1845},[],[1847],{"type":51,"value":1848},"gen_ai.handoff",{"type":45,"tag":417,"props":1850,"children":1851},{},[1852],{"type":51,"value":1853},"Agent-to-agent transitions",{"type":45,"tag":370,"props":1855,"children":1857},{"id":1856},"example-javascript",[1858],{"type":51,"value":1859},"Example (JavaScript)",{"type":45,"tag":241,"props":1861,"children":1863},{"className":831,"code":1862,"language":372,"meta":246,"style":246},"await Sentry.startSpan({\n  op: \"gen_ai.request\",\n  name: \"LLM request gpt-4o\",\n  attributes: { \"gen_ai.request.model\": \"gpt-4o\" },\n}, async (span) => {\n  span.setAttribute(\"gen_ai.request.messages\", JSON.stringify(messages));\n  const result = await llmClient.complete(prompt);\n  span.setAttribute(\"gen_ai.usage.input_tokens\", result.inputTokens);\n  span.setAttribute(\"gen_ai.usage.output_tokens\", result.outputTokens);\n  return result;\n});\n",[1864],{"type":45,"tag":127,"props":1865,"children":1866},{"__ignoreMap":246},[1867,1895,1923,1952,2003,2038,2108,2162,2219,2276,2292],{"type":45,"tag":252,"props":1868,"children":1869},{"class":254,"line":255},[1870,1874,1878,1882,1887,1891],{"type":45,"tag":252,"props":1871,"children":1872},{"style":1086},[1873],{"type":51,"value":1474},{"type":45,"tag":252,"props":1875,"children":1876},{"style":842},[1877],{"type":51,"value":1195},{"type":45,"tag":252,"props":1879,"children":1880},{"style":280},[1881],{"type":51,"value":849},{"type":45,"tag":252,"props":1883,"children":1884},{"style":852},[1885],{"type":51,"value":1886},"startSpan",{"type":45,"tag":252,"props":1888,"children":1889},{"style":842},[1890],{"type":51,"value":860},{"type":45,"tag":252,"props":1892,"children":1893},{"style":280},[1894],{"type":51,"value":865},{"type":45,"tag":252,"props":1896,"children":1897},{"class":254,"line":31},[1898,1903,1907,1911,1915,1919],{"type":45,"tag":252,"props":1899,"children":1900},{"style":871},[1901],{"type":51,"value":1902},"  op",{"type":45,"tag":252,"props":1904,"children":1905},{"style":280},[1906],{"type":51,"value":879},{"type":45,"tag":252,"props":1908,"children":1909},{"style":280},[1910],{"type":51,"value":884},{"type":45,"tag":252,"props":1912,"children":1913},{"style":274},[1914],{"type":51,"value":1797},{"type":45,"tag":252,"props":1916,"children":1917},{"style":280},[1918],{"type":51,"value":894},{"type":45,"tag":252,"props":1920,"children":1921},{"style":280},[1922],{"type":51,"value":899},{"type":45,"tag":252,"props":1924,"children":1925},{"class":254,"line":301},[1926,1931,1935,1939,1944,1948],{"type":45,"tag":252,"props":1927,"children":1928},{"style":871},[1929],{"type":51,"value":1930},"  name",{"type":45,"tag":252,"props":1932,"children":1933},{"style":280},[1934],{"type":51,"value":879},{"type":45,"tag":252,"props":1936,"children":1937},{"style":280},[1938],{"type":51,"value":884},{"type":45,"tag":252,"props":1940,"children":1941},{"style":274},[1942],{"type":51,"value":1943},"LLM request gpt-4o",{"type":45,"tag":252,"props":1945,"children":1946},{"style":280},[1947],{"type":51,"value":894},{"type":45,"tag":252,"props":1949,"children":1950},{"style":280},[1951],{"type":51,"value":899},{"type":45,"tag":252,"props":1953,"children":1954},{"class":254,"line":311},[1955,1960,1964,1969,1973,1978,1982,1986,1990,1994,1998],{"type":45,"tag":252,"props":1956,"children":1957},{"style":871},[1958],{"type":51,"value":1959},"  attributes",{"type":45,"tag":252,"props":1961,"children":1962},{"style":280},[1963],{"type":51,"value":879},{"type":45,"tag":252,"props":1965,"children":1966},{"style":280},[1967],{"type":51,"value":1968}," {",{"type":45,"tag":252,"props":1970,"children":1971},{"style":280},[1972],{"type":51,"value":884},{"type":45,"tag":252,"props":1974,"children":1975},{"style":871},[1976],{"type":51,"value":1977},"gen_ai.request.model",{"type":45,"tag":252,"props":1979,"children":1980},{"style":280},[1981],{"type":51,"value":894},{"type":45,"tag":252,"props":1983,"children":1984},{"style":280},[1985],{"type":51,"value":879},{"type":45,"tag":252,"props":1987,"children":1988},{"style":280},[1989],{"type":51,"value":884},{"type":45,"tag":252,"props":1991,"children":1992},{"style":274},[1993],{"type":51,"value":1517},{"type":45,"tag":252,"props":1995,"children":1996},{"style":280},[1997],{"type":51,"value":894},{"type":45,"tag":252,"props":1999,"children":2000},{"style":280},[2001],{"type":51,"value":2002}," },\n",{"type":45,"tag":252,"props":2004,"children":2005},{"class":254,"line":320},[2006,2011,2016,2020,2025,2029,2034],{"type":45,"tag":252,"props":2007,"children":2008},{"style":280},[2009],{"type":51,"value":2010},"},",{"type":45,"tag":252,"props":2012,"children":2013},{"style":1177},[2014],{"type":51,"value":2015}," async",{"type":45,"tag":252,"props":2017,"children":2018},{"style":280},[2019],{"type":51,"value":125},{"type":45,"tag":252,"props":2021,"children":2023},{"style":2022},"--shiki-light:#90A4AE;--shiki-light-font-style:italic;--shiki-default:#EEFFFF;--shiki-default-font-style:italic;--shiki-dark:#BABED8;--shiki-dark-font-style:italic",[2024],{"type":51,"value":252},{"type":45,"tag":252,"props":2026,"children":2027},{"style":280},[2028],{"type":51,"value":948},{"type":45,"tag":252,"props":2030,"children":2031},{"style":1177},[2032],{"type":51,"value":2033}," =>",{"type":45,"tag":252,"props":2035,"children":2036},{"style":280},[2037],{"type":51,"value":1575},{"type":45,"tag":252,"props":2039,"children":2040},{"class":254,"line":1052},[2041,2046,2050,2055,2059,2063,2068,2072,2076,2081,2085,2090,2094,2099,2104],{"type":45,"tag":252,"props":2042,"children":2043},{"style":842},[2044],{"type":51,"value":2045},"  span",{"type":45,"tag":252,"props":2047,"children":2048},{"style":280},[2049],{"type":51,"value":849},{"type":45,"tag":252,"props":2051,"children":2052},{"style":852},[2053],{"type":51,"value":2054},"setAttribute",{"type":45,"tag":252,"props":2056,"children":2057},{"style":871},[2058],{"type":51,"value":860},{"type":45,"tag":252,"props":2060,"children":2061},{"style":280},[2062],{"type":51,"value":894},{"type":45,"tag":252,"props":2064,"children":2065},{"style":274},[2066],{"type":51,"value":2067},"gen_ai.request.messages",{"type":45,"tag":252,"props":2069,"children":2070},{"style":280},[2071],{"type":51,"value":894},{"type":45,"tag":252,"props":2073,"children":2074},{"style":280},[2075],{"type":51,"value":922},{"type":45,"tag":252,"props":2077,"children":2078},{"style":842},[2079],{"type":51,"value":2080}," JSON",{"type":45,"tag":252,"props":2082,"children":2083},{"style":280},[2084],{"type":51,"value":849},{"type":45,"tag":252,"props":2086,"children":2087},{"style":852},[2088],{"type":51,"value":2089},"stringify",{"type":45,"tag":252,"props":2091,"children":2092},{"style":871},[2093],{"type":51,"value":860},{"type":45,"tag":252,"props":2095,"children":2096},{"style":842},[2097],{"type":51,"value":2098},"messages",{"type":45,"tag":252,"props":2100,"children":2101},{"style":871},[2102],{"type":51,"value":2103},"))",{"type":45,"tag":252,"props":2105,"children":2106},{"style":280},[2107],{"type":51,"value":953},{"type":45,"tag":252,"props":2109,"children":2110},{"class":254,"line":1351},[2111,2116,2121,2126,2131,2136,2140,2145,2149,2154,2158],{"type":45,"tag":252,"props":2112,"children":2113},{"style":1177},[2114],{"type":51,"value":2115},"  const",{"type":45,"tag":252,"props":2117,"children":2118},{"style":842},[2119],{"type":51,"value":2120}," result",{"type":45,"tag":252,"props":2122,"children":2123},{"style":280},[2124],{"type":51,"value":2125}," =",{"type":45,"tag":252,"props":2127,"children":2128},{"style":1086},[2129],{"type":51,"value":2130}," await",{"type":45,"tag":252,"props":2132,"children":2133},{"style":842},[2134],{"type":51,"value":2135}," llmClient",{"type":45,"tag":252,"props":2137,"children":2138},{"style":280},[2139],{"type":51,"value":849},{"type":45,"tag":252,"props":2141,"children":2142},{"style":852},[2143],{"type":51,"value":2144},"complete",{"type":45,"tag":252,"props":2146,"children":2147},{"style":871},[2148],{"type":51,"value":860},{"type":45,"tag":252,"props":2150,"children":2151},{"style":842},[2152],{"type":51,"value":2153},"prompt",{"type":45,"tag":252,"props":2155,"children":2156},{"style":871},[2157],{"type":51,"value":948},{"type":45,"tag":252,"props":2159,"children":2160},{"style":280},[2161],{"type":51,"value":953},{"type":45,"tag":252,"props":2163,"children":2164},{"class":254,"line":1360},[2165,2169,2173,2177,2181,2185,2190,2194,2198,2202,2206,2211,2215],{"type":45,"tag":252,"props":2166,"children":2167},{"style":842},[2168],{"type":51,"value":2045},{"type":45,"tag":252,"props":2170,"children":2171},{"style":280},[2172],{"type":51,"value":849},{"type":45,"tag":252,"props":2174,"children":2175},{"style":852},[2176],{"type":51,"value":2054},{"type":45,"tag":252,"props":2178,"children":2179},{"style":871},[2180],{"type":51,"value":860},{"type":45,"tag":252,"props":2182,"children":2183},{"style":280},[2184],{"type":51,"value":894},{"type":45,"tag":252,"props":2186,"children":2187},{"style":274},[2188],{"type":51,"value":2189},"gen_ai.usage.input_tokens",{"type":45,"tag":252,"props":2191,"children":2192},{"style":280},[2193],{"type":51,"value":894},{"type":45,"tag":252,"props":2195,"children":2196},{"style":280},[2197],{"type":51,"value":922},{"type":45,"tag":252,"props":2199,"children":2200},{"style":842},[2201],{"type":51,"value":2120},{"type":45,"tag":252,"props":2203,"children":2204},{"style":280},[2205],{"type":51,"value":849},{"type":45,"tag":252,"props":2207,"children":2208},{"style":842},[2209],{"type":51,"value":2210},"inputTokens",{"type":45,"tag":252,"props":2212,"children":2213},{"style":871},[2214],{"type":51,"value":948},{"type":45,"tag":252,"props":2216,"children":2217},{"style":280},[2218],{"type":51,"value":953},{"type":45,"tag":252,"props":2220,"children":2221},{"class":254,"line":1369},[2222,2226,2230,2234,2238,2242,2247,2251,2255,2259,2263,2268,2272],{"type":45,"tag":252,"props":2223,"children":2224},{"style":842},[2225],{"type":51,"value":2045},{"type":45,"tag":252,"props":2227,"children":2228},{"style":280},[2229],{"type":51,"value":849},{"type":45,"tag":252,"props":2231,"children":2232},{"style":852},[2233],{"type":51,"value":2054},{"type":45,"tag":252,"props":2235,"children":2236},{"style":871},[2237],{"type":51,"value":860},{"type":45,"tag":252,"props":2239,"children":2240},{"style":280},[2241],{"type":51,"value":894},{"type":45,"tag":252,"props":2243,"children":2244},{"style":274},[2245],{"type":51,"value":2246},"gen_ai.usage.output_tokens",{"type":45,"tag":252,"props":2248,"children":2249},{"style":280},[2250],{"type":51,"value":894},{"type":45,"tag":252,"props":2252,"children":2253},{"style":280},[2254],{"type":51,"value":922},{"type":45,"tag":252,"props":2256,"children":2257},{"style":842},[2258],{"type":51,"value":2120},{"type":45,"tag":252,"props":2260,"children":2261},{"style":280},[2262],{"type":51,"value":849},{"type":45,"tag":252,"props":2264,"children":2265},{"style":842},[2266],{"type":51,"value":2267},"outputTokens",{"type":45,"tag":252,"props":2269,"children":2270},{"style":871},[2271],{"type":51,"value":948},{"type":45,"tag":252,"props":2273,"children":2274},{"style":280},[2275],{"type":51,"value":953},{"type":45,"tag":252,"props":2277,"children":2278},{"class":254,"line":1385},[2279,2284,2288],{"type":45,"tag":252,"props":2280,"children":2281},{"style":1086},[2282],{"type":51,"value":2283},"  return",{"type":45,"tag":252,"props":2285,"children":2286},{"style":842},[2287],{"type":51,"value":2120},{"type":45,"tag":252,"props":2289,"children":2290},{"style":280},[2291],{"type":51,"value":953},{"type":45,"tag":252,"props":2293,"children":2295},{"class":254,"line":2294},11,[2296,2300,2304],{"type":45,"tag":252,"props":2297,"children":2298},{"style":280},[2299],{"type":51,"value":943},{"type":45,"tag":252,"props":2301,"children":2302},{"style":842},[2303],{"type":51,"value":948},{"type":45,"tag":252,"props":2305,"children":2306},{"style":280},[2307],{"type":51,"value":953},{"type":45,"tag":370,"props":2309,"children":2311},{"id":2310},"key-attributes",[2312],{"type":51,"value":2313},"Key Attributes",{"type":45,"tag":377,"props":2315,"children":2316},{},[2317,2333],{"type":45,"tag":381,"props":2318,"children":2319},{},[2320],{"type":45,"tag":385,"props":2321,"children":2322},{},[2323,2328],{"type":45,"tag":389,"props":2324,"children":2325},{},[2326],{"type":51,"value":2327},"Attribute",{"type":45,"tag":389,"props":2329,"children":2330},{},[2331],{"type":51,"value":2332},"Description",{"type":45,"tag":410,"props":2334,"children":2335},{},[2336,2352,2368,2384,2400,2417],{"type":45,"tag":385,"props":2337,"children":2338},{},[2339,2347],{"type":45,"tag":417,"props":2340,"children":2341},{},[2342],{"type":45,"tag":127,"props":2343,"children":2345},{"className":2344},[],[2346],{"type":51,"value":1977},{"type":45,"tag":417,"props":2348,"children":2349},{},[2350],{"type":51,"value":2351},"Model identifier",{"type":45,"tag":385,"props":2353,"children":2354},{},[2355,2363],{"type":45,"tag":417,"props":2356,"children":2357},{},[2358],{"type":45,"tag":127,"props":2359,"children":2361},{"className":2360},[],[2362],{"type":51,"value":2067},{"type":45,"tag":417,"props":2364,"children":2365},{},[2366],{"type":51,"value":2367},"JSON input messages",{"type":45,"tag":385,"props":2369,"children":2370},{},[2371,2379],{"type":45,"tag":417,"props":2372,"children":2373},{},[2374],{"type":45,"tag":127,"props":2375,"children":2377},{"className":2376},[],[2378],{"type":51,"value":2189},{"type":45,"tag":417,"props":2380,"children":2381},{},[2382],{"type":51,"value":2383},"Input token count",{"type":45,"tag":385,"props":2385,"children":2386},{},[2387,2395],{"type":45,"tag":417,"props":2388,"children":2389},{},[2390],{"type":45,"tag":127,"props":2391,"children":2393},{"className":2392},[],[2394],{"type":51,"value":2246},{"type":45,"tag":417,"props":2396,"children":2397},{},[2398],{"type":51,"value":2399},"Output token count",{"type":45,"tag":385,"props":2401,"children":2402},{},[2403,2412],{"type":45,"tag":417,"props":2404,"children":2405},{},[2406],{"type":45,"tag":127,"props":2407,"children":2409},{"className":2408},[],[2410],{"type":51,"value":2411},"gen_ai.agent.name",{"type":45,"tag":417,"props":2413,"children":2414},{},[2415],{"type":51,"value":2416},"Agent identifier",{"type":45,"tag":385,"props":2418,"children":2419},{},[2420,2429],{"type":45,"tag":417,"props":2421,"children":2422},{},[2423],{"type":45,"tag":127,"props":2424,"children":2426},{"className":2425},[],[2427],{"type":51,"value":2428},"gen_ai.tool.name",{"type":45,"tag":417,"props":2430,"children":2431},{},[2432],{"type":51,"value":2433},"Tool identifier",{"type":45,"tag":54,"props":2435,"children":2436},{},[2437],{"type":51,"value":2438},"Enable prompt\u002Foutput capture only after confirming with the user (see Data Capture Warning above).",{"type":45,"tag":60,"props":2440,"children":2442},{"id":2441},"verification",[2443],{"type":51,"value":2444},"Verification",{"type":45,"tag":54,"props":2446,"children":2447},{},[2448,2450,2456],{"type":51,"value":2449},"After configuring, make an LLM call and check the Sentry Traces dashboard. AI spans appear with ",{"type":45,"tag":127,"props":2451,"children":2453},{"className":2452},[],[2454],{"type":51,"value":2455},"gen_ai.*",{"type":51,"value":2457}," operations showing model, token counts, and latency.",{"type":45,"tag":60,"props":2459,"children":2461},{"id":2460},"troubleshooting",[2462],{"type":51,"value":2463},"Troubleshooting",{"type":45,"tag":377,"props":2465,"children":2466},{},[2467,2483],{"type":45,"tag":381,"props":2468,"children":2469},{},[2470],{"type":45,"tag":385,"props":2471,"children":2472},{},[2473,2478],{"type":45,"tag":389,"props":2474,"children":2475},{},[2476],{"type":51,"value":2477},"Issue",{"type":45,"tag":389,"props":2479,"children":2480},{},[2481],{"type":51,"value":2482},"Solution",{"type":45,"tag":410,"props":2484,"children":2485},{},[2486,2506,2519,2543],{"type":45,"tag":385,"props":2487,"children":2488},{},[2489,2494],{"type":45,"tag":417,"props":2490,"children":2491},{},[2492],{"type":51,"value":2493},"AI spans not appearing",{"type":45,"tag":417,"props":2495,"children":2496},{},[2497,2499,2504],{"type":51,"value":2498},"Verify ",{"type":45,"tag":127,"props":2500,"children":2502},{"className":2501},[],[2503],{"type":51,"value":132},{"type":51,"value":2505},", check SDK version",{"type":45,"tag":385,"props":2507,"children":2508},{},[2509,2514],{"type":45,"tag":417,"props":2510,"children":2511},{},[2512],{"type":51,"value":2513},"Token counts missing",{"type":45,"tag":417,"props":2515,"children":2516},{},[2517],{"type":51,"value":2518},"Some providers don't return tokens for streaming",{"type":45,"tag":385,"props":2520,"children":2521},{},[2522,2527],{"type":45,"tag":417,"props":2523,"children":2524},{},[2525],{"type":51,"value":2526},"Prompts not captured",{"type":45,"tag":417,"props":2528,"children":2529},{},[2530,2532,2537,2538],{"type":51,"value":2531},"Enable ",{"type":45,"tag":127,"props":2533,"children":2535},{"className":2534},[],[2536],{"type":51,"value":156},{"type":51,"value":158},{"type":45,"tag":127,"props":2539,"children":2541},{"className":2540},[],[2542],{"type":51,"value":172},{"type":45,"tag":385,"props":2544,"children":2545},{},[2546,2551],{"type":45,"tag":417,"props":2547,"children":2548},{},[2549],{"type":51,"value":2550},"Vercel AI not working",{"type":45,"tag":417,"props":2552,"children":2553},{},[2554,2556,2561],{"type":51,"value":2555},"Add ",{"type":45,"tag":127,"props":2557,"children":2559},{"className":2558},[],[2560],{"type":51,"value":604},{"type":51,"value":2562}," to each call",{"type":45,"tag":2564,"props":2565,"children":2566},"style",{},[2567],{"type":51,"value":2568},"html .light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html.light .shiki span {color: var(--shiki-light);background: var(--shiki-light-bg);font-style: var(--shiki-light-font-style);font-weight: var(--shiki-light-font-weight);text-decoration: var(--shiki-light-text-decoration);}html .default .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .shiki span {color: var(--shiki-default);background: var(--shiki-default-bg);font-style: var(--shiki-default-font-style);font-weight: var(--shiki-default-font-weight);text-decoration: var(--shiki-default-text-decoration);}html .dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}html.dark .shiki span {color: var(--shiki-dark);background: var(--shiki-dark-bg);font-style: var(--shiki-dark-font-style);font-weight: var(--shiki-dark-font-weight);text-decoration: var(--shiki-dark-text-decoration);}",{"items":2570,"total":2746},[2571,2596,2610,2625,2639,2656,2672,2686,2696,2707,2717,2733],{"slug":2572,"name":2572,"fn":2573,"description":2574,"org":2575,"tags":2576,"stars":2593,"repoUrl":2594,"updatedAt":2595},"xcodebuildmcp","build and test Apple apps with XcodeBuildMCP","Official skill for XcodeBuildMCP. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2577,2580,2583,2586,2587,2590],{"name":2578,"slug":2579,"type":16},"Debugging","debugging",{"name":2581,"slug":2582,"type":16},"iOS","ios",{"name":2584,"slug":2585,"type":16},"macOS","macos",{"name":9,"slug":8,"type":16},{"name":2588,"slug":2589,"type":16},"Testing","testing",{"name":2591,"slug":2592,"type":16},"Xcode","xcode",6176,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002FXcodeBuildMCP","2026-04-06T18:13:34.8719",{"slug":2597,"name":2597,"fn":2598,"description":2599,"org":2600,"tags":2601,"stars":2593,"repoUrl":2594,"updatedAt":2609},"xcodebuildmcp-cli","build and test Apple apps via CLI","Official skill for the XcodeBuildMCP CLI. Use when doing iOS\u002FmacOS\u002FwatchOS\u002FtvOS\u002FvisionOS work (build, test, run, debug, log, UI automation).",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2602,2605,2606,2607,2608],{"name":2603,"slug":2604,"type":16},"CLI","cli",{"name":2581,"slug":2582,"type":16},{"name":2584,"slug":2585,"type":16},{"name":2588,"slug":2589,"type":16},{"name":2591,"slug":2592,"type":16},"2026-04-06T18:13:36.13414",{"slug":2611,"name":2611,"fn":2612,"description":2613,"org":2614,"tags":2615,"stars":2622,"repoUrl":2623,"updatedAt":2624},"agents-md","maintain project instruction files","Creates and maintains concise AGENTS.md and CLAUDE.md project instruction files. Use when asked to create AGENTS.md, update AGENTS.md, maintain agent docs, set up CLAUDE.md, document repository agent conventions, or keep coding-agent instructions minimal and reference-backed.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2616,2619],{"name":2617,"slug":2618,"type":16},"Documentation","documentation",{"name":2620,"slug":2621,"type":16},"Engineering","engineering",861,"https:\u002F\u002Fgithub.com\u002Fgetsentry\u002Fskills","2026-05-15T06:16:29.695991",{"slug":2626,"name":2626,"fn":2627,"description":2628,"org":2629,"tags":2630,"stars":2622,"repoUrl":2623,"updatedAt":2638},"blog-writing-guide","write and review engineering blog posts","Write, review, and improve blog posts for the Sentry engineering blog following Sentry's specific writing standards, voice, and quality bar. Use this skill whenever someone asks to write a blog post, draft a technical article, review blog content, improve a draft, write a product announcement, create an engineering deep-dive, or produce any written content destined for the Sentry blog or developer audience. Also trigger when the user mentions \"blog post,\" \"blog draft,\" \"write-up,\" \"announcement post,\" \"engineering post,\" \"deep dive,\" \"postmortem,\" or asks for help with technical writing for Sentry. Even if the user just says \"help me write about [feature\u002Ftopic]\" — if it sounds like it could become a Sentry blog post, use this skill.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2631,2634,2635],{"name":2632,"slug":2633,"type":16},"Communications","communications",{"name":9,"slug":8,"type":16},{"name":2636,"slug":2637,"type":16},"Technical Writing","technical-writing","2026-05-15T06:16:33.38217",{"slug":2640,"name":2640,"fn":2641,"description":2642,"org":2643,"tags":2644,"stars":2622,"repoUrl":2623,"updatedAt":2655},"brand-guidelines","write copy following Sentry brand guidelines","Write copy following Sentry brand guidelines. Use when writing UI text, error messages, empty states, onboarding flows, 404 pages, documentation, marketing copy, or any user-facing content. Covers both Plain Speech (default) and Sentry Voice tones.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2645,2648,2651,2652],{"name":2646,"slug":2647,"type":16},"Branding","branding",{"name":2649,"slug":2650,"type":16},"Content Creation","content-creation",{"name":9,"slug":8,"type":16},{"name":2653,"slug":2654,"type":16},"UX Copy","ux-copy","2026-05-15T06:16:22.395707",{"slug":2657,"name":2657,"fn":2658,"description":2659,"org":2660,"tags":2661,"stars":2622,"repoUrl":2623,"updatedAt":2671},"claude-settings-audit","generate Claude Code settings permissions","Analyze a repository to generate recommended Claude Code settings.json permissions. Use when setting up a new project, auditing existing settings, or determining which read-only bash commands to allow. Detects tech stack, build tools, and monorepo structure.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2662,2665,2668],{"name":2663,"slug":2664,"type":16},"Claude Code","claude-code",{"name":2666,"slug":2667,"type":16},"Configuration","configuration",{"name":2669,"slug":2670,"type":16},"Security","security","2026-05-15T06:16:44.335977",{"slug":2673,"name":2673,"fn":2674,"description":2675,"org":2676,"tags":2677,"stars":2622,"repoUrl":2623,"updatedAt":2685},"code-review","perform code reviews for Sentry projects","Perform code reviews following Sentry engineering practices. Use when reviewing pull requests, examining code changes, or providing feedback on code quality. Covers security, performance, testing, and design review.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2678,2680,2681,2684],{"name":2679,"slug":2673,"type":16},"Code Review",{"name":2620,"slug":2621,"type":16},{"name":2682,"slug":2683,"type":16},"Performance","performance",{"name":2669,"slug":2670,"type":16},"2026-05-15T06:16:35.824864",{"slug":2687,"name":2687,"fn":2688,"description":2689,"org":2690,"tags":2691,"stars":2622,"repoUrl":2623,"updatedAt":2695},"code-simplifier","simplify and refine source code","Simplifies and refines code for clarity, consistency, and maintainability while preserving all functionality. Use when asked to \"simplify code\", \"clean up code\", \"refactor for clarity\", \"improve readability\", or review recently modified code for elegance. Focuses on project-specific best practices.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2692],{"name":2693,"slug":2694,"type":16},"Code Analysis","code-analysis","2026-05-15T06:16:32.127981",{"slug":2697,"name":2697,"fn":2698,"description":2699,"org":2700,"tags":2701,"stars":2622,"repoUrl":2623,"updatedAt":2706},"commit","create commits with Sentry conventions","Use for every request to commit changes or draft a commit message. Creates Sentry-style conventional commits with issue references.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2702,2705],{"name":2703,"slug":2704,"type":16},"Git","git",{"name":9,"slug":8,"type":16},"2026-07-18T05:15:10.723937",{"slug":2708,"name":2708,"fn":2709,"description":2710,"org":2711,"tags":2712,"stars":2622,"repoUrl":2623,"updatedAt":2716},"create-branch","create git branches for Sentry workflows","Create a git branch following Sentry naming conventions. Use when asked to \"create a branch\", \"new branch\", \"start a branch\", \"make a branch\", \"switch to a new branch\", or when starting new work on the default branch.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2713,2714,2715],{"name":2620,"slug":2621,"type":16},{"name":2703,"slug":2704,"type":16},{"name":9,"slug":8,"type":16},"2026-05-15T06:16:39.458431",{"slug":2718,"name":2718,"fn":2719,"description":2720,"org":2721,"tags":2722,"stars":2622,"repoUrl":2623,"updatedAt":2732},"django-access-review","review Django access control and IDOR","Django access control and IDOR security review. Use when reviewing Django views, DRF viewsets, ORM queries, or any Python\u002FDjango code handling user authorization. Trigger keywords: \"IDOR\", \"access control\", \"authorization\", \"Django permissions\", \"object permissions\", \"tenant isolation\", \"broken access\".",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2723,2726,2727,2730,2731],{"name":2724,"slug":2725,"type":16},"Access Control","access-control",{"name":2693,"slug":2694,"type":16},{"name":2728,"slug":2729,"type":16},"Django","django",{"name":612,"slug":609,"type":16},{"name":2669,"slug":2670,"type":16},"2026-05-15T06:16:43.098698",{"slug":2734,"name":2734,"fn":2735,"description":2736,"org":2737,"tags":2738,"stars":2622,"repoUrl":2623,"updatedAt":2745},"django-perf-review","review and optimize Django performance","Django performance code review. Use when asked to \"review Django performance\", \"find N+1 queries\", \"optimize Django\", \"check queryset performance\", \"database performance\", \"Django ORM issues\", or audit Django code for performance problems.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2739,2740,2743,2744],{"name":2679,"slug":2673,"type":16},{"name":2741,"slug":2742,"type":16},"Database","database",{"name":2728,"slug":2729,"type":16},{"name":2682,"slug":2683,"type":16},"2026-05-15T06:16:24.832813",88,{"items":2748,"total":301},[2749,2769,2784],{"slug":2750,"name":2750,"fn":2751,"description":2752,"org":2753,"tags":2754,"stars":27,"repoUrl":28,"updatedAt":2768},"sentry-create-alert","create and configure Sentry alerts","Create Sentry alerts using the workflow engine API. Use when asked to create alerts, set up notifications, configure issue priority alerts, or build workflow automations. Supports email, Slack, PagerDuty, Discord, and other notification actions.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2755,2758,2761,2764,2765],{"name":2756,"slug":2757,"type":16},"Alerting","alerting",{"name":2759,"slug":2760,"type":16},"Automation","automation",{"name":2762,"slug":2763,"type":16},"Email","email",{"name":9,"slug":8,"type":16},{"name":2766,"slug":2767,"type":16},"Slack","slack","2026-07-18T05:47:21.895881",{"slug":2770,"name":2770,"fn":2771,"description":2772,"org":2773,"tags":2774,"stars":27,"repoUrl":28,"updatedAt":2783},"sentry-otel-exporter-setup","configure OpenTelemetry Collector with Sentry","Configure the OpenTelemetry Collector with Sentry Exporter for multi-project routing and automatic project creation. Use when setting up OTel with Sentry, configuring collector pipelines for traces and logs, or routing telemetry from multiple services to Sentry projects.",{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2775,2778,2779,2782],{"name":2776,"slug":2777,"type":16},"Monitoring","monitoring",{"name":14,"slug":15,"type":16},{"name":2780,"slug":2781,"type":16},"OpenTelemetry","opentelemetry",{"name":9,"slug":8,"type":16},"2026-07-18T05:47:19.56718",{"slug":4,"name":4,"fn":5,"description":6,"org":2785,"tags":2786,"stars":27,"repoUrl":28,"updatedAt":29},{"slug":8,"name":9,"logoUrl":10,"githubOrg":11},[2787,2788,2789,2790,2791],{"name":21,"slug":22,"type":16},{"name":24,"slug":25,"type":16},{"name":18,"slug":19,"type":16},{"name":14,"slug":15,"type":16},{"name":9,"slug":8,"type":16}]