@arizeai/openinference-instrumentation-openai 0.0.2 → 0.0.4

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
@@ -17,7 +17,7 @@ To load the OpenAI instrumentation, specify it in the registerInstrumentations c
17
17
  ```typescript
18
18
  const { NodeTracerProvider } = require("@opentelemetry/sdk-trace-node");
19
19
  const {
20
- OpenAIInstrumentation,
20
+ OpenAIInstrumentation,
21
21
  } = require("@arizeai/openinference-instrumentation-openai");
22
22
  const { registerInstrumentations } = require("@opentelemetry/instrumentation");
23
23
 
@@ -25,7 +25,7 @@ const provider = new NodeTracerProvider();
25
25
  provider.register();
26
26
 
27
27
  registerInstrumentations({
28
- instrumentations: [new OpenAIInstrumentation()],
28
+ instrumentations: [new OpenAIInstrumentation()],
29
29
  });
30
30
  ```
31
31
 
@@ -1 +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"}
1
+ {"version":3,"file":"instrumentation.d.ts","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,MAAM,MAAM,QAAQ,CAAC;AACjC,OAAO,EACL,mBAAmB,EACnB,qBAAqB,EACrB,+BAA+B,EAGhC,MAAM,gCAAgC,CAAC;AA4BxC,qBAAa,qBAAsB,SAAQ,mBAAmB,CAAC,OAAO,MAAM,CAAC;gBAC/D,MAAM,CAAC,EAAE,qBAAqB;IAQ1C,SAAS,CAAC,IAAI,IAAI,+BAA+B,CAAC,OAAO,MAAM,CAAC;IAShE;;OAEG;IACH,OAAO,CAAC,KAAK;IAgKb;;OAEG;IACH,OAAO,CAAC,OAAO;CAKhB"}
@@ -57,9 +57,12 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
57
57
  if (module === null || module === void 0 ? void 0 : module.openInferencePatched) {
58
58
  return module;
59
59
  }
60
+ // eslint-disable-next-line @typescript-eslint/no-this-alias
60
61
  var instrumentation = this;
61
62
  // Patch create chat completions
