@arizeai/openinference-instrumentation-openai 0.0.1-rc8 → 0.0.2

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.
Files changed (47) hide show
  1. package/README.md +30 -1
  2. package/dist/esm/index.d.ts +2 -0
  3. package/dist/esm/index.d.ts.map +1 -0
  4. package/dist/esm/index.js +2 -0
  5. package/dist/esm/index.js.map +1 -0
  6. package/dist/esm/instrumentation.d.ts +15 -0
  7. package/dist/esm/instrumentation.d.ts.map +1 -0
  8. package/dist/esm/instrumentation.js +164 -0
  9. package/dist/esm/instrumentation.js.map +1 -0
  10. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  11. package/dist/esm/version.d.ts +2 -0
  12. package/dist/esm/version.d.ts.map +1 -0
  13. package/dist/esm/version.js +3 -0
  14. package/dist/esm/version.js.map +1 -0
  15. package/dist/esnext/index.d.ts +2 -0
  16. package/dist/esnext/index.d.ts.map +1 -0
  17. package/dist/esnext/index.js +2 -0
  18. package/dist/esnext/index.js.map +1 -0
  19. package/dist/esnext/instrumentation.d.ts +15 -0
  20. package/dist/esnext/instrumentation.d.ts.map +1 -0
  21. package/dist/esnext/instrumentation.js +127 -0
  22. package/dist/esnext/instrumentation.js.map +1 -0
  23. package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
  24. package/dist/esnext/version.d.ts +2 -0
  25. package/dist/esnext/version.d.ts.map +1 -0
  26. package/dist/esnext/version.js +3 -0
  27. package/dist/esnext/version.js.map +1 -0
  28. package/dist/src/index.d.ts +2 -0
  29. package/dist/src/index.d.ts.map +1 -0
  30. package/dist/src/index.js +18 -0
  31. package/dist/src/index.js.map +1 -0
  32. package/dist/src/instrumentation.d.ts +15 -0
  33. package/dist/src/instrumentation.d.ts.map +1 -0
  34. package/dist/src/instrumentation.js +131 -0
  35. package/dist/src/instrumentation.js.map +1 -0
  36. package/dist/src/version.d.ts +2 -0
  37. package/dist/src/version.d.ts.map +1 -0
  38. package/dist/src/version.js +6 -0
  39. package/dist/src/version.js.map +1 -0
  40. package/dist/test/openai.test.d.ts +2 -0
  41. package/dist/test/openai.test.d.ts.map +1 -0
  42. package/dist/test/openai.test.js +130 -0
  43. package/dist/test/openai.test.js.map +1 -0
  44. package/dist/tsconfig.tsbuildinfo +1 -1
  45. package/package.json +2 -2
  46. package/src/instrumentation.ts +92 -8
  47. package/src/version.ts +1 -1
