This module provides automatic instrumentation for the OpenAI Node.js SDK which may be used in conjunction with @opentelemetry/sdk-trace-node.
npm install --save @arizeai/openinference-instrumentation-openai
To load the OpenAI instrumentation, specify it in the registerInstrumentations call along with any additional instrumentation you wish to enable.
const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node"); const { OpenAIInstrumentation, } = require("@arizeai/openinference-instrumentation-openai"); const { registerInstrumentations } = require("@opentelemetry/instrumentation"); const provider = new NodeTracerProvider(); provider.register(); registerInstrumentations({ instrumentations: [new OpenAIInstrumentation()], });
To run an example, run the following commands:
cd js/packages/openinference-instrumentation-openai pnpm install pnpm -r build npx -y tsx examples/chat.ts # or responses.ts, embed.ts, etc
For more information on OpenTelemetry Node.js SDK, see the OpenTelemetry Node.js SDK documentation.
Using a Custom Tracer ProviderYou can specify a custom tracer provider when creating the OpenAI instrumentation. This is useful when you want to use a non-global tracer provider or have more control over the tracing configuration.
import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node"; import { Resource } from "@opentelemetry/resources"; import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions"; import { OpenAIInstrumentation } from "@arizeai/openinference-instrumentation-openai"; import { registerInstrumentations } from "@opentelemetry/instrumentation"; // Create a custom tracer provider const customTracerProvider = new NodeTracerProvider({ resource: new Resource({ [SEMRESATTRS_PROJECT_NAME]: "my-openai-project", }), }); // Pass the custom tracer provider to the instrumentation const openaiInstrumentation = new OpenAIInstrumentation({ tracerProvider: customTracerProvider, }); // Register the instrumentation with the custom tracer provider registerInstrumentations({ instrumentations: [openaiInstrumentation], tracerProvider: customTracerProvider, });
Alternatively, you can set the tracer provider after creating the instrumentation:
const openaiInstrumentation = new OpenAIInstrumentation(); openaiInstrumentation.setTracerProvider(customTracerProvider);
@arizeai/openinference-instrumentation-openai
is compatible with the following versions of the openai
package:
RetroSearch is an open source project built by @garambo | Open a GitHub Issue
Search and Browse the WWW like it's 1997 | Search results from DuckDuckGo
HTML:
3.2
| Encoding:
UTF-8
| Version:
0.7.4