62
- this._wrap(module.OpenAI.Chat.Completions.prototype, "create", function (original) {
63
+ this._wrap(module.OpenAI.Chat.Completions.prototype, "create",
64
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
65
+ function (original) {
63
66
  return function patchedCreate() {
64
67
  var _a;
65
68
  var _this = this;
@@ -68,9 +71,9 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
68
71
  args[_i] = arguments[_i];
69
72
  }
70
73
  var body = args[0];
71
- var messages = body.messages, invocationParameters = __rest(body, ["messages"]);
74
+ var _messages = body.messages, invocationParameters = __rest(body, ["messages"]);
72
75
  var span = instrumentation.tracer.startSpan("OpenAI Chat Completions", {
73
- kind: SpanKind.CLIENT,
76
+ kind: SpanKind.INTERNAL,
74
77
  attributes: __assign((_a = {}, _a[SemanticConventions.OPENINFERENCE_SPAN_KIND] = OpenInferenceSpanKind.LLM, _a[SemanticConventions.LLM_MODEL_NAME] = body.model, _a[SemanticConventions.INPUT_VALUE] = JSON.stringify(body), _a[SemanticConventions.INPUT_MIME_TYPE] = MimeType.JSON, _a[SemanticConventions.LLM_INVOCATION_PARAMETERS] = JSON.stringify(invocationParameters), _a), getLLMInputMessagesAttributes(body)),
75
78
  });
76
79
  var execContext = trace.setSpan(context.active(), span);
@@ -82,13 +85,69 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
82
85
  // Push the error to the span
83
86
  if (error) {
84
87
  span.recordException(error);
88
+ span.setStatus({
89
+ code: SpanStatusCode.ERROR,
90
+ message: error.message,
91
+ });
92
+ span.end();
85
93
  }
86
94
  });
87
95
  var wrappedPromise = execPromise.then(function (result) {
88
96
  var _a;
89
97
  if (result) {
90
98
  // Record the results
91
- span.setAttributes(__assign(__assign((_a = {}, _a[SemanticConventions.OUTPUT_VALUE] = JSON.stringify(result), _a[SemanticConventions.OUTPUT_MIME_TYPE] = MimeType.JSON, _a), getLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
99
+ span.setAttributes(__assign(__assign((_a = {}, _a[SemanticConventions.OUTPUT_VALUE] = JSON.stringify(result), _a[SemanticConventions.OUTPUT_MIME_TYPE] = MimeType.JSON, _a[SemanticConventions.LLM_MODEL_NAME] = isChatCompletionResponse(result)
100
+ ? result.model
101
+ : body.model, _a), getLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
102
+ }
103
+ span.setStatus({ code: SpanStatusCode.OK });
104
+ span.end();
105
+ return result;
106
+ });
107
+ return context.bind(execContext, wrappedPromise);
108
+ };
109
+ });
110
+ this._wrap(module.OpenAI.Embeddings.prototype, "create",
111
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
112
+ function (original) {
113
+ return function patchedEmbeddingCreate() {
114
+ var _a;
115
+ var _this = this;
116
+ var args = [];
117
+ for (var _i = 0; _i < arguments.length; _i++) {
118
+ args[_i] = arguments[_i];
119
+ }
120
+ var body = args[0];
121
+ var input = body.input;
122
+ var isStringInput = typeof input == "string";
123
+ var span = instrumentation.tracer.startSpan("OpenAI Embeddings", {
124
+ kind: SpanKind.INTERNAL,
125
+ attributes: __assign((_a = {}, _a[SemanticConventions.OPENINFERENCE_SPAN_KIND] = OpenInferenceSpanKind.EMBEDDING, _a[SemanticConventions.EMBEDDING_MODEL_NAME] = body.model, _a[SemanticConventions.INPUT_VALUE] = isStringInput
126
+ ? input
127
+ : JSON.stringify(input), _a[SemanticConventions.INPUT_MIME_TYPE] = isStringInput
128
+ ? MimeType.TEXT
129
+ : MimeType.JSON, _a), getEmbeddingTextAttributes(body)),
130
+ });
131
+ var execContext = trace.setSpan(context.active(), span);
132
+ var execPromise = safeExecuteInTheMiddle(function () {
133
+ return context.with(execContext, function () {
134
+ return original.apply(_this, args);
135
+ });
136
+ }, function (error) {
137
+ // Push the error to the span
138
+ if (error) {
139
+ span.recordException(error);
140
+ span.setStatus({
141
+ code: SpanStatusCode.ERROR,
142
+ message: error.message,
143
+ });
144
+ span.end();
145
+ }
146
+ });
147
+ var wrappedPromise = execPromise.then(function (result) {
148
+ if (result) {
149
+ // Record the results
150
+ span.setAttributes(__assign({}, getEmbeddingEmbeddingsAttributes(result)));
92
151
  }
93
152
  span.setStatus({ code: SpanStatusCode.OK });
94
153
  span.end();
@@ -106,10 +165,17 @@ var OpenAIInstrumentation = /** @class */ (function (_super) {
106
165
  OpenAIInstrumentation.prototype.unpatch = function (moduleExports, moduleVersion) {
107
166
  diag.debug("Removing patch for ".concat(MODULE_NAME, "@").concat(moduleVersion));
108
167
  this._unwrap(moduleExports.OpenAI.Chat.Completions.prototype, "create");
168
+ this._unwrap(moduleExports.OpenAI.Embeddings.prototype, "create");
109
169
  };
110
170
  return OpenAIInstrumentation;
111
171
  }(InstrumentationBase));
112
172
  export { OpenAIInstrumentation };
173
+ /**
174
+ * type-guard that checks if the response is a chat completion response
175
+ */
176
+ function isChatCompletionResponse(response) {
177
+ return "choices" in response;
178
+ }
113
179
  /**
114
180
  * Converts the body of the request to LLM input messages
115
181
  */
@@ -126,7 +192,7 @@ function getLLMInputMessagesAttributes(body) {
126
192
  */
127
193
  function getUsageAttributes(response) {
128
194
  var _a;
129
- if (response.hasOwnProperty("usage")) {
195
+ if (Object.prototype.hasOwnProperty.call(response, "usage")) {
130
196
  var completion = response;
131
197
  if (completion.usage) {
132
198
  return _a = {},
@@ -143,7 +209,7 @@ function getUsageAttributes(response) {
143
209
  */
144
210
  function getLLMOutputMessagesAttributes(response) {
145
211
  // Handle chat completion
146
- if (response.hasOwnProperty("choices")) {
212
+ if (Object.prototype.hasOwnProperty.call(response, "choices")) {
147
213
  var completion = response;
148
214
  // Right now support just the first choice
149
215
  var choice = completion.choices[0];
@@ -152,13 +218,44 @@ function getLLMOutputMessagesAttributes(response) {
152
218
  }
153
219
  return [choice.message].reduce(function (acc, message, index) {
154
220
  var index_prefix = "".concat(SemanticConventions.LLM_OUTPUT_MESSAGES, ".").concat(index);
155
- acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_CONTENT)] =
156
- String(message.content);
157
- acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_ROLE)] =
158
- message.role;
221
+ acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_CONTENT)] = String(message.content);
222
+ acc["".concat(index_prefix, ".").concat(SemanticConventions.MESSAGE_ROLE)] = message.role;
159
223
  return acc;
160
224
  }, {});
161
225
  }
162
226
  return {};
163
227
  }
228
+ /**
229
+ * Converts the embedding result payload to embedding attributes
230
+ */
231
+ function getEmbeddingTextAttributes(request) {
232
+ var _a;
233
+ if (typeof request.input == "string") {
234
+ return _a = {},
235
+ _a["".concat(SemanticConventions.EMBEDDING_EMBEDDINGS, ".0.").concat(SemanticConventions.EMBEDDING_TEXT)] = request.input,
236
+ _a;
237
+ }
238
+ else if (Array.isArray(request.input) &&
239
+ request.input.length > 0 &&
240
+ typeof request.input[0] == "string") {
241
+ return request.input.reduce(function (acc, input, index) {
242
+ var index_prefix = "".concat(SemanticConventions.EMBEDDING_EMBEDDINGS, ".").concat(index);
243
+ acc["".concat(index_prefix, ".").concat(SemanticConventions.EMBEDDING_TEXT)] = input;
244
+ return acc;
245
+ }, {});
246
+ }
247
+ // Ignore other cases where input is a number or an array of numbers
248
+ return {};
249
+ }
250
+ /**
251
+ * Converts the embedding result payload to embedding attributes
252
+ */
253
+ function getEmbeddingEmbeddingsAttributes(response) {
254
+ return response.data.reduce(function (acc, embedding, index) {
255
+ var index_prefix = "".concat(SemanticConventions.EMBEDDING_EMBEDDINGS, ".").concat(index);
256
+ acc["".concat(index_prefix, ".").concat(SemanticConventions.EMBEDDING_VECTOR)] =
257
+ embedding.embedding;
258
+ return acc;
259
+ }, {});
260
+ }
164
261
  //# sourceMappingURL=instrumentation.js.map
@@ -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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"}