@arizeai/openinference-instrumentation-openai 0.0.4 → 0.1.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.
Files changed (36) hide show
  1. package/dist/esm/instrumentation.d.ts.map +1 -1
  2. package/dist/esm/instrumentation.js +438 -44
  3. package/dist/esm/instrumentation.js.map +1 -1
  4. package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
  5. package/dist/esm/typeUtils.d.ts +9 -0
  6. package/dist/esm/typeUtils.d.ts.map +1 -0
  7. package/dist/esm/typeUtils.js +13 -0
  8. package/dist/esm/typeUtils.js.map +1 -0
  9. package/dist/esm/version.d.ts +1 -1
  10. package/dist/esm/version.js +1 -1
  11. package/dist/esnext/instrumentation.d.ts.map +1 -1
  12. package/dist/esnext/instrumentation.js +300 -43
  13. package/dist/esnext/instrumentation.js.map +1 -1
  14. package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
  15. package/dist/esnext/typeUtils.d.ts +9 -0
  16. package/dist/esnext/typeUtils.d.ts.map +1 -0
  17. package/dist/esnext/typeUtils.js +13 -0
  18. package/dist/esnext/typeUtils.js.map +1 -0
  19. package/dist/esnext/version.d.ts +1 -1
  20. package/dist/esnext/version.js +1 -1
  21. package/dist/src/instrumentation.d.ts.map +1 -1
  22. package/dist/src/instrumentation.js +312 -43
  23. package/dist/src/instrumentation.js.map +1 -1
  24. package/dist/src/typeUtils.d.ts +9 -0
  25. package/dist/src/typeUtils.d.ts.map +1 -0
  26. package/dist/src/typeUtils.js +18 -0
  27. package/dist/src/typeUtils.js.map +1 -0
  28. package/dist/src/version.d.ts +1 -1
  29. package/dist/src/version.js +1 -1
  30. package/dist/test/openai.test.js +607 -1
  31. package/dist/test/openai.test.js.map +1 -1
  32. package/dist/tsconfig.tsbuildinfo +1 -1
  33. package/package.json +2 -2
  34. package/src/instrumentation.ts +368 -65
  35. package/src/typeUtils.ts +13 -0
  36. package/src/version.ts +1 -1
@@ -9,10 +9,18 @@ var __rest = (this && this.__rest) || function (s, e) {
9
9
  }
10
10
  return t;
11
11
  };
12
+ var __asyncValues = (this && this.__asyncValues) || function (o) {
13
+ if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
14
+ var m = o[Symbol.asyncIterator], i;
15
+ return m ? m.call(o) : (o = typeof __values === "function" ? __values(o) : o[Symbol.iterator](), i = {}, verb("next"), verb("throw"), verb("return"), i[Symbol.asyncIterator] = function () { return this; }, i);
16
+ function verb(n) { i[n] = o[n] && function (v) { return new Promise(function (resolve, reject) { v = o[n](v), settle(resolve, reject, v.done, v.value); }); }; }
17
+ function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
18
+ };
12
19
  import { InstrumentationBase, InstrumentationNodeModuleDefinition, safeExecuteInTheMiddle, } from "@opentelemetry/instrumentation";
13
20
  import { diag, context, trace, SpanKind, SpanStatusCode, } from "@opentelemetry/api";
14
21
  import { VERSION } from "./version";
15
22
  import { SemanticConventions, OpenInferenceSpanKind, MimeType, } from "@arizeai/openinference-semantic-conventions";
23
+ import { assertUnreachable, isString } from "./typeUtils";
16
24
  const MODULE_NAME = "openai";
17
25
  export class OpenAIInstrumentation extends InstrumentationBase {
18
26
  constructor(config) {
@@ -60,16 +68,62 @@ export class OpenAIInstrumentation extends InstrumentationBase {
60
68
  }
61
69
  });
62
70
  const wrappedPromise = execPromise.then((result) => {
63
- if (result) {
71
+ if (isChatCompletionResponse(result)) {
64
72
  // Record the results
65
73
  span.setAttributes(Object.assign(Object.assign({ [SemanticConventions.OUTPUT_VALUE]: JSON.stringify(result), [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON,
66
74
  // Override the model from the value sent by the server
67
- [SemanticConventions.LLM_MODEL_NAME]: isChatCompletionResponse(result)
68
- ? result.model
69
- : body.model }, getLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
75
+ [SemanticConventions.LLM_MODEL_NAME]: result.model }, getChatCompletionLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
76
+ span.setStatus({ code: SpanStatusCode.OK });
77
+ span.end();
78
+ }
79
+ else {
80
+ // This is a streaming response
81
+ // handle the chunks and add them to the span
82
+ // First split the stream via tee
83
+ const [leftStream, rightStream] = result.tee();
84
+ consumeChatCompletionStreamChunks(rightStream, span);
85
+ result = leftStream;
86
+ }
87
+ return result;
88
+ });
89
+ return context.bind(execContext, wrappedPromise);
90
+ };
91
+ });
92
+ this._wrap(module.OpenAI.Completions.prototype, "create",
93
+ // eslint-disable-next-line @typescript-eslint/no-explicit-any
94
+ (original) => {
95
+ return function patchedCreate(...args) {
96
+ const body = args[0];
97
+ const { prompt: _prompt } = body, invocationParameters = __rest(body, ["prompt"]);
98
+ const span = instrumentation.tracer.startSpan(`OpenAI Completions`, {
99
+ kind: SpanKind.INTERNAL,
100
+ attributes: Object.assign({ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.LLM, [SemanticConventions.LLM_MODEL_NAME]: body.model, [SemanticConventions.LLM_INVOCATION_PARAMETERS]: JSON.stringify(invocationParameters) }, getCompletionInputValueAndMimeType(body)),
101
+ });
102
+ const execContext = trace.setSpan(context.active(), span);
103
+ const execPromise = safeExecuteInTheMiddle(() => {
104
+ return context.with(execContext, () => {
105
+ return original.apply(this, args);
106
+ });
107
+ }, (error) => {
108
+ // Push the error to the span
109
+ if (error) {
110
+ span.recordException(error);
111
+ span.setStatus({
112
+ code: SpanStatusCode.ERROR,
113
+ message: error.message,
114
+ });
115
+ span.end();
116
+ }
117
+ });
118
+ const wrappedPromise = execPromise.then((result) => {
119
+ if (isCompletionResponse(result)) {
120
+ // Record the results
121
+ span.setAttributes(Object.assign(Object.assign({ [SemanticConventions.OUTPUT_VALUE]: JSON.stringify(result), [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.JSON,
122
+ // Override the model from the value sent by the server
123
+ [SemanticConventions.LLM_MODEL_NAME]: result.model }, getCompletionOutputValueAndMimeType(result)), getUsageAttributes(result)));
124
+ span.setStatus({ code: SpanStatusCode.OK });
125
+ span.end();
70
126
  }
71
- span.setStatus({ code: SpanStatusCode.OK });
72
- span.end();
73
127
  return result;
74
128
  });
75
129
  return context.bind(execContext, wrappedPromise);
@@ -81,7 +135,7 @@ export class OpenAIInstrumentation extends InstrumentationBase {
81
135
  return function patchedEmbeddingCreate(...args) {
82
136
  const body = args[0];
83
137
  const { input } = body;
84
- const isStringInput = typeof input == "string";
138
+ const isStringInput = typeof input === "string";
85
139
  const span = instrumentation.tracer.startSpan(`OpenAI Embeddings`, {
86
140
  kind: SpanKind.INTERNAL,
87
141
  attributes: Object.assign({ [SemanticConventions.OPENINFERENCE_SPAN_KIND]: OpenInferenceSpanKind.EMBEDDING, [SemanticConventions.EMBEDDING_MODEL_NAME]: body.model, [SemanticConventions.INPUT_VALUE]: isStringInput
@@ -137,68 +191,184 @@ function isChatCompletionResponse(response) {
137
191
  return "choices" in response;
138
192
  }
139
193
  /**
140
- * Converts the body of the request to LLM input messages
194
+ * type-guard that checks if the response is a completion response
195
+ */
196
+ function isCompletionResponse(response) {
197
+ return "choices" in response;
198
+ }
199
+ /**
200
+ * type-guard that checks if completion prompt attribute is an array of strings
201
+ */
202
+ function isPromptStringArray(prompt) {
203
+ return (Array.isArray(prompt) && prompt.every((item) => typeof item === "string"));
204
+ }
205
+ /**
206
+ * Converts the body of a chat completions request to LLM input messages
141
207
  */
142
208
  function getLLMInputMessagesAttributes(body) {
143
209
  return body.messages.reduce((acc, message, index) => {
144
- const index_prefix = `${SemanticConventions.LLM_INPUT_MESSAGES}.${index}`;
145
- acc[`${index_prefix}.${SemanticConventions.MESSAGE_CONTENT}`] = String(message.content);
146
- acc[`${index_prefix}.${SemanticConventions.MESSAGE_ROLE}`] = String(message.role);
210
+ const messageAttributes = getChatCompletionInputMessageAttributes(message);
211
+ const indexPrefix = `${SemanticConventions.LLM_INPUT_MESSAGES}.${index}.`;
212
+ // Flatten the attributes on the index prefix
213
+ for (const [key, value] of Object.entries(messageAttributes)) {
214
+ acc[`${indexPrefix}${key}`] = value;
215
+ }
147
216
  return acc;
148
217
  }, {});
149
218
  }
219
+ function getChatCompletionInputMessageAttributes(message) {
220
+ const role = message.role;
221
+ const attributes = {
222
+ [SemanticConventions.MESSAGE_ROLE]: role,
223
+ };
224
+ // Add the content only if it is a string
225
+ if (typeof message.content === "string")
226
+ attributes[SemanticConventions.MESSAGE_CONTENT] = message.content;
227
+ switch (role) {
228
+ case "user":
229
+ // There's nothing to add for the user
230
+ break;
231
+ case "assistant":
232
+ if (message.tool_calls) {
233
+ message.tool_calls.forEach((toolCall, index) => {
234
+ // Make sure the tool call has a function
235
+ if (toolCall.function) {
236
+ const toolCallIndexPrefix = `${SemanticConventions.MESSAGE_TOOL_CALLS}.${index}.`;
237
+ attributes[toolCallIndexPrefix + SemanticConventions.TOOL_CALL_FUNCTION_NAME] = toolCall.function.name;
238
+ attributes[toolCallIndexPrefix +
239
+ SemanticConventions.TOOL_CALL_FUNCTION_ARGUMENTS_JSON] = toolCall.function.arguments;
240
+ }
241
+ });
242
+ }
243
+ break;
244
+ case "function":
245
+ attributes[SemanticConventions.MESSAGE_FUNCTION_CALL_NAME] = message.name;
246
+ break;
247
+ case "tool":
248
+ // There's nothing to add for the tool. There is a tool_id, but there are no
249
+ // semantic conventions for it
250
+ break;
251
+ case "system":
252
+ // There's nothing to add for the system. Content is captured above
253
+ break;
254
+ default:
255
+ assertUnreachable(role);
256
+ break;
257
+ }
258
+ return attributes;
259
+ }
150
260
  /**
151
- * Get Usage attributes
261
+ * Converts the body of a completions request to input attributes
152
262
  */
153
- function getUsageAttributes(response) {
154
- if (Object.prototype.hasOwnProperty.call(response, "usage")) {
155
- const completion = response;
156
- if (completion.usage) {
157
- return {
158
- [SemanticConventions.LLM_TOKEN_COUNT_COMPLETION]: completion.usage.completion_tokens,
159
- [SemanticConventions.LLM_TOKEN_COUNT_PROMPT]: completion.usage.prompt_tokens,
160
- [SemanticConventions.LLM_TOKEN_COUNT_TOTAL]: completion.usage.total_tokens,
161
- };
263
+ function getCompletionInputValueAndMimeType(body) {
264
+ if (typeof body.prompt === "string") {
265
+ return {
266
+ [SemanticConventions.INPUT_VALUE]: body.prompt,
267
+ [SemanticConventions.INPUT_MIME_TYPE]: MimeType.TEXT,
268
+ };
269
+ }
270
+ else if (isPromptStringArray(body.prompt)) {
271
+ const prompt = body.prompt[0]; // Only single prompts are currently supported
272
+ if (prompt === undefined) {
273
+ return {};
162
274
  }
275
+ return {
276
+ [SemanticConventions.INPUT_VALUE]: prompt,
277
+ [SemanticConventions.INPUT_MIME_TYPE]: MimeType.TEXT,
278
+ };
163
279
  }
280
+ // Other cases in which the prompt is a token or array of tokens are currently unsupported
164
281
  return {};
165
282
  }
166
283
  /**
167
- * Converts the result to LLM output attributes
284
+ * Get usage attributes
168
285
  */
169
- function getLLMOutputMessagesAttributes(response) {
170
- // Handle chat completion
171
- if (Object.prototype.hasOwnProperty.call(response, "choices")) {
172
- const completion = response;
173
- // Right now support just the first choice
174
- const choice = completion.choices[0];
175
- if (!choice) {
176
- return {};
177
- }
178
- return [choice.message].reduce((acc, message, index) => {
179
- const index_prefix = `${SemanticConventions.LLM_OUTPUT_MESSAGES}.${index}`;
180
- acc[`${index_prefix}.${SemanticConventions.MESSAGE_CONTENT}`] = String(message.content);
181
- acc[`${index_prefix}.${SemanticConventions.MESSAGE_ROLE}`] = message.role;
182
- return acc;
183
- }, {});
286
+ function getUsageAttributes(completion) {
287
+ if (completion.usage) {
288
+ return {
289
+ [SemanticConventions.LLM_TOKEN_COUNT_COMPLETION]: completion.usage.completion_tokens,
290
+ [SemanticConventions.LLM_TOKEN_COUNT_PROMPT]: completion.usage.prompt_tokens,
291
+ [SemanticConventions.LLM_TOKEN_COUNT_TOTAL]: completion.usage.total_tokens,
292
+ };
184
293
  }
185
294
  return {};
186
295
  }
296
+ /**
297
+ * Converts the chat completion result to LLM output attributes
298
+ */
299
+ function getChatCompletionLLMOutputMessagesAttributes(chatCompletion) {
300
+ // Right now support just the first choice
301
+ const choice = chatCompletion.choices[0];
302
+ if (!choice) {
303
+ return {};
304
+ }
305
+ return [choice.message].reduce((acc, message, index) => {
306
+ const indexPrefix = `${SemanticConventions.LLM_OUTPUT_MESSAGES}.${index}.`;
307
+ const messageAttributes = getChatCompletionOutputMessageAttributes(message);
308
+ // Flatten the attributes on the index prefix
309
+ for (const [key, value] of Object.entries(messageAttributes)) {
310
+ acc[`${indexPrefix}${key}`] = value;
311
+ }
312
+ return acc;
313
+ }, {});
314
+ }
315
+ function getChatCompletionOutputMessageAttributes(message) {
316
+ const role = message.role;
317
+ const attributes = {
318
+ [SemanticConventions.MESSAGE_ROLE]: role,
319
+ };
320
+ if (message.content) {
321
+ attributes[SemanticConventions.MESSAGE_CONTENT] = message.content;
322
+ }
323
+ if (message.tool_calls) {
324
+ message.tool_calls.forEach((toolCall, index) => {
325
+ const toolCallIndexPrefix = `${SemanticConventions.MESSAGE_TOOL_CALLS}.${index}.`;
326
+ // Double check that the tool call has a function
327
+ // NB: OpenAI only supports tool calls with functions right now but this may change
328
+ if (toolCall.function) {
329
+ attributes[toolCallIndexPrefix + SemanticConventions.TOOL_CALL_FUNCTION_NAME] = toolCall.function.name;
330
+ attributes[toolCallIndexPrefix +
331
+ SemanticConventions.TOOL_CALL_FUNCTION_ARGUMENTS_JSON] = toolCall.function.arguments;
332
+ }
333
+ });
334
+ }
335
+ if (message.function_call) {
336
+ attributes[SemanticConventions.MESSAGE_FUNCTION_CALL_NAME] =
337
+ message.function_call.name;
338
+ attributes[SemanticConventions.MESSAGE_FUNCTION_CALL_ARGUMENTS_JSON] =
339
+ message.function_call.arguments;
340
+ }
341
+ return attributes;
342
+ }
343
+ /**
344
+ * Converts the completion result to output attributes
345
+ */
346
+ function getCompletionOutputValueAndMimeType(completion) {
347
+ // Right now support just the first choice
348
+ const choice = completion.choices[0];
349
+ if (!choice) {
350
+ return {};
351
+ }
352
+ return {
353
+ [SemanticConventions.OUTPUT_VALUE]: String(choice.text),
354
+ [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.TEXT,
355
+ };
356
+ }
187
357
  /**
188
358
  * Converts the embedding result payload to embedding attributes
189
359
  */
190
360
  function getEmbeddingTextAttributes(request) {
191
- if (typeof request.input == "string") {
361
+ if (typeof request.input === "string") {
192
362
  return {
193
363
  [`${SemanticConventions.EMBEDDING_EMBEDDINGS}.0.${SemanticConventions.EMBEDDING_TEXT}`]: request.input,
194
364
  };
195
365
  }
196
366
  else if (Array.isArray(request.input) &&
197
367
  request.input.length > 0 &&
198
- typeof request.input[0] == "string") {
368
+ typeof request.input[0] === "string") {
199
369
  return request.input.reduce((acc, input, index) => {
200
- const index_prefix = `${SemanticConventions.EMBEDDING_EMBEDDINGS}.${index}`;
201
- acc[`${index_prefix}.${SemanticConventions.EMBEDDING_TEXT}`] = input;
370
+ const indexPrefix = `${SemanticConventions.EMBEDDING_EMBEDDINGS}.${index}.`;
371
+ acc[`${indexPrefix}${SemanticConventions.EMBEDDING_TEXT}`] = input;
202
372
  return acc;
203
373
  }, {});
204
374
  }
@@ -210,10 +380,97 @@ function getEmbeddingTextAttributes(request) {
210
380
  */
211
381
  function getEmbeddingEmbeddingsAttributes(response) {
212
382
  return response.data.reduce((acc, embedding, index) => {
213
- const index_prefix = `${SemanticConventions.EMBEDDING_EMBEDDINGS}.${index}`;
214
- acc[`${index_prefix}.${SemanticConventions.EMBEDDING_VECTOR}`] =
383
+ const indexPrefix = `${SemanticConventions.EMBEDDING_EMBEDDINGS}.${index}.`;
384
+ acc[`${indexPrefix}${SemanticConventions.EMBEDDING_VECTOR}`] =
215
385
  embedding.embedding;
216
386
  return acc;
217
387
  }, {});
218
388
  }
389
+ /**
390
+ * Consumes the stream chunks and adds them to the span
391
+ */
392
+ async function consumeChatCompletionStreamChunks(stream, span) {
393
+ var _a, e_1, _b, _c;
394
+ let streamResponse = "";
395
+ // Tool and function call attributes can also arrive in the stream
396
+ // NB: the tools and function calls arrive in partial diffs
397
+ // So the final tool and function calls need to be aggregated
398
+ // across chunks
399
+ const toolAndFunctionCallAttributes = {};
400
+ try {
401
+ // The first message is for the assistant response so we start at 1
402
+ for (var _d = true, stream_1 = __asyncValues(stream), stream_1_1; stream_1_1 = await stream_1.next(), _a = stream_1_1.done, !_a; _d = true) {
403
+ _c = stream_1_1.value;
404
+ _d = false;
405
+ const chunk = _c;
406
+ if (chunk.choices.length <= 0) {
407
+ continue;
408
+ }
409
+ const choice = chunk.choices[0];
410
+ if (choice.delta.content) {
411
+ streamResponse += choice.delta.content;
412
+ }
413
+ // Accumulate the tool and function call attributes
414
+ const toolAndFunctionCallAttributesDiff = getToolAndFunctionCallAttributesFromStreamChunk(chunk);
415
+ for (const [key, value] of Object.entries(toolAndFunctionCallAttributesDiff)) {
416
+ if (isString(toolAndFunctionCallAttributes[key]) && isString(value)) {
417
+ toolAndFunctionCallAttributes[key] += value;
418
+ }
419
+ else if (isString(value)) {
420
+ toolAndFunctionCallAttributes[key] = value;
421
+ }
422
+ }
423
+ }
424
+ }
425
+ catch (e_1_1) { e_1 = { error: e_1_1 }; }
426
+ finally {
427
+ try {
428
+ if (!_d && !_a && (_b = stream_1.return)) await _b.call(stream_1);
429
+ }
430
+ finally { if (e_1) throw e_1.error; }
431
+ }
432
+ const messageIndexPrefix = `${SemanticConventions.LLM_OUTPUT_MESSAGES}.0.`;
433
+ // Append the attributes to the span as a message
434
+ const attributes = {
435
+ [SemanticConventions.OUTPUT_VALUE]: streamResponse,
436
+ [SemanticConventions.OUTPUT_MIME_TYPE]: MimeType.TEXT,
437
+ [`${messageIndexPrefix}${SemanticConventions.MESSAGE_CONTENT}`]: streamResponse,
438
+ [`${messageIndexPrefix}${SemanticConventions.MESSAGE_ROLE}`]: "assistant",
439
+ };
440
+ // Add the tool and function call attributes
441
+ for (const [key, value] of Object.entries(toolAndFunctionCallAttributes)) {
442
+ attributes[`${messageIndexPrefix}${key}`] = value;
443
+ }
444
+ span.setAttributes(attributes);
445
+ span.end();
446
+ }
447
+ /**
448
+ * Extracts the semantic attributes from the stream chunk for tool_calls and function_calls
449
+ */
450
+ function getToolAndFunctionCallAttributesFromStreamChunk(chunk) {
451
+ if (chunk.choices.length <= 0) {
452
+ return {};
453
+ }
454
+ const choice = chunk.choices[0];
455
+ const attributes = {};
456
+ if (choice.delta.tool_calls) {
457
+ choice.delta.tool_calls.forEach((toolCall, index) => {
458
+ const toolCallIndexPrefix = `${SemanticConventions.MESSAGE_TOOL_CALLS}.${index}.`;
459
+ // Double check that the tool call has a function
460
+ // NB: OpenAI only supports tool calls with functions right now but this may change
461
+ if (toolCall.function) {
462
+ attributes[toolCallIndexPrefix + SemanticConventions.TOOL_CALL_FUNCTION_NAME] = toolCall.function.name;
463
+ attributes[toolCallIndexPrefix +
464
+ SemanticConventions.TOOL_CALL_FUNCTION_ARGUMENTS_JSON] = toolCall.function.arguments;
465
+ }
466
+ });
467
+ }
468
+ if (choice.delta.function_call) {
469
+ attributes[SemanticConventions.MESSAGE_FUNCTION_CALL_NAME] =
470
+ choice.delta.function_call.name;
471
+ attributes[SemanticConventions.MESSAGE_FUNCTION_CALL_ARGUMENTS_JSON] =
472
+ choice.delta.function_call.arguments;
473
+ }
474
+ return attributes;
475
+ }
219
476
  //# 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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"}