OpenAI

Adds instrumentation for the OpenAI SDK.

Import name: Sentry.instrumentOpenAiClient

The instrumentOpenAiClient helper adds instrumentation for the openai SDK to capture spans by wrapping OpenAI SDK calls and recording LLM interactions with configurable input/output recording. You need to manually wrap your OpenAI client instance with this helper:

Copied
import OpenAI from "openai";

const openai = new OpenAI({
  // Warning: API key will be exposed in browser!
  apiKey: "your-api-key",
});

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!" }],
});

To customize what data is captured (such as inputs and outputs), see the Options in the Configuration section.

The following options control what data is captured from OpenAI SDK calls:

Type: boolean (optional)

Records inputs to OpenAI SDK calls (such as prompts and messages).

Defaults to true if sendDefaultPii is true.

Type: boolean (optional)

Records outputs from OpenAI SDK calls (such as generated text and responses).

Defaults to true if sendDefaultPii is true.

Usage

Using the openAIIntegration integration:

Copied
Sentry.init({
  dsn: "____PUBLIC_DSN____",
  // Tracing must be enabled for agent monitoring to work
  tracesSampleRate: 1.0,
  integrations: [
    Sentry.openAIIntegration({
      // your options here
    }),
  ],
});

Using the instrumentOpenAiClient helper:

Copied
const client = Sentry.instrumentOpenAiClient(openai, {
  // your options here
});

By default, tracing support is added to the following OpenAI SDK calls:

  • chat.completions.create() - Chat completion requests
  • responses.create() - Response SDK requests

Streaming and non-streaming requests are automatically detected and handled appropriately.

  • openai: >=4.0.0 <7
Was this helpful?
Help improve this content
Our documentation is open source and available on GitHub. Your contributions are welcome, whether fixing a typo (drat!) or suggesting an update ("yeah, this would be better").