diff --git a/docs/platforms/javascript/common/configuration/integrations/google-genai.mdx b/docs/platforms/javascript/common/configuration/integrations/google-genai.mdx new file mode 100644 index 00000000000000..59f083be996a78 --- /dev/null +++ b/docs/platforms/javascript/common/configuration/integrations/google-genai.mdx @@ -0,0 +1,140 @@ +--- +title: Google Gen AI +description: "Adds instrumentation for Google Gen AI SDK." +supported: + - javascript.node + - javascript.aws-lambda + - javascript.azure-functions + - javascript.connect + - javascript.express + - javascript.fastify + - javascript.gcp-functions + - javascript.hapi + - javascript.hono + - javascript.koa + - javascript.nestjs + - javascript.electron + - javascript.nextjs + - javascript.nuxt + - javascript.solidstart + - javascript.sveltekit + - javascript.react-router + - javascript.remix + - javascript.astro + - javascript.bun + - javascript.tanstackstart-react + - javascript.cloudflare +--- + + + +This integration works in the Node.js, Cloudflare Workers, and Vercel Edge Functions runtimes. It requires SDK version `10.14.0` or higher. + + + +_Import name: `Sentry.googleGenAIIntegration`_ + +The `googleGenAIIntegration` adds instrumentation for the `@google/genai` SDK to capture spans by automatically wrapping Google Gen AI client calls and recording LLM interactions with configurable input/output recording. + + +It is enabled by default and will automatically capture spans for Google Gen AI SDK method calls. You can opt-in to capture inputs and outputs by setting `recordInputs` and `recordOutputs` in the integration config: + +```javascript +Sentry.init({ + dsn: "____PUBLIC_DSN____", + tracesSampleRate: 1.0, + integrations: [ + Sentry.googleGenAIIntegration({ + recordInputs: true, + recordOutputs: true, + }), + ], +}); +``` + + + + +For Cloudflare Workers, you need to manually instrument the Google Gen AI client using the `instrumentGoogleGenAIClient` helper: + +```javascript +import * as Sentry from "@sentry/cloudflare"; +import { GoogleGenAI } from "@google/genai"; + +const genAI = new GoogleGenAI(process.env.API_KEY); +const client = Sentry.instrumentGoogleGenAIClient(genAI, { + recordInputs: true, + recordOutputs: true, +}); + +// Use the wrapped client instead of the original genAI instance +const result = await client.models.generateContent("Hello!"); +``` + + + + + +This integration is automatically instrumented in the Node.js runtime. For Next.js applications using the Edge runtime, you need to manually instrument the Google Gen AI client: + +```javascript +import * as Sentry from "@sentry/nextjs"; +import { GoogleGenAI } from "@google/genai"; + +const genAI = new GoogleGenAI(process.env.API_KEY); +const client = Sentry.instrumentGoogleGenAIClient(genAI, { + recordInputs: true, + recordOutputs: true, +}); + +// Use the wrapped client instead of the original genAI instance +const result = await client.models.generateContent("Hello!"); +``` + + + +## Options + +### `recordInputs` + +_Type: `boolean`_ + +Records inputs to Google Gen AI SDK method calls (such as prompts and messages). + +Defaults to `true` if `sendDefaultPii` is `true`. + +```javascript +Sentry.init({ + integrations: [Sentry.googleGenAIIntegration({ recordInputs: true })], +}); +``` + +### `recordOutputs` + +_Type: `boolean`_ + +Records outputs from Google Gen AI SDK method calls (such as generated text and responses). + +Defaults to `true` if `sendDefaultPii` is `true`. + +```javascript +Sentry.init({ + integrations: [Sentry.googleGenAIIntegration({ recordOutputs: true })], +}); +``` + +## Configuration + +By default this integration adds tracing support to Google Gen AI SDK method calls including: + +- `models.generateContent()` - Make an API request to generate content with a given model. +- `models.generateContentStream()` - Make an API request to generate content with a given model and yields the response in chunks. +- `chats.create()` - Create chat sessions. +- `sendMessage()` - Send messages in chat sessions. +- `sendMessageStream()` - Stream messages in chat sessions. + +The integration will automatically detect streaming vs non-streaming requests and handle them appropriately. + +## Supported Versions + +- `@google/genai`: `>=0.10.0 <2` diff --git a/docs/platforms/javascript/common/tracing/instrumentation/ai-agents-module.mdx b/docs/platforms/javascript/common/tracing/instrumentation/ai-agents-module.mdx index 291215629ba145..ce2fff20dc77a1 100644 --- a/docs/platforms/javascript/common/tracing/instrumentation/ai-agents-module.mdx +++ b/docs/platforms/javascript/common/tracing/instrumentation/ai-agents-module.mdx @@ -39,6 +39,7 @@ The JavaScript SDK supports automatic instrumentation for some AI libraries. We - OpenAI - Anthropic +- Google Gen AI SDK ## Manual Instrumentation diff --git a/platform-includes/configuration/integrations/javascript.astro.mdx b/platform-includes/configuration/integrations/javascript.astro.mdx index d55b3747144053..7c6a0f5ff97911 100644 --- a/platform-includes/configuration/integrations/javascript.astro.mdx +++ b/platform-includes/configuration/integrations/javascript.astro.mdx @@ -83,4 +83,5 @@ Depending on whether an integration enhances the functionality of a particular r | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx index a46d2aa98507af..bbb14eaa5525a5 100644 --- a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx +++ b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx @@ -20,6 +20,7 @@ | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`amqplibIntegration`](./amqplib) | | | ✓ | | | [`anrIntegration`](./anr) | | ✓ | | | | [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.bun.mdx b/platform-includes/configuration/integrations/javascript.bun.mdx index 4cc44aae801299..2781ceb37e95f1 100644 --- a/platform-includes/configuration/integrations/javascript.bun.mdx +++ b/platform-includes/configuration/integrations/javascript.bun.mdx @@ -32,6 +32,7 @@ | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | | [`dataloaderIntegration`](./dataloader) | | | ✓ | | | [`extraErrorDataIntegration`](./extraerrordata) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.connect.mdx b/platform-includes/configuration/integrations/javascript.connect.mdx index 7635c5bffb903e..fc558e9ea6fc82 100644 --- a/platform-includes/configuration/integrations/javascript.connect.mdx +++ b/platform-includes/configuration/integrations/javascript.connect.mdx @@ -33,6 +33,7 @@ | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`anrIntegration`](./anr) | | ✓ | | | | [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | | [`eventLoopBlockIntegration`](./event-loop-block) | | ✓ | | | diff --git a/platform-includes/configuration/integrations/javascript.fastify.mdx b/platform-includes/configuration/integrations/javascript.fastify.mdx index 3a65fd17e7a000..7c9728ad92d5a8 100644 --- a/platform-includes/configuration/integrations/javascript.fastify.mdx +++ b/platform-includes/configuration/integrations/javascript.fastify.mdx @@ -33,6 +33,7 @@ | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`anrIntegration`](./anr) | | ✓ | | | | [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | | [`eventLoopBlockIntegration`](./event-loop-block) | | ✓ | | | diff --git a/platform-includes/configuration/integrations/javascript.gcp-functions.mdx b/platform-includes/configuration/integrations/javascript.gcp-functions.mdx index 52445b70612252..22c4d28e00f612 100644 --- a/platform-includes/configuration/integrations/javascript.gcp-functions.mdx +++ b/platform-includes/configuration/integrations/javascript.gcp-functions.mdx @@ -20,6 +20,7 @@ | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`amqplibIntegration`](./amqplib) | | | ✓ | | | [`anrIntegration`](./anr) | | ✓ | | | | [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.hapi.mdx b/platform-includes/configuration/integrations/javascript.hapi.mdx index 5b6a986fdad7d0..f4bbde8c64242f 100644 --- a/platform-includes/configuration/integrations/javascript.hapi.mdx +++ b/platform-includes/configuration/integrations/javascript.hapi.mdx @@ -33,6 +33,7 @@ | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`anrIntegration`](./anr) | | ✓ | | | | [`captureConsoleIntegration`](./captureconsole) | | | | ✓ | | [`eventLoopBlockIntegration`](./event-loop-block) | | ✓ | | | diff --git a/platform-includes/configuration/integrations/javascript.nestjs.mdx b/platform-includes/configuration/integrations/javascript.nestjs.mdx index 346f0d88a0041b..dc7cef49380edd 100644 --- a/platform-includes/configuration/integrations/javascript.nestjs.mdx +++ b/platform-includes/configuration/integrations/javascript.nestjs.mdx @@ -46,4 +46,5 @@ | [`unleashIntegration`](./unleash) | | | | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.nextjs.mdx b/platform-includes/configuration/integrations/javascript.nextjs.mdx index 8b55806a156b32..618bb63034f52e 100644 --- a/platform-includes/configuration/integrations/javascript.nextjs.mdx +++ b/platform-includes/configuration/integrations/javascript.nextjs.mdx @@ -89,6 +89,7 @@ Depending on whether an integration enhances the functionality of a particular r | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ | ### Edge Integrations diff --git a/platform-includes/configuration/integrations/javascript.node.mdx b/platform-includes/configuration/integrations/javascript.node.mdx index d9a2e9ac31fbc2..f61cfaabc1889a 100644 --- a/platform-includes/configuration/integrations/javascript.node.mdx +++ b/platform-includes/configuration/integrations/javascript.node.mdx @@ -44,4 +44,5 @@ | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.nuxt.mdx b/platform-includes/configuration/integrations/javascript.nuxt.mdx index 7ad18d37d7ad04..f782961390645f 100644 --- a/platform-includes/configuration/integrations/javascript.nuxt.mdx +++ b/platform-includes/configuration/integrations/javascript.nuxt.mdx @@ -82,4 +82,5 @@ Depending on whether an integration enhances the functionality of a particular r | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.remix.mdx b/platform-includes/configuration/integrations/javascript.remix.mdx index f16aa85bd1fb3d..87a6b5a839beed 100644 --- a/platform-includes/configuration/integrations/javascript.remix.mdx +++ b/platform-includes/configuration/integrations/javascript.remix.mdx @@ -82,4 +82,5 @@ Depending on whether an integration enhances the functionality of a particular r | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.solidstart.mdx b/platform-includes/configuration/integrations/javascript.solidstart.mdx index 9f246be8366215..cf959ef3217a16 100644 --- a/platform-includes/configuration/integrations/javascript.solidstart.mdx +++ b/platform-includes/configuration/integrations/javascript.solidstart.mdx @@ -82,4 +82,5 @@ Depending on whether an integration enhances the functionality of a particular r | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ | diff --git a/platform-includes/configuration/integrations/javascript.sveltekit.mdx b/platform-includes/configuration/integrations/javascript.sveltekit.mdx index 6c495a0751001b..2868b657a625ff 100644 --- a/platform-includes/configuration/integrations/javascript.sveltekit.mdx +++ b/platform-includes/configuration/integrations/javascript.sveltekit.mdx @@ -82,4 +82,5 @@ Depending on whether an integration enhances the functionality of a particular r | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`anthropicAIIntegration`](./anthropic) | ✓ | ✓ | ✓ | | +| [`googleGenAIIntegration`](./google-genai) | ✓ | ✓ | ✓ | | | [`zodErrorsIntegration`](./zodErrors) | | | | ✓ |