From ac024c46a7d61f9ae5194880c1a892833d7f30c5 Mon Sep 17 00:00:00 2001 From: satyadevai Date: Tue, 4 Nov 2025 00:07:02 +0530 Subject: [PATCH 1/4] Initial commit for removing deprecated addSpanProcessor --- .../test/trace-config/OITracer.test.ts | 10 +++++----- .../test/custom-provider.test.ts | 10 +++------- .../integration.instrumentation.agent-traces.test.ts | 3 +-- ...ration.instrumentation.agent-without-traces.test.ts | 3 +-- .../test/integration.instrumentation.rag.test.ts | 3 +-- 5 files changed, 11 insertions(+), 18 deletions(-) diff --git a/js/packages/openinference-core/test/trace-config/OITracer.test.ts b/js/packages/openinference-core/test/trace-config/OITracer.test.ts index 90e62ca9b..5ecf8c333 100644 --- a/js/packages/openinference-core/test/trace-config/OITracer.test.ts +++ b/js/packages/openinference-core/test/trace-config/OITracer.test.ts @@ -27,16 +27,16 @@ import { type Mocked, vi, } from "vitest"; -const memoryExporter = new InMemorySpanExporter(); -const tracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(memoryExporter)], -}); -tracerProvider.register(); describe("OITracer", () => { let mockTracer: Mocked; let mockSpan: Mocked; let contextManager: ContextManager; + const memoryExporter = new InMemorySpanExporter(); + const tracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); + tracerProvider.register(); beforeEach(() => { contextManager = new AsyncHooksContextManager().enable(); diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts index d88da3960..d70964979 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts @@ -25,14 +25,10 @@ describe("BedrockAgentInstrumentation with a custom tracer provider", () => { let polly: Polly; describe("BedrockAgentInstrumentation with custom TracerProvider passed in", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); - + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + }); // Instantiate instrumentation with the custom provider const instrumentation = new BedrockAgentInstrumentation({ tracerProvider: customTracerProvider, diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts index 92c8034aa..5ffde90af 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts @@ -37,8 +37,7 @@ describe("BedrockAgentInstrumentation Trace Collector Integration - agent attrib instrumentation = new BedrockAgentInstrumentation(); instrumentation.disable(); memoryExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider(); - provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider = new NodeTracerProvider({spanProcessors: [new SimpleSpanProcessor(memoryExporter)]}); provider.register(); instrumentation.setTracerProvider(provider); // Manually set module exports for testing (following OpenAI pattern) diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts index e469c0cd2..ba19c9959 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts @@ -32,8 +32,7 @@ describe("BedrockAgentInstrumentation Integration - agent attributes and API rec instrumentation = new BedrockAgentInstrumentation(); instrumentation.disable(); memoryExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider(); - provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider = new NodeTracerProvider({spanProcessors: [new SimpleSpanProcessor(memoryExporter)]}); provider.register(); instrumentation.setTracerProvider(provider); // Manually set module exports for testing (following OpenAI pattern) diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts index c9f7e2cc1..aae7ff229 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts @@ -39,8 +39,7 @@ describe("BedrockAgent RAG Instrumentation - attributes and API recording", () = instrumentation = new BedrockAgentInstrumentation(); instrumentation.disable(); memoryExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider(); - provider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); + provider = new NodeTracerProvider({spanProcessors: [new SimpleSpanProcessor(memoryExporter)]}); provider.register(); instrumentation.setTracerProvider(provider); // Manually set module exports for testing (following OpenAI pattern) From 01534e022023935c3bb38066b9a63a445fc3d2b5 Mon Sep 17 00:00:00 2001 From: satyadevai Date: Tue, 4 Nov 2025 23:00:36 +0530 Subject: [PATCH 2/4] Removing deprecated addSpanProcessor from packages --- .../test/instrumentation.test.ts | 6 +-- .../test/custom-provider.test.ts | 21 ++++------ .../validate-converse-comprehensive.ts | 13 +++--- .../scripts/validate-converse-stream.ts | 16 ++++--- .../scripts/validate-invoke-model.ts | 14 +++---- .../test/instrumentation.test.ts | 37 +++++++--------- .../examples/instrumentation.ts | 17 ++++---- .../test/langchainV3.test.ts | 38 +++++++---------- .../examples/instrumentation.ts | 22 +++++----- .../examples/manual-instrumentation.ts | 20 ++++----- .../test/openai.responses.test.ts | 5 ++- .../test/openai.test.ts | 42 ++++++++----------- .../src/OpenInferenceSpanProcessor.ts | 18 +++++++- 13 files changed, 125 insertions(+), 144 deletions(-) diff --git a/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts b/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts index c6648d62f..945b4b909 100644 --- a/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts +++ b/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts @@ -15,9 +15,9 @@ describe("AnthropicInstrumentation", () => { beforeEach(() => { exporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider(); - provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); - + provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(exporter)] + }); instrumentation = new AnthropicInstrumentation({ tracerProvider: provider, }); diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts index d70964979..167741fea 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts @@ -92,14 +92,12 @@ describe("BedrockAgentInstrumentation with a custom tracer provider", () => { }); describe("BedrockkAgentInstrumentation with custom TracerProvider set", () => { - const customTracerProvider = new NodeTracerProvider(); + const customMemoryExporter = new InMemorySpanExporter(); - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); - + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter),] + }); + // Instantiate instrumentation with the custom provider const instrumentation = new BedrockAgentInstrumentation({}); instrumentation.setTracerProvider(customTracerProvider); @@ -163,13 +161,10 @@ describe("BedrockAgentInstrumentation with a custom tracer provider", () => { }); describe("BedrockAgentInstrumentation with custom TracerProvider set via registerInstrumentations", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], + }); // Instantiate instrumentation with the custom provider const instrumentation = new BedrockAgentInstrumentation(); diff --git a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts index 04cafde77..9bf8f776b 100644 --- a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts +++ b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts @@ -98,12 +98,6 @@ class ConverseComprehensiveValidator { } private setupTracing() { - this.provider = new NodeTracerProvider({ - resource: new Resource({ - [SEMRESATTRS_PROJECT_NAME]: "bedrock-converse-comprehensive-validation", - }), - }); - // Setup exporters const exporters = [new ConsoleSpanExporter()]; @@ -136,8 +130,11 @@ class ConverseComprehensiveValidator { exporters.push(phoenixExporter); } - exporters.forEach((exporter) => { - this.provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + this.provider = new NodeTracerProvider({ + resource: new Resource({ + [SEMRESATTRS_PROJECT_NAME]: "bedrock-converse-comprehensive-validation", + }), + spanProcessors: exporters.map((exporter) => new SimpleSpanProcessor(exporter)), }); this.provider.register(); diff --git a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts index 30e94ebc4..748c1483a 100644 --- a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts +++ b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts @@ -102,13 +102,7 @@ class ConverseStreamPhoenixValidator { } private setupTracing() { - this.provider = new NodeTracerProvider({ - resource: new Resource({ - [SEMRESATTRS_PROJECT_NAME]: - "bedrock-converse-stream-phoenix-validation", - }), - }); - + // Setup exporters const exporters: SpanExporter[] = [new ConsoleSpanExporter()]; @@ -141,8 +135,12 @@ class ConverseStreamPhoenixValidator { exporters.push(phoenixExporter); } - exporters.forEach((exporter) => { - this.provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + this.provider = new NodeTracerProvider({ + resource: new Resource({ + [SEMRESATTRS_PROJECT_NAME]: + "bedrock-converse-stream-phoenix-validation", + }), + spanProcessors: exporters.map((exporter) => new SimpleSpanProcessor(exporter)), }); this.provider.register(); diff --git a/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts b/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts index 2e3fe06f6..9271e6e1f 100644 --- a/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts +++ b/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts @@ -98,12 +98,6 @@ class InstrumentationValidator { } private setupTracing() { - this.provider = new NodeTracerProvider({ - resource: new Resource({ - [SEMRESATTRS_PROJECT_NAME]: "bedrock-validation-script", - }), - }); - // Setup exporters const exporters = [new ConsoleSpanExporter()]; @@ -136,10 +130,12 @@ class InstrumentationValidator { exporters.push(phoenixExporter); } - exporters.forEach((exporter) => { - this.provider.addSpanProcessor(new SimpleSpanProcessor(exporter)); + this.provider = new NodeTracerProvider({ + resource: new Resource({ + [SEMRESATTRS_PROJECT_NAME]: "bedrock-validation-script", + }), + spanProcessors: exporters.map((exporter) => new SimpleSpanProcessor(exporter)), }); - this.provider.register(); } diff --git a/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts b/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts index 62b79eb35..e393a7b57 100644 --- a/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts +++ b/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts @@ -71,9 +71,10 @@ describe("BedrockInstrumentation", () => { instrumentation = new BedrockInstrumentation(); instrumentation.disable(); // Initially disabled spanExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider(); + provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(spanExporter)] + }); - provider.addSpanProcessor(new SimpleSpanProcessor(spanExporter)); provider.register(); instrumentation.setTracerProvider(provider); @@ -3850,8 +3851,9 @@ describe("BedrockInstrumentation - custom tracing", () => { beforeAll(() => { // Setup global tracer provider and span exporter for comparison spanExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider(); - provider.addSpanProcessor(new SimpleSpanProcessor(spanExporter)); + provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(spanExporter)] + }); provider.register(); }); @@ -3903,14 +3905,11 @@ describe("BedrockInstrumentation - custom tracing", () => { }); describe("BedrockInstrumentation with custom TracerProvider passed in", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); let instrumentation: BedrockInstrumentation; - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], + }); beforeAll(async () => { // Instantiate instrumentation with the custom provider @@ -3975,14 +3974,11 @@ describe("BedrockInstrumentation - custom tracing", () => { }); describe("BedrockInstrumentation with custom TracerProvider set", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); let instrumentation: BedrockInstrumentation; - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], + }); beforeAll(async () => { // Instantiate instrumentation and set the custom provider @@ -4046,15 +4042,12 @@ describe("BedrockInstrumentation - custom tracing", () => { }); describe("BedrockInstrumentation with custom TracerProvider set via registerInstrumentations", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] + }); let instrumentation: BedrockInstrumentation; - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); - beforeAll(async () => { // Instantiate instrumentation and register with the custom provider instrumentation = new BedrockInstrumentation(); diff --git a/js/packages/openinference-instrumentation-langchain/examples/instrumentation.ts b/js/packages/openinference-instrumentation-langchain/examples/instrumentation.ts index d13299858..39bd02d25 100644 --- a/js/packages/openinference-instrumentation-langchain/examples/instrumentation.ts +++ b/js/packages/openinference-instrumentation-langchain/examples/instrumentation.ts @@ -21,17 +21,16 @@ const provider = new NodeTracerProvider({ [ATTR_SERVICE_NAME]: "langchain-service", [SEMRESATTRS_PROJECT_NAME]: "langchain-project", }), + spanProcessors: [ + new SimpleSpanProcessor(new ConsoleSpanExporter()), + new SimpleSpanProcessor( + new OTLPTraceExporter({ + url: "http://localhost:6006/v1/traces", + }), + ), + ], }); -provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); -provider.addSpanProcessor( - new SimpleSpanProcessor( - new OTLPTraceExporter({ - url: "http://localhost:6006/v1/traces", - }), - ), -); - const lcInstrumentation = new LangChainInstrumentation(); // LangChain must be manually instrumented as it doesn't have a traditional module structure lcInstrumentation.manuallyInstrument(CallbackManagerModule); diff --git a/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts b/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts index fdad5b637..badc89534 100644 --- a/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts +++ b/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts @@ -135,7 +135,9 @@ const expectedSpanAttributes = { }; describe("LangChainInstrumentation", () => { - const tracerProvider = new NodeTracerProvider(); + const tracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); tracerProvider.register(); const instrumentation = new LangChainInstrumentation(); instrumentation.disable(); @@ -144,7 +146,6 @@ describe("LangChainInstrumentation", () => { provider.getTracer("default"); instrumentation.setTracerProvider(tracerProvider); - tracerProvider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); const PROMPT_TEMPLATE = `Use the context below to answer the question. ---------------- @@ -711,10 +712,11 @@ describe("LangChainInstrumentation with TraceConfigOptions", () => { }, }); instrumentation.disable(); - const provider = new NodeTracerProvider(); + const provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); provider.getTracer("default"); instrumentation.setTracerProvider(tracerProvider); - tracerProvider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); beforeAll(() => { // Use manual instrumentation as intended for LangChain @@ -784,13 +786,10 @@ describe("LangChainInstrumentation with TraceConfigOptions", () => { describe("LangChainInstrumentation with a custom tracer provider", () => { describe("LangChainInstrumentation with custom TracerProvider passed in", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], + }); // Instantiate instrumentation with the custom provider const instrumentation = new LangChainInstrumentation({ @@ -839,13 +838,11 @@ describe("LangChainInstrumentation with a custom tracer provider", () => { }); describe("LangChainInstrumentation with custom TracerProvider set", () => { - const customTracerProvider = new NodeTracerProvider(); + const customMemoryExporter = new InMemorySpanExporter(); - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter),] + }); // Instantiate instrumentation with the custom provider const instrumentation = new LangChainInstrumentation(); @@ -889,13 +886,10 @@ describe("LangChainInstrumentation with a custom tracer provider", () => { }); describe("LangChainInstrumentation with custom TracerProvider set via registerInstrumentations", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); - - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter),] + }); // Instantiate instrumentation with the custom provider const instrumentation = new LangChainInstrumentation(); diff --git a/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts b/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts index 5f43b1a40..0feff1a9e 100644 --- a/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts +++ b/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts @@ -7,7 +7,8 @@ import { NodeTracerProvider, SimpleSpanProcessor, } from "@opentelemetry/sdk-trace-node"; -import { SEMRESATTRS_SERVICE_NAME } from "@opentelemetry/semantic-conventions"; +import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions"; + import { OpenAIInstrumentation } from "../src/index"; @@ -16,19 +17,18 @@ diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG); const provider = new NodeTracerProvider({ resource: new Resource({ - [SEMRESATTRS_SERVICE_NAME]: "openai-service", + [SEMRESATTRS_PROJECT_NAME]: "openai-service", }), + spanProcessors: [ + new SimpleSpanProcessor(new ConsoleSpanExporter()), + new SimpleSpanProcessor( + new OTLPTraceExporter({ + url: "http://localhost:6006/v1/traces", + }), + ), + ] }); -provider.addSpanProcessor(new SimpleSpanProcessor(new ConsoleSpanExporter())); -provider.addSpanProcessor( - new SimpleSpanProcessor( - new OTLPTraceExporter({ - url: "http://localhost:6006/v1/traces", - }), - ), -); - registerInstrumentations({ instrumentations: [new OpenAIInstrumentation()], }); diff --git a/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts b/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts index 03ab6d6e8..0e013d117 100644 --- a/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts +++ b/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts @@ -10,7 +10,8 @@ import { NodeTracerProvider, SimpleSpanProcessor, } from "@opentelemetry/sdk-trace-node"; -import { SEMRESATTRS_SERVICE_NAME } from "@opentelemetry/semantic-conventions"; +import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions"; + import { isPatched, OpenAIInstrumentation } from "../src"; @@ -22,18 +23,17 @@ diag.setLogger(new DiagConsoleLogger(), DiagLogLevel.DEBUG); const provider = new NodeTracerProvider({ resource: new Resource({ - [SEMRESATTRS_SERVICE_NAME]: "openai-service", + [SEMRESATTRS_PROJECT_NAME]: "openai-service", }), + spanProcessors: [ + new SimpleSpanProcessor( + new OTLPTraceExporter({ + url: "http://localhost:6006/v1/traces", + }), + ), + ], }); -provider.addSpanProcessor( - new SimpleSpanProcessor( - new OTLPTraceExporter({ - url: "http://localhost:6006/v1/traces", - }), - ), -); - provider.register(); // Make sure that openai is not patched diff --git a/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts b/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts index ced2e58db..ec6fc87db 100644 --- a/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts +++ b/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts @@ -17,14 +17,15 @@ const memoryExporter = new InMemorySpanExporter(); // Add new describe block for OpenAI Responses tests describe("OpenAIInstrumentation - Responses", () => { - const tracerProvider = new NodeTracerProvider(); + const tracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation(); instrumentation.disable(); let openai: OpenAI; instrumentation.setTracerProvider(tracerProvider); - tracerProvider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); // @ts-expect-error the moduleExports property is private. This is needed to make the test work with auto-mocking instrumentation._modules[0].moduleExports = OpenAI; diff --git a/js/packages/openinference-instrumentation-openai/test/openai.test.ts b/js/packages/openinference-instrumentation-openai/test/openai.test.ts index 9865acd54..9674ef73f 100644 --- a/js/packages/openinference-instrumentation-openai/test/openai.test.ts +++ b/js/packages/openinference-instrumentation-openai/test/openai.test.ts @@ -32,14 +32,15 @@ process.env.OPENAI_API_KEY = "fake-api-key"; const memoryExporter = new InMemorySpanExporter(); describe("OpenAIInstrumentation", () => { - const tracerProvider = new NodeTracerProvider(); + const tracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation(); instrumentation.disable(); let openai: OpenAI; instrumentation.setTracerProvider(tracerProvider); - tracerProvider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); // @ts-expect-error the moduleExports property is private. This is needed to make the test work with auto-mocking instrumentation._modules[0].moduleExports = OpenAI; @@ -1110,7 +1111,9 @@ describe("OpenAIInstrumentation", () => { }); describe("OpenAIInstrumentation with TraceConfig", () => { - const tracerProvider = new NodeTracerProvider(); + const tracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation({ traceConfig: { hideInputs: true }, @@ -1119,7 +1122,6 @@ describe("OpenAIInstrumentation with TraceConfig", () => { let openai: OpenAI; instrumentation.setTracerProvider(tracerProvider); - tracerProvider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); // @ts-expect-error the moduleExports property is private. This is needed to make the test work with auto-mocking instrumentation._modules[0].moduleExports = OpenAI; @@ -1195,14 +1197,15 @@ describe("OpenAIInstrumentation with TraceConfig", () => { }); describe("AzureOpenAIInstrumentation", () => { - const tracerProvider = new NodeTracerProvider(); + const tracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation(); instrumentation.disable(); let azureOpenai: AzureOpenAI; instrumentation.setTracerProvider(tracerProvider); - tracerProvider.addSpanProcessor(new SimpleSpanProcessor(memoryExporter)); // @ts-expect-error the moduleExports property is private. This is needed to make the test work with auto-mocking instrumentation._modules[0].moduleExports = OpenAI; @@ -1402,15 +1405,12 @@ describe("AzureOpenAIInstrumentation", () => { describe("OpenAIInstrumentation with a custom tracer provider", () => { describe("OpenAIInstrumentation with custom TracerProvider passed in", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] + }); let openai: OpenAI; - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); - // Instantiate instrumentation with the custom provider const instrumentation = new OpenAIInstrumentation({ tracerProvider: customTracerProvider, @@ -1490,15 +1490,12 @@ describe("OpenAIInstrumentation with a custom tracer provider", () => { }); describe("OpenAIInstrumentation with custom TracerProvider set", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] + }); let openai: OpenAI; - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); - // Instantiate instrumentation with the custom provider const instrumentation = new OpenAIInstrumentation(); instrumentation.setTracerProvider(customTracerProvider); @@ -1577,15 +1574,12 @@ describe("OpenAIInstrumentation with a custom tracer provider", () => { }); describe("OpenAIInstrumentation with custom TracerProvider set via registerInstrumentations", () => { - const customTracerProvider = new NodeTracerProvider(); const customMemoryExporter = new InMemorySpanExporter(); + const customTracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], + }); let openai: OpenAI; - // Note: We don't register this provider globally. - customTracerProvider.addSpanProcessor( - new SimpleSpanProcessor(customMemoryExporter), - ); - // Instantiate instrumentation with the custom provider const instrumentation = new OpenAIInstrumentation(); registerInstrumentations({ diff --git a/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts b/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts index 0d054d41b..96e605fd7 100644 --- a/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts +++ b/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts @@ -27,7 +27,14 @@ import { addOpenInferenceAttributesToSpan, shouldExportSpan } from "./utils"; * exporter, * spanFilter: isOpenInferenceSpan, * }); - * tracerProvider.addSpanProcessor(processor); + * + * const tracerProvider = new NodeTracerProvider({ + * resource: resourceFromAttributes({ + * [SEMRESATTRS_PROJECT_NAME]: "your-project-name", + * }), + * spanProcessors: [processor], // <-- pass processor here + * }); + * * ``` */ export class OpenInferenceSimpleSpanProcessor extends SimpleSpanProcessor { @@ -81,7 +88,14 @@ export class OpenInferenceSimpleSpanProcessor extends SimpleSpanProcessor { * spanFilter: isOpenInferenceSpan, * config: { maxQueueSize: 2048, scheduledDelayMillis: 5000 }, * }); - * tracerProvider.addSpanProcessor(processor); + * + * const tracerProvider = new NodeTracerProvider({ + * resource: resourceFromAttributes({ + * [SEMRESATTRS_PROJECT_NAME]: "your-project-name", + * }), + * spanProcessors: [processor], // <-- pass processor here + * }); + * * ``` */ export class OpenInferenceBatchSpanProcessor extends BatchSpanProcessor { From 69c649df7fd7ca5f664a5e21a3f3eaac5b38f3a6 Mon Sep 17 00:00:00 2001 From: satyadevai Date: Wed, 5 Nov 2025 16:22:15 +0530 Subject: [PATCH 3/4] Fixing Unit Tests --- .../test/custom-provider.test.ts | 2 +- .../test/langchainV3.test.ts | 8 ++++---- 2 files changed, 5 insertions(+), 5 deletions(-) diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts index 167741fea..a1b20ee93 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts @@ -27,7 +27,7 @@ describe("BedrockAgentInstrumentation with a custom tracer provider", () => { describe("BedrockAgentInstrumentation with custom TracerProvider passed in", () => { const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] }); // Instantiate instrumentation with the custom provider const instrumentation = new BedrockAgentInstrumentation({ diff --git a/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts b/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts index badc89534..dda11ab1e 100644 --- a/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts +++ b/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts @@ -704,7 +704,9 @@ describe("LangChainInstrumentation", () => { }); describe("LangChainInstrumentation with TraceConfigOptions", () => { - const tracerProvider = new NodeTracerProvider(); + const tracerProvider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); tracerProvider.register(); const instrumentation = new LangChainInstrumentation({ traceConfig: { @@ -712,9 +714,7 @@ describe("LangChainInstrumentation with TraceConfigOptions", () => { }, }); instrumentation.disable(); - const provider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(memoryExporter)], - }); + const provider = new NodeTracerProvider(); provider.getTracer("default"); instrumentation.setTracerProvider(tracerProvider); From 09f8cde22223f6294ddadbca014e078104f1195b Mon Sep 17 00:00:00 2001 From: satyadevai Date: Tue, 11 Nov 2025 23:11:19 +0530 Subject: [PATCH 4/4] Fixing Unit tests and linting issues --- .../test/instrumentation.test.ts | 2 +- .../test/custom-provider.test.ts | 7 +++---- .../integration.instrumentation.agent-traces.test.ts | 4 +++- ...tion.instrumentation.agent-without-traces.test.ts | 4 +++- .../test/integration.instrumentation.rag.test.ts | 4 +++- .../scripts/validate-converse-comprehensive.ts | 4 +++- .../scripts/validate-converse-stream.ts | 5 +++-- .../scripts/validate-invoke-model.ts | 4 +++- .../test/instrumentation.test.ts | 6 +++--- .../test/langchainV3.test.ts | 5 ++--- .../examples/instrumentation.ts | 8 ++++---- .../examples/manual-instrumentation.ts | 4 ++-- .../test/openai.responses.test.ts | 2 +- .../test/openai.test.ts | 12 ++++++------ .../src/OpenInferenceSpanProcessor.ts | 8 ++++---- 15 files changed, 44 insertions(+), 35 deletions(-) diff --git a/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts b/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts index 945b4b909..0045949af 100644 --- a/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts +++ b/js/packages/openinference-instrumentation-anthropic/test/instrumentation.test.ts @@ -16,7 +16,7 @@ describe("AnthropicInstrumentation", () => { beforeEach(() => { exporter = new InMemorySpanExporter(); provider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(exporter)] + spanProcessors: [new SimpleSpanProcessor(exporter)], }); instrumentation = new AnthropicInstrumentation({ tracerProvider: provider, diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts index a1b20ee93..6340fca14 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/custom-provider.test.ts @@ -27,7 +27,7 @@ describe("BedrockAgentInstrumentation with a custom tracer provider", () => { describe("BedrockAgentInstrumentation with custom TracerProvider passed in", () => { const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], }); // Instantiate instrumentation with the custom provider const instrumentation = new BedrockAgentInstrumentation({ @@ -92,12 +92,11 @@ describe("BedrockAgentInstrumentation with a custom tracer provider", () => { }); describe("BedrockkAgentInstrumentation with custom TracerProvider set", () => { - const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(customMemoryExporter),] + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], }); - + // Instantiate instrumentation with the custom provider const instrumentation = new BedrockAgentInstrumentation({}); instrumentation.setTracerProvider(customTracerProvider); diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts index 5ffde90af..9afc9bcc5 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-traces.test.ts @@ -37,7 +37,9 @@ describe("BedrockAgentInstrumentation Trace Collector Integration - agent attrib instrumentation = new BedrockAgentInstrumentation(); instrumentation.disable(); memoryExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider({spanProcessors: [new SimpleSpanProcessor(memoryExporter)]}); + provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); provider.register(); instrumentation.setTracerProvider(provider); // Manually set module exports for testing (following OpenAI pattern) diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts index ba19c9959..636f4ae98 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.agent-without-traces.test.ts @@ -32,7 +32,9 @@ describe("BedrockAgentInstrumentation Integration - agent attributes and API rec instrumentation = new BedrockAgentInstrumentation(); instrumentation.disable(); memoryExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider({spanProcessors: [new SimpleSpanProcessor(memoryExporter)]}); + provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); provider.register(); instrumentation.setTracerProvider(provider); // Manually set module exports for testing (following OpenAI pattern) diff --git a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts index aae7ff229..3690aa4c9 100644 --- a/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts +++ b/js/packages/openinference-instrumentation-bedrock-agent-runtime/test/integration.instrumentation.rag.test.ts @@ -39,7 +39,9 @@ describe("BedrockAgent RAG Instrumentation - attributes and API recording", () = instrumentation = new BedrockAgentInstrumentation(); instrumentation.disable(); memoryExporter = new InMemorySpanExporter(); - provider = new NodeTracerProvider({spanProcessors: [new SimpleSpanProcessor(memoryExporter)]}); + provider = new NodeTracerProvider({ + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], + }); provider.register(); instrumentation.setTracerProvider(provider); // Manually set module exports for testing (following OpenAI pattern) diff --git a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts index 9bf8f776b..0e6b8576f 100644 --- a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts +++ b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-comprehensive.ts @@ -134,7 +134,9 @@ class ConverseComprehensiveValidator { resource: new Resource({ [SEMRESATTRS_PROJECT_NAME]: "bedrock-converse-comprehensive-validation", }), - spanProcessors: exporters.map((exporter) => new SimpleSpanProcessor(exporter)), + spanProcessors: exporters.map( + (exporter) => new SimpleSpanProcessor(exporter), + ), }); this.provider.register(); diff --git a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts index 748c1483a..6ccdd304d 100644 --- a/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts +++ b/js/packages/openinference-instrumentation-bedrock/scripts/validate-converse-stream.ts @@ -102,7 +102,6 @@ class ConverseStreamPhoenixValidator { } private setupTracing() { - // Setup exporters const exporters: SpanExporter[] = [new ConsoleSpanExporter()]; @@ -140,7 +139,9 @@ class ConverseStreamPhoenixValidator { [SEMRESATTRS_PROJECT_NAME]: "bedrock-converse-stream-phoenix-validation", }), - spanProcessors: exporters.map((exporter) => new SimpleSpanProcessor(exporter)), + spanProcessors: exporters.map( + (exporter) => new SimpleSpanProcessor(exporter), + ), }); this.provider.register(); diff --git a/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts b/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts index 9271e6e1f..7f614b1be 100644 --- a/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts +++ b/js/packages/openinference-instrumentation-bedrock/scripts/validate-invoke-model.ts @@ -134,7 +134,9 @@ class InstrumentationValidator { resource: new Resource({ [SEMRESATTRS_PROJECT_NAME]: "bedrock-validation-script", }), - spanProcessors: exporters.map((exporter) => new SimpleSpanProcessor(exporter)), + spanProcessors: exporters.map( + (exporter) => new SimpleSpanProcessor(exporter), + ), }); this.provider.register(); } diff --git a/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts b/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts index e393a7b57..d96b4ba8b 100644 --- a/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts +++ b/js/packages/openinference-instrumentation-bedrock/test/instrumentation.test.ts @@ -72,7 +72,7 @@ describe("BedrockInstrumentation", () => { instrumentation.disable(); // Initially disabled spanExporter = new InMemorySpanExporter(); provider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(spanExporter)] + spanProcessors: [new SimpleSpanProcessor(spanExporter)], }); provider.register(); @@ -3852,7 +3852,7 @@ describe("BedrockInstrumentation - custom tracing", () => { // Setup global tracer provider and span exporter for comparison spanExporter = new InMemorySpanExporter(); provider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(spanExporter)] + spanProcessors: [new SimpleSpanProcessor(spanExporter)], }); provider.register(); }); @@ -4044,7 +4044,7 @@ describe("BedrockInstrumentation - custom tracing", () => { describe("BedrockInstrumentation with custom TracerProvider set via registerInstrumentations", () => { const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], }); let instrumentation: BedrockInstrumentation; diff --git a/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts b/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts index dda11ab1e..fdcac9662 100644 --- a/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts +++ b/js/packages/openinference-instrumentation-langchain/test/langchainV3.test.ts @@ -838,10 +838,9 @@ describe("LangChainInstrumentation with a custom tracer provider", () => { }); describe("LangChainInstrumentation with custom TracerProvider set", () => { - const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(customMemoryExporter),] + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], }); // Instantiate instrumentation with the custom provider @@ -888,7 +887,7 @@ describe("LangChainInstrumentation with a custom tracer provider", () => { describe("LangChainInstrumentation with custom TracerProvider set via registerInstrumentations", () => { const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(customMemoryExporter),] + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], }); // Instantiate instrumentation with the custom provider diff --git a/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts b/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts index 0feff1a9e..338c0342b 100644 --- a/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts +++ b/js/packages/openinference-instrumentation-openai/examples/instrumentation.ts @@ -1,3 +1,5 @@ +import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions"; + import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto"; import { registerInstrumentations } from "@opentelemetry/instrumentation"; @@ -7,8 +9,6 @@ import { NodeTracerProvider, SimpleSpanProcessor, } from "@opentelemetry/sdk-trace-node"; -import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions"; - import { OpenAIInstrumentation } from "../src/index"; @@ -25,8 +25,8 @@ const provider = new NodeTracerProvider({ new OTLPTraceExporter({ url: "http://localhost:6006/v1/traces", }), - ), - ] + ), + ], }); registerInstrumentations({ diff --git a/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts b/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts index 0e013d117..6e86ce984 100644 --- a/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts +++ b/js/packages/openinference-instrumentation-openai/examples/manual-instrumentation.ts @@ -3,6 +3,8 @@ * This file shows an example of how if openai is already imported, you can manually instrument it after it's been imported. */ +import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions"; + import { diag, DiagConsoleLogger, DiagLogLevel } from "@opentelemetry/api"; import { OTLPTraceExporter } from "@opentelemetry/exporter-trace-otlp-proto"; import { Resource } from "@opentelemetry/resources"; @@ -10,8 +12,6 @@ import { NodeTracerProvider, SimpleSpanProcessor, } from "@opentelemetry/sdk-trace-node"; -import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions"; - import { isPatched, OpenAIInstrumentation } from "../src"; diff --git a/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts b/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts index ec6fc87db..6596f0262 100644 --- a/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts +++ b/js/packages/openinference-instrumentation-openai/test/openai.responses.test.ts @@ -18,7 +18,7 @@ const memoryExporter = new InMemorySpanExporter(); // Add new describe block for OpenAI Responses tests describe("OpenAIInstrumentation - Responses", () => { const tracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation(); diff --git a/js/packages/openinference-instrumentation-openai/test/openai.test.ts b/js/packages/openinference-instrumentation-openai/test/openai.test.ts index 9674ef73f..87f37fc4b 100644 --- a/js/packages/openinference-instrumentation-openai/test/openai.test.ts +++ b/js/packages/openinference-instrumentation-openai/test/openai.test.ts @@ -33,7 +33,7 @@ const memoryExporter = new InMemorySpanExporter(); describe("OpenAIInstrumentation", () => { const tracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation(); @@ -1112,7 +1112,7 @@ describe("OpenAIInstrumentation", () => { describe("OpenAIInstrumentation with TraceConfig", () => { const tracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation({ @@ -1198,7 +1198,7 @@ describe("OpenAIInstrumentation with TraceConfig", () => { describe("AzureOpenAIInstrumentation", () => { const tracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(memoryExporter)] + spanProcessors: [new SimpleSpanProcessor(memoryExporter)], }); tracerProvider.register(); const instrumentation = new OpenAIInstrumentation(); @@ -1407,7 +1407,7 @@ describe("OpenAIInstrumentation with a custom tracer provider", () => { describe("OpenAIInstrumentation with custom TracerProvider passed in", () => { const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], }); let openai: OpenAI; @@ -1492,8 +1492,8 @@ describe("OpenAIInstrumentation with a custom tracer provider", () => { describe("OpenAIInstrumentation with custom TracerProvider set", () => { const customMemoryExporter = new InMemorySpanExporter(); const customTracerProvider = new NodeTracerProvider({ - spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)] - }); + spanProcessors: [new SimpleSpanProcessor(customMemoryExporter)], + }); let openai: OpenAI; // Instantiate instrumentation with the custom provider diff --git a/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts b/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts index 96e605fd7..6efc60520 100644 --- a/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts +++ b/js/packages/openinference-vercel/src/OpenInferenceSpanProcessor.ts @@ -27,14 +27,14 @@ import { addOpenInferenceAttributesToSpan, shouldExportSpan } from "./utils"; * exporter, * spanFilter: isOpenInferenceSpan, * }); - * + * * const tracerProvider = new NodeTracerProvider({ * resource: resourceFromAttributes({ * [SEMRESATTRS_PROJECT_NAME]: "your-project-name", * }), * spanProcessors: [processor], // <-- pass processor here * }); - * + * * ``` */ export class OpenInferenceSimpleSpanProcessor extends SimpleSpanProcessor { @@ -88,14 +88,14 @@ export class OpenInferenceSimpleSpanProcessor extends SimpleSpanProcessor { * spanFilter: isOpenInferenceSpan, * config: { maxQueueSize: 2048, scheduledDelayMillis: 5000 }, * }); - * + * * const tracerProvider = new NodeTracerProvider({ * resource: resourceFromAttributes({ * [SEMRESATTRS_PROJECT_NAME]: "your-project-name", * }), * spanProcessors: [processor], // <-- pass processor here * }); - * + * * ``` */ export class OpenInferenceBatchSpanProcessor extends BatchSpanProcessor {