@@ -0,0 +1,2 @@
1
+ export declare const VERSION = "0.0.2";
2
+ //# sourceMappingURL=version.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,UAAU,CAAC"}
@@ -0,0 +1,3 @@
1
+ // this is an auto-generated file. see js/scripts/version-update.js
2
+ export var VERSION = "0.0.2";
3
+ //# sourceMappingURL=version.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,CAAC,IAAM,OAAO,GAAG,OAAO,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./instrumentation";
2
+ //# sourceMappingURL=index.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,2 @@
1
+ export * from "./instrumentation";
2
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"AAAA,cAAc,mBAAmB,CAAC"}
@@ -0,0 +1,15 @@
1
+ import * as openai from "openai";
2
+ import { InstrumentationBase, InstrumentationConfig, InstrumentationModuleDefinition } from "@opentelemetry/instrumentation";
3
+ export declare class OpenAIInstrumentation extends InstrumentationBase<typeof openai> {
4
+ constructor(config?: InstrumentationConfig);
5
+ protected init(): InstrumentationModuleDefinition<typeof openai>;
6
+ /**
7
+ * Patches the OpenAI module
8
+ */
9
+ private patch;
10
+ /**
11
+ * Un-patches the OpenAI module's chat completions API
12
+ */
13
+ private unpatch;
14
+ }
15
+ //# sourceMappingURL=instrumentation.d.ts.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EACH,mBAAmB,EACnB,qBAAqB,EACrB,+BAA+B,EAGlC,MAAM,gCAAgC,CAAC;AAwBxC,qBAAa,qBAAsB,SAAQ,mBAAmB,CAAC,OAAO,MAAM,CAAC;gBAC7D,MAAM,CAAC,EAAE,qBAAqB;IAQ1C,SAAS,CAAC,IAAI,IAAI,+BAA+B,CAAC,OAAO,MAAM,CAAC;IAShE;;OAEG;IACH,OAAO,CAAC,KAAK;IAmFb;;OAEG;IACH,OAAO,CAAC,OAAO;CAIlB"}
@@ -0,0 +1,127 @@
1
+ var __rest = (this && this.__rest) || function (s, e) {
2
+ var t = {};
3
+ for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
4
+ t[p] = s[p];
5
+ if (s != null && typeof Object.getOwnPropertySymbols === "function")
6
+ for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
7
+ if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
8
+ t[p[i]] = s[p[i]];
9
+ }
10
+ return t;
11
+ };
12
+ import { InstrumentationBase, InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle, } from "@opentelemetry/instrumentation";
13
+ import { diag, context, trace, SpanKind, SpanStatusCode, } from "@opentelemetry/api";
14
+ import { VERSION } from "./version";
15
+ import { SemanticConventions, OpenInferenceSpanKind, MimeType, } from "@arizeai/openinference-semantic-conventions";
16
+ const MODULE_NAME = "openai";
17
+ export class OpenAIInstrumentation extends InstrumentationBase {
18
+ constructor(config) {
19
+ super("@arizeai/openinference-instrumentation-openai", VERSION, Object.assign({}, config));
20
+ }
21
+ init() {
22
+ const module = new InstrumentationNodeModuleDefinition("openai", ["^4.0.0"], this.patch.bind(this), this.unpatch.bind(this));
23
+ return module;
24
+ }
25
+ /**
26
+ * Patches the OpenAI module
27
+ */
28
+ patch(module, moduleVersion) {
29
+ diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`);
30
+ if (module === null || module === void 0 ? void 0 : module.openInferencePatched) {
31
+ return module;
32
+ }
33
+ const instrumentation = this;
34
+ // Patch create chat completions
35
+ this._wrap(module.OpenAI.Chat.Completions.prototype, "create", (original) => {
36
+ return function patchedCreate(...args) {
37
+ const body = args[0];
38
+ const { messages } = body, invocationParameters = __rest(body, ["messages"]);
39
+ const span = instrumentation.tracer.startSpan(`OpenAI Chat Completions`, {
40
+ kind: SpanKind.CLIENT,
41
+ attributes: Object.assign({ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.LLM, [SemanticConventions.LLM_MODEL_NAME]: body.model, [SemanticConventions.INPUT_VALUE]: JSON.stringify(body), [SemanticConventions.INPUT_MIME_TYPE]: MimeType.JSON, [SemanticConventions.LLM_INVOCATION_PARAMETERS]: JSON.stringify(invocationParameters) }, getLLMInputMessagesAttributes(body)),
42
+ });
43
+ const execContext = trace.setSpan(context.active(), span);
44
+ const execPromise = safeExecuteInTheMiddle(() => {
45
+ return context.with(execContext, () => {
46
+ return original.apply(this, args);
47
+ });
48
+ }, (error) => {
49
+ // Push the error to the span
50
+ if (error) {
51
+ span.recordException(error);
52
+ }
53
+ });
54
+ const wrappedPromise = execPromise.then((result) => {
55
+ if (result) {
56
+ // Record the results
57
+ span.setAttributes(Object.assign(Object.assign({ [SemanticConventions.OUTPUT_VALUE]: JSON.stringify(result), [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON }, getLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
58
+ }
59
+ span.setStatus({ code: SpanStatusCode.OK });
60
+ span.end();
61
+ return result;
62
+ });
63
+ return context.bind(execContext, wrappedPromise);
64
+ };
65
+ });
66
+ module.openInferencePatched = true;
67
+ return module;
68
+ }
69
+ /**
70
+ * Un-patches the OpenAI module's chat completions API
71
+ */
72
+ unpatch(moduleExports, moduleVersion) {
73
+ diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`);
74
+ this._unwrap(moduleExports.OpenAI.Chat.Completions.prototype, "create");
75
+ }
76
+ }
77
+ /**
78
+ * Converts the body of the request to LLM input messages
79
+ */
80
+ function getLLMInputMessagesAttributes(body) {
81
+ return body.messages.reduce((acc, message, index) => {
82
+ const index_prefix = `${SemanticConventions.LLM_INPUT_MESSAGES}.${index}`;
83
+ acc[`${index_prefix}.${SemanticConventions.MESSAGE_CONTENT}`] = String(message.content);
84
+ acc[`${index_prefix}.${SemanticConventions.MESSAGE_ROLE}`] = String(message.role);
85
+ return acc;
86
+ }, {});
87
+ }
88
+ /**
89
+ * Get Usage attributes
90
+ */
91
+ function getUsageAttributes(response) {
92
+ if (response.hasOwnProperty("usage")) {
93
+ const completion = response;
94
+ if (completion.usage) {
95
+ return {
96
+ [SemanticConventions.LLM_TOKEN_COUNT_COMPLETION]: completion.usage.completion_tokens,
97
+ [SemanticConventions.LLM_TOKEN_COUNT_PROMPT]: completion.usage.prompt_tokens,
98
+ [SemanticConventions.LLM_TOKEN_COUNT_TOTAL]: completion.usage.total_tokens,
99
+ };
100
+ }
101
+ }
102
+ return {};
103
+ }
104
+ /**
105
+ * Converts the result to LLM output attributes
106
+ */
107
+ function getLLMOutputMessagesAttributes(response) {
108
+ // Handle chat completion
109
+ if (response.hasOwnProperty("choices")) {
110
+ const completion = response;
111
+ // Right now support just the first choice
112
+ const choice = completion.choices[0];
113
+ if (!choice) {
114
+ return {};
115
+ }
116
+ return [choice.message].reduce((acc, message, index) => {
117
+ const index_prefix = `${SemanticConventions.LLM_OUTPUT_MESSAGES}.${index}`;
118
+ acc[`${index_prefix}.${SemanticConventions.MESSAGE_CONTENT}`] =
119
+ String(message.content);
120
+ acc[`${index_prefix}.${SemanticConventions.MESSAGE_ROLE}`] =
121
+ message.role;
122
+ return acc;
123
+ }, {});
124
+ }
125
+ return {};
126
+ }
127
+ //# sourceMappingURL=instrumentation.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}