@arizeai/openinference-instrumentation-beeai 1.4.2 → 1.5.1

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
package/README.md CHANGED
@@ -78,3 +78,37 @@ console.log(`Agent 🤖 : `, response.result.text);
78
78
  ```
79
79
 
80
80
  For more information on OpenTelemetry Node.js SDK, see the [OpenTelemetry Node.js SDK documentation](https://opentelemetry.io/docs/instrumentation/js/getting-started/nodejs/).
81
+
82
+ ## Using a Custom Tracer Provider
83
+
84
+ You can specify a custom tracer provider when creating the BeeAI instrumentation. This is useful when you want to use a non-global tracer provider or have more control over the tracing configuration.
85
+
86
+ ```typescript
87
+ import { NodeTracerProvider } from "@opentelemetry/sdk-trace-node";
88
+ import { Resource } from "@opentelemetry/resources";
89
+ import { SEMRESATTRS_PROJECT_NAME } from "@arizeai/openinference-semantic-conventions";
90
+ import { BeeAIInstrumentation } from "@arizeai/openinference-instrumentation-beeai";
91
+ import * as beeaiFramework from "beeai-framework";
92
+
93
+ // Create a custom tracer provider
94
+ const customTracerProvider = new NodeTracerProvider({
95
+ resource: new Resource({
96
+ [SEMRESATTRS_PROJECT_NAME]: "my-beeai-project",
97
+ }),
98
+ });
99
+
100
+ // Pass the custom tracer provider to the instrumentation
101
+ const beeAIInstrumentation = new BeeAIInstrumentation({
102
+ tracerProvider: customTracerProvider,
103
+ });
104
+
105
+ // Manually instrument the BeeAI framework
106
+ beeAIInstrumentation.manuallyInstrument(beeaiFramework);
107
+ ```
108
+
109
+ Alternatively, you can set the tracer provider after creating the instrumentation:
110
+
111
+ ```typescript
112
+ const beeAIInstrumentation = new BeeAIInstrumentation();
113
+ beeAIInstrumentation.setTracerProvider(customTracerProvider);
114
+ ```
@@ -1,4 +1,5 @@
1
1
  import { InstrumentationBase, InstrumentationNodeModuleDefinition, InstrumentationConfig } from "@opentelemetry/instrumentation";
2
+ import { Tracer, TracerProvider } from "@opentelemetry/api";
2
3
  import * as bee from "beeai-framework";
3
4
  import { TraceConfigOptions } from "@arizeai/openinference-core";
4
5
  /**
@@ -7,7 +8,9 @@ import { TraceConfigOptions } from "@arizeai/openinference-core";
7
8
  export declare function isPatched(): boolean;
8
9
  export declare class BeeAIInstrumentation extends InstrumentationBase {
9
10
  private oiTracer;
10
- constructor({ instrumentationConfig, traceConfig, }?: {
11
+ private tracerProvider?;
12
+ private traceConfig?;
13
+ constructor({ instrumentationConfig, traceConfig, tracerProvider, }?: {
11
14
  /**
12
15
  * The config for the instrumentation
13
16
  * @see {@link InstrumentationConfig}
@@ -18,6 +21,13 @@ export declare class BeeAIInstrumentation extends InstrumentationBase {
18
21
  * @see {@link TraceConfigOptions}
19
22
  */
20
23
  traceConfig?: TraceConfigOptions;
24
+ /**
25
+ * An optional custom trace provider to be used for tracing. If not provided, a tracer will be created using the global tracer provider.
26
+ * This is useful if you want to use a non-global tracer provider.
27
+ *
28
+ * @see {@link TracerProvider}
29
+ */
30
+ tracerProvider?: TracerProvider;
21
31
  });
22
32
  protected init(): InstrumentationNodeModuleDefinition;
23
33
  /**
@@ -25,6 +35,8 @@ export declare class BeeAIInstrumentation extends InstrumentationBase {
25
35
  * @param {openai} module
26
36
  */
27
37
  manuallyInstrument(module: typeof bee): void;
38
+ get tracer(): Tracer;
39
+ setTracerProvider(tracerProvider: TracerProvider): void;
28
40
  private patch;
29
41
  /**
30
42
  * Un-patches the OpenAI module's chat completions API
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mCAAmC,EACnC,qBAAqB,EACtB,MAAM,gCAAgC,CAAC;AAGxC,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAY,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAe3E;;GAEG;AACH,wBAAgB,SAAS,YAExB;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAW;gBAEf,EACV,qBAAqB,EACrB,WAAW,GACZ,GAAE;QACD;;;WAGG;QACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;QAC9C;;;WAGG;QACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;KAC7B;IASN,SAAS,CAAC,IAAI;IAWd;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG;IAerC,OAAO,CAAC,KAAK;IAiFb;;OAEG;IACH,OAAO,CAAC,OAAO;CAehB"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,EACL,mBAAmB,EACnB,mCAAmC,EACnC,qBAAqB,EACtB,MAAM,gCAAgC,CAAC;AACxC,OAAO,EAAQ,MAAM,EAAE,cAAc,EAAE,MAAM,oBAAoB,CAAC;AAElE,OAAO,KAAK,GAAG,MAAM,iBAAiB,CAAC;AAEvC,OAAO,EAAY,kBAAkB,EAAE,MAAM,6BAA6B,CAAC;AAiB3E;;GAEG;AACH,wBAAgB,SAAS,YAExB;AAED,qBAAa,oBAAqB,SAAQ,mBAAmB;IAC3D,OAAO,CAAC,QAAQ,CAAW;IAC3B,OAAO,CAAC,cAAc,CAAC,CAAiB;IACxC,OAAO,CAAC,WAAW,CAAC,CAAqB;gBAE7B,EACV,qBAAqB,EACrB,WAAW,EACX,cAAc,GACf,GAAE;QACD;;;WAGG;QACH,qBAAqB,CAAC,EAAE,qBAAqB,CAAC;QAC9C;;;WAGG;QACH,WAAW,CAAC,EAAE,kBAAkB,CAAC;QACjC;;;;;WAKG;QACH,cAAc,CAAC,EAAE,cAAc,CAAC;KAC5B;IAeN,SAAS,CAAC,IAAI;IAWd;;;OAGG;IACH,kBAAkB,CAAC,MAAM,EAAE,OAAO,GAAG;IAerC,IAAI,MAAM,IAAI,MAAM,CAKnB;IAED,iBAAiB,CAAC,cAAc,EAAE,cAAc,GAAG,IAAI;IASvD,OAAO,CAAC,KAAK;IAiFb;;OAEG;IACH,OAAO,CAAC,OAAO;CAehB"}
@@ -6,6 +6,7 @@ import { createTelemetryMiddleware } from "./middleware.js";
6
6
  import { OpenInferenceSpanKind } from "@arizeai/openinference-semantic-conventions";
7
7
  import { satisfies } from "semver";
8
8
  const MODULE_NAME = "beeai-framework";
9
+ const INSTRUMENTATION_NAME = "@arizeai/openinference-instrumentation-beeai";
9
10
  const INSTRUMENTS = [">=0.1.9 <0.1.14"];
10
11
  /**
11
12
  * Flag to check if the openai module has been patched
@@ -19,9 +20,14 @@ export function isPatched() {
19
20
  return _isOpenInferencePatched;
20
21
  }
21
22
  export class BeeAIInstrumentation extends InstrumentationBase {
22
- constructor({ instrumentationConfig, traceConfig, } = {}) {
23
- super("@arizeai/openinference-instrumentation-beeai", Version, Object.assign({}, instrumentationConfig));
24
- this.oiTracer = new OITracer({ tracer: this.tracer, traceConfig });
23
+ constructor({ instrumentationConfig, traceConfig, tracerProvider, } = {}) {
24
+ super(INSTRUMENTATION_NAME, Version, Object.assign({}, instrumentationConfig));
25
+ this.tracerProvider = tracerProvider;
26
+ this.traceConfig = traceConfig;
27
+ this.oiTracer = new OITracer({
28
+ tracer: this.tracerProvider?.getTracer(INSTRUMENTATION_NAME) ?? this.tracer,
29
+ traceConfig,
30
+ });
25
31
  }
26
32
  init() {
27
33
  const module = new InstrumentationNodeModuleDefinition(MODULE_NAME, INSTRUMENTS, this.patch.bind(this), this.unpatch.bind(this));
@@ -40,6 +46,20 @@ export class BeeAIInstrumentation extends InstrumentationBase {
40
46
  diag.debug(`[BeeaiInstrumentation] Manually instrumenting ${MODULE_NAME}`);
41
47
  this.patch(module);
42
48
  }
49
+ get tracer() {
50
+ if (this.tracerProvider) {
51
+ return this.tracerProvider.getTracer(this.instrumentationName);
52
+ }
53
+ return super.tracer;
54
+ }
55
+ setTracerProvider(tracerProvider) {
56
+ super.setTracerProvider(tracerProvider);
57
+ this.tracerProvider = tracerProvider;
58
+ this.oiTracer = new OITracer({
59
+ tracer: this.tracer,
60
+ traceConfig: this.traceConfig,
61
+ });
62
+ }
43
63
  patch(module) {
44
64
  if (!module?.BaseAgent) {
45
65
  diag.warn("[BeeaiInstrumentation] BaseAgent not found, skipping instrumentation.");
@@ -1 +1 @@
1
- {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}