From b87fd328ea77bd489d0c8a7536b8ebacb4b3d871 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Thu, 31 Jul 2025 13:45:26 +0200 Subject: [PATCH 1/4] feat: Document OpenAI integration --- .../configuration/integrations/openai.mdx | 107 ++++++++++++++++++ .../integrations/javascript.astro.mdx | 1 + .../integrations/javascript.aws-lambda.mdx | 1 + .../integrations/javascript.bun.mdx | 1 + .../integrations/javascript.connect.mdx | 1 + .../integrations/javascript.fastify.mdx | 1 + .../integrations/javascript.gcp-functions.mdx | 1 + .../integrations/javascript.hapi.mdx | 1 + .../integrations/javascript.nestjs.mdx | 1 + .../integrations/javascript.nextjs.mdx | 1 + .../integrations/javascript.node.mdx | 1 + .../integrations/javascript.nuxt.mdx | 1 + .../integrations/javascript.remix.mdx | 1 + .../integrations/javascript.solidstart.mdx | 1 + .../integrations/javascript.sveltekit.mdx | 1 + 15 files changed, 121 insertions(+) create mode 100644 docs/platforms/javascript/common/configuration/integrations/openai.mdx diff --git a/docs/platforms/javascript/common/configuration/integrations/openai.mdx b/docs/platforms/javascript/common/configuration/integrations/openai.mdx new file mode 100644 index 00000000000000..be7cfee2682220 --- /dev/null +++ b/docs/platforms/javascript/common/configuration/integrations/openai.mdx @@ -0,0 +1,107 @@ +--- +title: OpenAI +description: "Adds instrumentation for OpenAI API." +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 +--- + + + +This integration only works in the Node.js runtime. Requires SDK version `9.42.0` or higher. + + + +_Import name: `Sentry.openAIIntegration`_ + +The `openAIIntegration` adds instrumentation for the `openai` API to capture spans by automatically wrapping OpenAI client calls and recording LLM interactions with configurable input/output recording. + +It is enabled by default and will automatically capture spans for all OpenAI API 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.openAIIntegration({ + recordInputs: true, + recordOutputs: true, + }), + ], +}); +``` + + + +This integration only works in the Node.js runtime, not in the Edge runtime. For Next.js applications using the Edge runtime, this integration will not be available. + + + + +## Options + +### `recordInputs` + +Requires SDK version `9.42.0` or higher. + +_Type: `boolean`_ + +Records inputs to OpenAI API method calls (such as prompts and messages). + +Defaults to `true` if `sendDefaultPii` is `true`. + +```javascript +Sentry.init({ + integrations: [Sentry.openAIIntegration({ recordInputs: true })], +}); +``` + +### `recordOutputs` + +Requires SDK version `9.42.0` or higher. + +_Type: `boolean`_ + +Records outputs from OpenAI API method calls (such as generated text and responses). + +Defaults to `true` if `sendDefaultPii` is `true`. + +```javascript +Sentry.init({ + integrations: [Sentry.openAIIntegration({ recordOutputs: true })], +}); +``` + + + +## Configuration + +By default this integration adds tracing support to OpenAI API method calls including: + +- `chat.completions.create()` - Chat completion requests +- `responses.create()` - Response API requests + +The integration will automatically detect streaming vs non-streaming requests and handle them appropriately. + +## Supported Versions + +- `openai`: `>=4.0.0 <6` diff --git a/platform-includes/configuration/integrations/javascript.astro.mdx b/platform-includes/configuration/integrations/javascript.astro.mdx index 82a79000747cb9..6714b5150fe306 100644 --- a/platform-includes/configuration/integrations/javascript.astro.mdx +++ b/platform-includes/configuration/integrations/javascript.astro.mdx @@ -81,3 +81,4 @@ Depending on whether an integration enhances the functionality of a particular r | [`localVariablesIntegration`](./localvariables) | | ✓ | | | | [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | diff --git a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx index da20b0d8372bb7..fcb6851d4025a9 100644 --- a/platform-includes/configuration/integrations/javascript.aws-lambda.mdx +++ b/platform-includes/configuration/integrations/javascript.aws-lambda.mdx @@ -18,6 +18,7 @@ | [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | | [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`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 da3c317d233cf1..ad44371c98bac1 100644 --- a/platform-includes/configuration/integrations/javascript.bun.mdx +++ b/platform-includes/configuration/integrations/javascript.bun.mdx @@ -30,6 +30,7 @@ | [`tediousIntegration`](./tedious) | ✓ | | ✓ | | | [`prismaIntegration`](./prisma) | ✓ | | ✓ | | | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`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 c5381631500bd4..e767b5dcad9bd5 100644 --- a/platform-includes/configuration/integrations/javascript.connect.mdx +++ b/platform-includes/configuration/integrations/javascript.connect.mdx @@ -31,6 +31,7 @@ | [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | | [`rewriteFramesIntegration`](./rewriteframes) | ✓ | ✓ | | | | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`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 3e50202ca7c6c3..37655ce7730836 100644 --- a/platform-includes/configuration/integrations/javascript.fastify.mdx +++ b/platform-includes/configuration/integrations/javascript.fastify.mdx @@ -31,6 +31,7 @@ | [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | | [`prismaIntegration`](./prisma) | ✓ | | ✓ | | | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`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 93e081114ab14f..8c47081af68860 100644 --- a/platform-includes/configuration/integrations/javascript.gcp-functions.mdx +++ b/platform-includes/configuration/integrations/javascript.gcp-functions.mdx @@ -18,6 +18,7 @@ | [`onUnhandledRejectionIntegration`](./unhandledrejection) | ✓ | ✓ | | | | [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`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 eeb97654ea56da..fdb2607e09a414 100644 --- a/platform-includes/configuration/integrations/javascript.hapi.mdx +++ b/platform-includes/configuration/integrations/javascript.hapi.mdx @@ -31,6 +31,7 @@ | [`childProcessIntegration`](./childProcess) | ✓ | | | ✓ | | [`prismaIntegration`](./prisma) | ✓ | | ✓ | | | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | | [`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 5709781760c404..9e85b0fab02ac5 100644 --- a/platform-includes/configuration/integrations/javascript.nestjs.mdx +++ b/platform-includes/configuration/integrations/javascript.nestjs.mdx @@ -44,3 +44,4 @@ | [`supabaseIntegration`](./supabase) | | ✓ | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`unleashIntegration`](./unleash) | | | | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | diff --git a/platform-includes/configuration/integrations/javascript.nextjs.mdx b/platform-includes/configuration/integrations/javascript.nextjs.mdx index debf2424b04b28..de0210f691ca7d 100644 --- a/platform-includes/configuration/integrations/javascript.nextjs.mdx +++ b/platform-includes/configuration/integrations/javascript.nextjs.mdx @@ -87,6 +87,7 @@ Depending on whether an integration enhances the functionality of a particular r | [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | | [`vercelAiIntegration`](./vercelai) | ✓ | | ✓ | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | ### Edge Integrations diff --git a/platform-includes/configuration/integrations/javascript.node.mdx b/platform-includes/configuration/integrations/javascript.node.mdx index 9fcc6fb42926de..d9be6d22d671cb 100644 --- a/platform-includes/configuration/integrations/javascript.node.mdx +++ b/platform-includes/configuration/integrations/javascript.node.mdx @@ -42,3 +42,4 @@ | [`supabaseIntegration`](./supabase) | | ✓ | ✓ | | | [`tediousIntegration`](./tedious) | ✓ | | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | diff --git a/platform-includes/configuration/integrations/javascript.nuxt.mdx b/platform-includes/configuration/integrations/javascript.nuxt.mdx index fe3227f1a55afb..4b25f09ab5b0ad 100644 --- a/platform-includes/configuration/integrations/javascript.nuxt.mdx +++ b/platform-includes/configuration/integrations/javascript.nuxt.mdx @@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r | [`localVariablesIntegration`](./localvariables) | | ✓ | | | | [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | diff --git a/platform-includes/configuration/integrations/javascript.remix.mdx b/platform-includes/configuration/integrations/javascript.remix.mdx index 243acaaca43aff..8849cca15c3a0a 100644 --- a/platform-includes/configuration/integrations/javascript.remix.mdx +++ b/platform-includes/configuration/integrations/javascript.remix.mdx @@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r | [`localVariablesIntegration`](./localvariables) | | ✓ | | | | [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | diff --git a/platform-includes/configuration/integrations/javascript.solidstart.mdx b/platform-includes/configuration/integrations/javascript.solidstart.mdx index 0bbe29a5660285..f58c659fd8997a 100644 --- a/platform-includes/configuration/integrations/javascript.solidstart.mdx +++ b/platform-includes/configuration/integrations/javascript.solidstart.mdx @@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r | [`localVariablesIntegration`](./localvariables) | | ✓ | | | | [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | diff --git a/platform-includes/configuration/integrations/javascript.sveltekit.mdx b/platform-includes/configuration/integrations/javascript.sveltekit.mdx index 7769fc4adcb71d..82da16a61135f3 100644 --- a/platform-includes/configuration/integrations/javascript.sveltekit.mdx +++ b/platform-includes/configuration/integrations/javascript.sveltekit.mdx @@ -80,3 +80,4 @@ Depending on whether an integration enhances the functionality of a particular r | [`nodeProfilingIntegration`](./nodeprofiling) | | | ✓ | | | [`supabaseIntegration`](./supabase) | | ✓ | ✓ | | | [`trpcMiddleware`](./trpc) | | ✓ | ✓ | ✓ | +| [`openAIIntegration`](./openai) | ✓ | | ✓ | | From 5c2079578ef781504c2a8e5a132c0d515945f90e Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Fri, 1 Aug 2025 09:48:50 +0200 Subject: [PATCH 2/4] fix version to stable --- .../javascript/common/configuration/integrations/openai.mdx | 6 +++--- 1 file changed, 3 insertions(+), 3 deletions(-) diff --git a/docs/platforms/javascript/common/configuration/integrations/openai.mdx b/docs/platforms/javascript/common/configuration/integrations/openai.mdx index be7cfee2682220..2dbf0b455a7d20 100644 --- a/docs/platforms/javascript/common/configuration/integrations/openai.mdx +++ b/docs/platforms/javascript/common/configuration/integrations/openai.mdx @@ -27,7 +27,7 @@ supported: -This integration only works in the Node.js runtime. Requires SDK version `9.42.0` or higher. +This integration only works in the Node.js runtime. Requires SDK version `9.44.0` or higher. @@ -61,7 +61,7 @@ This integration only works in the Node.js runtime, not in the Edge runtime. For ### `recordInputs` -Requires SDK version `9.42.0` or higher. +Requires SDK version `9.44.0` or higher. _Type: `boolean`_ @@ -77,7 +77,7 @@ Sentry.init({ ### `recordOutputs` -Requires SDK version `9.42.0` or higher. +Requires SDK version `9.44.0` or higher. _Type: `boolean`_ From 2a0435be95c44d168d831c81513bb59f76b3cc66 Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Thu, 7 Aug 2025 10:30:10 +0200 Subject: [PATCH 3/4] update sdk version and include cloudflare and vercel edge --- .../common/configuration/integrations/openai.mdx | 15 +++------------ 1 file changed, 3 insertions(+), 12 deletions(-) diff --git a/docs/platforms/javascript/common/configuration/integrations/openai.mdx b/docs/platforms/javascript/common/configuration/integrations/openai.mdx index 2dbf0b455a7d20..0a14899f024b3b 100644 --- a/docs/platforms/javascript/common/configuration/integrations/openai.mdx +++ b/docs/platforms/javascript/common/configuration/integrations/openai.mdx @@ -23,11 +23,12 @@ supported: - javascript.astro - javascript.bun - javascript.tanstackstart-react + - javascript.cloudflare --- -This integration only works in the Node.js runtime. Requires SDK version `9.44.0` or higher. +This integration works in the Node.js, Cloudflare Workers, Vercel Edge Functions runtimes. It requires SDK version `10.2.0` or higher. @@ -35,7 +36,7 @@ _Import name: `Sentry.openAIIntegration`_ The `openAIIntegration` adds instrumentation for the `openai` API to capture spans by automatically wrapping OpenAI client calls and recording LLM interactions with configurable input/output recording. -It is enabled by default and will automatically capture spans for all OpenAI API method calls. You can opt-in to capture inputs and outputs by setting `recordInputs` and `recordOutputs` in the integration config: +It is enabled by default and will automatically capture spans for OpenAI API method calls. You can opt-in to capture inputs and outputs by setting `recordInputs` and `recordOutputs` in the integration config: ```javascript Sentry.init({ @@ -50,19 +51,11 @@ Sentry.init({ }); ``` - - -This integration only works in the Node.js runtime, not in the Edge runtime. For Next.js applications using the Edge runtime, this integration will not be available. - - - ## Options ### `recordInputs` -Requires SDK version `9.44.0` or higher. - _Type: `boolean`_ Records inputs to OpenAI API method calls (such as prompts and messages). @@ -77,8 +70,6 @@ Sentry.init({ ### `recordOutputs` -Requires SDK version `9.44.0` or higher. - _Type: `boolean`_ Records outputs from OpenAI API method calls (such as generated text and responses). From f29693016a533a65243adf2ef0552866d4648fcb Mon Sep 17 00:00:00 2001 From: RulaKhaled Date: Thu, 7 Aug 2025 10:44:01 +0200 Subject: [PATCH 4/4] update with platform specfic instructions --- .../configuration/integrations/openai.mdx | 51 +++++++++++++++++-- 1 file changed, 48 insertions(+), 3 deletions(-) diff --git a/docs/platforms/javascript/common/configuration/integrations/openai.mdx b/docs/platforms/javascript/common/configuration/integrations/openai.mdx index 0a14899f024b3b..c3d4d2734707b3 100644 --- a/docs/platforms/javascript/common/configuration/integrations/openai.mdx +++ b/docs/platforms/javascript/common/configuration/integrations/openai.mdx @@ -36,6 +36,7 @@ _Import name: `Sentry.openAIIntegration`_ The `openAIIntegration` adds instrumentation for the `openai` API to capture spans by automatically wrapping OpenAI client calls and recording LLM interactions with configurable input/output recording. + It is enabled by default and will automatically capture spans for OpenAI API method calls. You can opt-in to capture inputs and outputs by setting `recordInputs` and `recordOutputs` in the integration config: ```javascript @@ -51,7 +52,53 @@ Sentry.init({ }); ``` - + + + +For Cloudflare Workers, you need to manually instrument the OpenAI client using the `instrumentOpenAiClient` helper: + +```javascript +import * as Sentry from "@sentry/cloudflare"; +import OpenAI from "openai"; + +const openai = new OpenAI(); +const client = Sentry.instrumentOpenAiClient(openai, { + recordInputs: true, + recordOutputs: true, +}); + +// Use the wrapped client instead of the original openai instance +const response = await client.chat.completions.create({ + model: "gpt-4o", + messages: [{ role: "user", content: "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 OpenAI client: + +```javascript +import * as Sentry from "@sentry/nextjs"; +import OpenAI from "openai"; + +const openai = new OpenAI(); +const client = Sentry.instrumentOpenAiClient(openai, { + recordInputs: true, + recordOutputs: true, +}); + +// Use the wrapped client instead of the original openai instance +const response = await client.chat.completions.create({ + model: "gpt-4o", + messages: [{ role: "user", content: "Hello!" }], +}); +``` + + + ## Options ### `recordInputs` @@ -82,8 +129,6 @@ Sentry.init({ }); ``` - - ## Configuration By default this integration adds tracing support to OpenAI API method calls including: