@arizeai/openinference-instrumentation-openai 0.0.3 → 0.1.0
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/dist/esm/index.d.ts +1 -1
- package/dist/esm/index.js +1 -1
- package/dist/esm/instrumentation.d.ts +13 -19
- package/dist/esm/instrumentation.d.ts.map +1 -1
- package/dist/esm/instrumentation.js +451 -30
- package/dist/esm/instrumentation.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/typeUtils.d.ts +8 -0
- package/dist/esm/typeUtils.d.ts.map +1 -0
- package/dist/esm/typeUtils.js +10 -0
- package/dist/esm/typeUtils.js.map +1 -0
- package/dist/esm/version.d.ts +2 -2
- package/dist/esm/version.js +2 -2
- package/dist/esnext/index.d.ts +1 -1
- package/dist/esnext/index.js +1 -1
- package/dist/esnext/instrumentation.d.ts +13 -19
- package/dist/esnext/instrumentation.d.ts.map +1 -1
- package/dist/esnext/instrumentation.js +321 -29
- package/dist/esnext/instrumentation.js.map +1 -1
- package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
- package/dist/esnext/typeUtils.d.ts +8 -0
- package/dist/esnext/typeUtils.d.ts.map +1 -0
- package/dist/esnext/typeUtils.js +10 -0
- package/dist/esnext/typeUtils.js.map +1 -0
- package/dist/esnext/version.d.ts +2 -2
- package/dist/esnext/version.js +2 -2
- package/dist/src/instrumentation.d.ts.map +1 -1
- package/dist/src/instrumentation.js +333 -29
- package/dist/src/instrumentation.js.map +1 -1
- package/dist/src/typeUtils.d.ts +8 -0
- package/dist/src/typeUtils.d.ts.map +1 -0
- package/dist/src/typeUtils.js +14 -0
- package/dist/src/typeUtils.js.map +1 -0
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.js +1 -1
- package/dist/test/openai.test.js +387 -6
- package/dist/test/openai.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +6 -2
- package/src/instrumentation.ts +420 -48
- package/src/typeUtils.ts +9 -0
- package/src/version.ts +1 -1
|
@@ -1,4 +1,13 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __awaiter = (this && this.__awaiter) || function (thisArg, _arguments, P, generator) {
|
|
3
|
+
function adopt(value) { return value instanceof P ? value : new P(function (resolve) { resolve(value); }); }
|
|
4
|
+
return new (P || (P = Promise))(function (resolve, reject) {
|
|
5
|
+
function fulfilled(value) { try { step(generator.next(value)); } catch (e) { reject(e); } }
|
|
6
|
+
function rejected(value) { try { step(generator["throw"](value)); } catch (e) { reject(e); } }
|
|
7
|
+
function step(result) { result.done ? resolve(result.value) : adopt(result.value).then(fulfilled, rejected); }
|
|
8
|
+
step((generator = generator.apply(thisArg, _arguments || [])).next());
|
|
9
|
+
});
|
|
10
|
+
};
|
|
2
11
|
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
12
|
var t = {};
|
|
4
13
|
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
@@ -10,12 +19,20 @@ var __rest = (this && this.__rest) || function (s, e) {
|
|
|
10
19
|
}
|
|
11
20
|
return t;
|
|
12
21
|
};
|
|
22
|
+
var __asyncValues = (this && this.__asyncValues) || function (o) {
|
|
23
|
+
if (!Symbol.asyncIterator) throw new TypeError("Symbol.asyncIterator is not defined.");
|
|
24
|
+
var m = o[Symbol.asyncIterator], i;
|
|
25
|
+
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);
|
|
26
|
+
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); }); }; }
|
|
27
|
+
function settle(resolve, reject, d, v) { Promise.resolve(v).then(function(v) { resolve({ value: v, done: d }); }, reject); }
|
|
28
|
+
};
|
|
13
29
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
14
30
|
exports.OpenAIInstrumentation = void 0;
|
|
15
31
|
const instrumentation_1 = require("@opentelemetry/instrumentation");
|
|
16
32
|
const api_1 = require("@opentelemetry/api");
|
|
17
33
|
const version_1 = require("./version");
|
|
18
34
|
const openinference_semantic_conventions_1 = require("@arizeai/openinference-semantic-conventions");
|
|
35
|
+
const typeUtils_1 = require("./typeUtils");
|
|
19
36
|
const MODULE_NAME = "openai";
|
|
20
37
|
class OpenAIInstrumentation extends instrumentation_1.InstrumentationBase {
|
|
21
38
|
constructor(config) {
|
|
@@ -43,7 +60,7 @@ class OpenAIInstrumentation extends instrumentation_1.InstrumentationBase {
|
|
|
43
60
|
const body = args[0];
|
|
44
61
|
const { messages: _messages } = body, invocationParameters = __rest(body, ["messages"]);
|
|
45
62
|
const span = instrumentation.tracer.startSpan(`OpenAI Chat Completions`, {
|
|
46
|
-
kind: api_1.SpanKind.
|
|
63
|
+
kind: api_1.SpanKind.INTERNAL,
|
|
47
64
|
attributes: Object.assign({ [openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND]: openinference_semantic_conventions_1.OpenInferenceSpanKind.LLM, [openinference_semantic_conventions_1.SemanticConventions.LLM_MODEL_NAME]: body.model, [openinference_semantic_conventions_1.SemanticConventions.INPUT_VALUE]: JSON.stringify(body), [openinference_semantic_conventions_1.SemanticConventions.INPUT_MIME_TYPE]: openinference_semantic_conventions_1.MimeType.JSON, [openinference_semantic_conventions_1.SemanticConventions.LLM_INVOCATION_PARAMETERS]: JSON.stringify(invocationParameters) }, getLLMInputMessagesAttributes(body)),
|
|
48
65
|
});
|
|
49
66
|
const execContext = api_1.trace.setSpan(api_1.context.active(), span);
|
|
@@ -55,12 +72,110 @@ class OpenAIInstrumentation extends instrumentation_1.InstrumentationBase {
|
|
|
55
72
|
// Push the error to the span
|
|
56
73
|
if (error) {
|
|
57
74
|
span.recordException(error);
|
|
75
|
+
span.setStatus({
|
|
76
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
77
|
+
message: error.message,
|
|
78
|
+
});
|
|
79
|
+
span.end();
|
|
80
|
+
}
|
|
81
|
+
});
|
|
82
|
+
const wrappedPromise = execPromise.then((result) => {
|
|
83
|
+
if (isChatCompletionResponse(result)) {
|
|
84
|
+
// Record the results
|
|
85
|
+
span.setAttributes(Object.assign(Object.assign({ [openinference_semantic_conventions_1.SemanticConventions.OUTPUT_VALUE]: JSON.stringify(result), [openinference_semantic_conventions_1.SemanticConventions.OUTPUT_MIME_TYPE]: openinference_semantic_conventions_1.MimeType.JSON,
|
|
86
|
+
// Override the model from the value sent by the server
|
|
87
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_MODEL_NAME]: result.model }, getChatCompletionLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
|
|
88
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
89
|
+
span.end();
|
|
90
|
+
}
|
|
91
|
+
else {
|
|
92
|
+
// This is a streaming response
|
|
93
|
+
// handle the chunks and add them to the span
|
|
94
|
+
// First split the stream via tee
|
|
95
|
+
const [leftStream, rightStream] = result.tee();
|
|
96
|
+
consumeChatCompletionStreamChunks(rightStream, span);
|
|
97
|
+
result = leftStream;
|
|
98
|
+
}
|
|
99
|
+
return result;
|
|
100
|
+
});
|
|
101
|
+
return api_1.context.bind(execContext, wrappedPromise);
|
|
102
|
+
};
|
|
103
|
+
});
|
|
104
|
+
this._wrap(module.OpenAI.Completions.prototype, "create",
|
|
105
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
106
|
+
(original) => {
|
|
107
|
+
return function patchedCreate(...args) {
|
|
108
|
+
const body = args[0];
|
|
109
|
+
const { prompt: _prompt } = body, invocationParameters = __rest(body, ["prompt"]);
|
|
110
|
+
const span = instrumentation.tracer.startSpan(`OpenAI Completions`, {
|
|
111
|
+
kind: api_1.SpanKind.INTERNAL,
|
|
112
|
+
attributes: Object.assign({ [openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND]: openinference_semantic_conventions_1.OpenInferenceSpanKind.LLM, [openinference_semantic_conventions_1.SemanticConventions.LLM_MODEL_NAME]: body.model, [openinference_semantic_conventions_1.SemanticConventions.LLM_INVOCATION_PARAMETERS]: JSON.stringify(invocationParameters) }, getCompletionInputValueAndMimeType(body)),
|
|
113
|
+
});
|
|
114
|
+
const execContext = api_1.trace.setSpan(api_1.context.active(), span);
|
|
115
|
+
const execPromise = (0, instrumentation_1.safeExecuteInTheMiddle)(() => {
|
|
116
|
+
return api_1.context.with(execContext, () => {
|
|
117
|
+
return original.apply(this, args);
|
|
118
|
+
});
|
|
119
|
+
}, (error) => {
|
|
120
|
+
// Push the error to the span
|
|
121
|
+
if (error) {
|
|
122
|
+
span.recordException(error);
|
|
123
|
+
span.setStatus({
|
|
124
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
125
|
+
message: error.message,
|
|
126
|
+
});
|
|
127
|
+
span.end();
|
|
128
|
+
}
|
|
129
|
+
});
|
|
130
|
+
const wrappedPromise = execPromise.then((result) => {
|
|
131
|
+
if (isCompletionResponse(result)) {
|
|
132
|
+
// Record the results
|
|
133
|
+
span.setAttributes(Object.assign(Object.assign({ [openinference_semantic_conventions_1.SemanticConventions.OUTPUT_VALUE]: JSON.stringify(result), [openinference_semantic_conventions_1.SemanticConventions.OUTPUT_MIME_TYPE]: openinference_semantic_conventions_1.MimeType.JSON,
|
|
134
|
+
// Override the model from the value sent by the server
|
|
135
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_MODEL_NAME]: result.model }, getCompletionOutputValueAndMimeType(result)), getUsageAttributes(result)));
|
|
136
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
137
|
+
span.end();
|
|
138
|
+
}
|
|
139
|
+
return result;
|
|
140
|
+
});
|
|
141
|
+
return api_1.context.bind(execContext, wrappedPromise);
|
|
142
|
+
};
|
|
143
|
+
});
|
|
144
|
+
this._wrap(module.OpenAI.Embeddings.prototype, "create",
|
|
145
|
+
// eslint-disable-next-line @typescript-eslint/no-explicit-any
|
|
146
|
+
(original) => {
|
|
147
|
+
return function patchedEmbeddingCreate(...args) {
|
|
148
|
+
const body = args[0];
|
|
149
|
+
const { input } = body;
|
|
150
|
+
const isStringInput = typeof input === "string";
|
|
151
|
+
const span = instrumentation.tracer.startSpan(`OpenAI Embeddings`, {
|
|
152
|
+
kind: api_1.SpanKind.INTERNAL,
|
|
153
|
+
attributes: Object.assign({ [openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND]: openinference_semantic_conventions_1.OpenInferenceSpanKind.EMBEDDING, [openinference_semantic_conventions_1.SemanticConventions.EMBEDDING_MODEL_NAME]: body.model, [openinference_semantic_conventions_1.SemanticConventions.INPUT_VALUE]: isStringInput
|
|
154
|
+
? input
|
|
155
|
+
: JSON.stringify(input), [openinference_semantic_conventions_1.SemanticConventions.INPUT_MIME_TYPE]: isStringInput
|
|
156
|
+
? openinference_semantic_conventions_1.MimeType.TEXT
|
|
157
|
+
: openinference_semantic_conventions_1.MimeType.JSON }, getEmbeddingTextAttributes(body)),
|
|
158
|
+
});
|
|
159
|
+
const execContext = api_1.trace.setSpan(api_1.context.active(), span);
|
|
160
|
+
const execPromise = (0, instrumentation_1.safeExecuteInTheMiddle)(() => {
|
|
161
|
+
return api_1.context.with(execContext, () => {
|
|
162
|
+
return original.apply(this, args);
|
|
163
|
+
});
|
|
164
|
+
}, (error) => {
|
|
165
|
+
// Push the error to the span
|
|
166
|
+
if (error) {
|
|
167
|
+
span.recordException(error);
|
|
168
|
+
span.setStatus({
|
|
169
|
+
code: api_1.SpanStatusCode.ERROR,
|
|
170
|
+
message: error.message,
|
|
171
|
+
});
|
|
172
|
+
span.end();
|
|
58
173
|
}
|
|
59
174
|
});
|
|
60
175
|
const wrappedPromise = execPromise.then((result) => {
|
|
61
176
|
if (result) {
|
|
62
177
|
// Record the results
|
|
63
|
-
span.setAttributes(Object.assign(
|
|
178
|
+
span.setAttributes(Object.assign({}, getEmbeddingEmbeddingsAttributes(result)));
|
|
64
179
|
}
|
|
65
180
|
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
66
181
|
span.end();
|
|
@@ -78,55 +193,244 @@ class OpenAIInstrumentation extends instrumentation_1.InstrumentationBase {
|
|
|
78
193
|
unpatch(moduleExports, moduleVersion) {
|
|
79
194
|
api_1.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`);
|
|
80
195
|
this._unwrap(moduleExports.OpenAI.Chat.Completions.prototype, "create");
|
|
196
|
+
this._unwrap(moduleExports.OpenAI.Embeddings.prototype, "create");
|
|
81
197
|
}
|
|
82
198
|
}
|
|
83
199
|
exports.OpenAIInstrumentation = OpenAIInstrumentation;
|
|
84
200
|
/**
|
|
85
|
-
*
|
|
201
|
+
* type-guard that checks if the response is a chat completion response
|
|
202
|
+
*/
|
|
203
|
+
function isChatCompletionResponse(response) {
|
|
204
|
+
return "choices" in response;
|
|
205
|
+
}
|
|
206
|
+
/**
|
|
207
|
+
* type-guard that checks if the response is a completion response
|
|
208
|
+
*/
|
|
209
|
+
function isCompletionResponse(response) {
|
|
210
|
+
return "choices" in response;
|
|
211
|
+
}
|
|
212
|
+
/**
|
|
213
|
+
* type-guard that checks if completion prompt attribute is an array of strings
|
|
214
|
+
*/
|
|
215
|
+
function isPromptStringArray(prompt) {
|
|
216
|
+
return (Array.isArray(prompt) && prompt.every((item) => typeof item === "string"));
|
|
217
|
+
}
|
|
218
|
+
/**
|
|
219
|
+
* Converts the body of a chat completions request to LLM input messages
|
|
86
220
|
*/
|
|
87
221
|
function getLLMInputMessagesAttributes(body) {
|
|
88
222
|
return body.messages.reduce((acc, message, index) => {
|
|
89
|
-
const
|
|
90
|
-
|
|
91
|
-
|
|
223
|
+
const messageAttributes = getChatCompletionInputMessageAttributes(message);
|
|
224
|
+
const indexPrefix = `${openinference_semantic_conventions_1.SemanticConventions.LLM_INPUT_MESSAGES}.${index}.`;
|
|
225
|
+
// Flatten the attributes on the index prefix
|
|
226
|
+
for (const [key, value] of Object.entries(messageAttributes)) {
|
|
227
|
+
acc[`${indexPrefix}${key}`] = value;
|
|
228
|
+
}
|
|
92
229
|
return acc;
|
|
93
230
|
}, {});
|
|
94
231
|
}
|
|
232
|
+
function getChatCompletionInputMessageAttributes(message) {
|
|
233
|
+
const role = message.role;
|
|
234
|
+
const attributes = {
|
|
235
|
+
[openinference_semantic_conventions_1.SemanticConventions.MESSAGE_ROLE]: role,
|
|
236
|
+
};
|
|
237
|
+
// Add the content only if it is a string
|
|
238
|
+
if (typeof message.content === "string")
|
|
239
|
+
attributes[openinference_semantic_conventions_1.SemanticConventions.MESSAGE_CONTENT] = message.content;
|
|
240
|
+
switch (role) {
|
|
241
|
+
case "user":
|
|
242
|
+
// There's nothing to add for the user
|
|
243
|
+
break;
|
|
244
|
+
case "assistant":
|
|
245
|
+
if (message.tool_calls) {
|
|
246
|
+
message.tool_calls.forEach((toolCall, index) => {
|
|
247
|
+
// Make sure the tool call has a function
|
|
248
|
+
if (toolCall.function) {
|
|
249
|
+
const toolCallIndexPrefix = `${openinference_semantic_conventions_1.SemanticConventions.MESSAGE_TOOL_CALLS}.${index}.`;
|
|
250
|
+
attributes[toolCallIndexPrefix + openinference_semantic_conventions_1.SemanticConventions.TOOL_CALL_FUNCTION_NAME] = toolCall.function.name;
|
|
251
|
+
attributes[toolCallIndexPrefix +
|
|
252
|
+
openinference_semantic_conventions_1.SemanticConventions.TOOL_CALL_FUNCTION_ARGUMENTS_JSON] = toolCall.function.arguments;
|
|
253
|
+
}
|
|
254
|
+
});
|
|
255
|
+
}
|
|
256
|
+
break;
|
|
257
|
+
case "function":
|
|
258
|
+
attributes[openinference_semantic_conventions_1.SemanticConventions.MESSAGE_FUNCTION_CALL_NAME] = message.name;
|
|
259
|
+
break;
|
|
260
|
+
case "tool":
|
|
261
|
+
// There's nothing to add for the tool. There is a tool_id, but there are no
|
|
262
|
+
// semantic conventions for it
|
|
263
|
+
break;
|
|
264
|
+
case "system":
|
|
265
|
+
// There's nothing to add for the system. Content is captured above
|
|
266
|
+
break;
|
|
267
|
+
default:
|
|
268
|
+
(0, typeUtils_1.assertUnreachable)(role);
|
|
269
|
+
break;
|
|
270
|
+
}
|
|
271
|
+
return attributes;
|
|
272
|
+
}
|
|
95
273
|
/**
|
|
96
|
-
*
|
|
274
|
+
* Converts the body of a completions request to input attributes
|
|
97
275
|
*/
|
|
98
|
-
function
|
|
99
|
-
if (
|
|
100
|
-
|
|
101
|
-
|
|
102
|
-
|
|
103
|
-
|
|
104
|
-
|
|
105
|
-
|
|
106
|
-
|
|
276
|
+
function getCompletionInputValueAndMimeType(body) {
|
|
277
|
+
if (typeof body.prompt === "string") {
|
|
278
|
+
return {
|
|
279
|
+
[openinference_semantic_conventions_1.SemanticConventions.INPUT_VALUE]: body.prompt,
|
|
280
|
+
[openinference_semantic_conventions_1.SemanticConventions.INPUT_MIME_TYPE]: openinference_semantic_conventions_1.MimeType.TEXT,
|
|
281
|
+
};
|
|
282
|
+
}
|
|
283
|
+
else if (isPromptStringArray(body.prompt)) {
|
|
284
|
+
const prompt = body.prompt[0]; // Only single prompts are currently supported
|
|
285
|
+
if (prompt === undefined) {
|
|
286
|
+
return {};
|
|
107
287
|
}
|
|
288
|
+
return {
|
|
289
|
+
[openinference_semantic_conventions_1.SemanticConventions.INPUT_VALUE]: prompt,
|
|
290
|
+
[openinference_semantic_conventions_1.SemanticConventions.INPUT_MIME_TYPE]: openinference_semantic_conventions_1.MimeType.TEXT,
|
|
291
|
+
};
|
|
108
292
|
}
|
|
293
|
+
// Other cases in which the prompt is a token or array of tokens are currently unsupported
|
|
109
294
|
return {};
|
|
110
295
|
}
|
|
111
296
|
/**
|
|
112
|
-
*
|
|
297
|
+
* Get usage attributes
|
|
113
298
|
*/
|
|
114
|
-
function
|
|
115
|
-
|
|
116
|
-
|
|
117
|
-
|
|
118
|
-
|
|
119
|
-
|
|
120
|
-
|
|
121
|
-
|
|
299
|
+
function getUsageAttributes(completion) {
|
|
300
|
+
if (completion.usage) {
|
|
301
|
+
return {
|
|
302
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_TOKEN_COUNT_COMPLETION]: completion.usage.completion_tokens,
|
|
303
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_TOKEN_COUNT_PROMPT]: completion.usage.prompt_tokens,
|
|
304
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_TOKEN_COUNT_TOTAL]: completion.usage.total_tokens,
|
|
305
|
+
};
|
|
306
|
+
}
|
|
307
|
+
return {};
|
|
308
|
+
}
|
|
309
|
+
/**
|
|
310
|
+
* Converts the chat completion result to LLM output attributes
|
|
311
|
+
*/
|
|
312
|
+
function getChatCompletionLLMOutputMessagesAttributes(chatCompletion) {
|
|
313
|
+
// Right now support just the first choice
|
|
314
|
+
const choice = chatCompletion.choices[0];
|
|
315
|
+
if (!choice) {
|
|
316
|
+
return {};
|
|
317
|
+
}
|
|
318
|
+
return [choice.message].reduce((acc, message, index) => {
|
|
319
|
+
const indexPrefix = `${openinference_semantic_conventions_1.SemanticConventions.LLM_OUTPUT_MESSAGES}.${index}.`;
|
|
320
|
+
const messageAttributes = getChatCompletionOutputMessageAttributes(message);
|
|
321
|
+
// Flatten the attributes on the index prefix
|
|
322
|
+
for (const [key, value] of Object.entries(messageAttributes)) {
|
|
323
|
+
acc[`${indexPrefix}${key}`] = value;
|
|
122
324
|
}
|
|
123
|
-
return
|
|
124
|
-
|
|
125
|
-
|
|
126
|
-
|
|
325
|
+
return acc;
|
|
326
|
+
}, {});
|
|
327
|
+
}
|
|
328
|
+
function getChatCompletionOutputMessageAttributes(message) {
|
|
329
|
+
const role = message.role;
|
|
330
|
+
const attributes = {
|
|
331
|
+
[openinference_semantic_conventions_1.SemanticConventions.MESSAGE_ROLE]: role,
|
|
332
|
+
};
|
|
333
|
+
if (message.content) {
|
|
334
|
+
attributes[openinference_semantic_conventions_1.SemanticConventions.MESSAGE_CONTENT] = message.content;
|
|
335
|
+
}
|
|
336
|
+
if (message.tool_calls) {
|
|
337
|
+
message.tool_calls.forEach((toolCall, index) => {
|
|
338
|
+
const toolCallIndexPrefix = `${openinference_semantic_conventions_1.SemanticConventions.MESSAGE_TOOL_CALLS}.${index}.`;
|
|
339
|
+
// Double check that the tool call has a function
|
|
340
|
+
// NB: OpenAI only supports tool calls with functions right now but this may change
|
|
341
|
+
if (toolCall.function) {
|
|
342
|
+
attributes[toolCallIndexPrefix + openinference_semantic_conventions_1.SemanticConventions.TOOL_CALL_FUNCTION_NAME] = toolCall.function.name;
|
|
343
|
+
attributes[toolCallIndexPrefix +
|
|
344
|
+
openinference_semantic_conventions_1.SemanticConventions.TOOL_CALL_FUNCTION_ARGUMENTS_JSON] = toolCall.function.arguments;
|
|
345
|
+
}
|
|
346
|
+
});
|
|
347
|
+
}
|
|
348
|
+
if (message.function_call) {
|
|
349
|
+
attributes[openinference_semantic_conventions_1.SemanticConventions.MESSAGE_FUNCTION_CALL_NAME] =
|
|
350
|
+
message.function_call.name;
|
|
351
|
+
attributes[openinference_semantic_conventions_1.SemanticConventions.MESSAGE_FUNCTION_CALL_ARGUMENTS_JSON] =
|
|
352
|
+
message.function_call.arguments;
|
|
353
|
+
}
|
|
354
|
+
return attributes;
|
|
355
|
+
}
|
|
356
|
+
/**
|
|
357
|
+
* Converts the completion result to output attributes
|
|
358
|
+
*/
|
|
359
|
+
function getCompletionOutputValueAndMimeType(completion) {
|
|
360
|
+
// Right now support just the first choice
|
|
361
|
+
const choice = completion.choices[0];
|
|
362
|
+
if (!choice) {
|
|
363
|
+
return {};
|
|
364
|
+
}
|
|
365
|
+
return {
|
|
366
|
+
[openinference_semantic_conventions_1.SemanticConventions.OUTPUT_VALUE]: String(choice.text),
|
|
367
|
+
[openinference_semantic_conventions_1.SemanticConventions.OUTPUT_MIME_TYPE]: openinference_semantic_conventions_1.MimeType.TEXT,
|
|
368
|
+
};
|
|
369
|
+
}
|
|
370
|
+
/**
|
|
371
|
+
* Converts the embedding result payload to embedding attributes
|
|
372
|
+
*/
|
|
373
|
+
function getEmbeddingTextAttributes(request) {
|
|
374
|
+
if (typeof request.input === "string") {
|
|
375
|
+
return {
|
|
376
|
+
[`${openinference_semantic_conventions_1.SemanticConventions.EMBEDDING_EMBEDDINGS}.0.${openinference_semantic_conventions_1.SemanticConventions.EMBEDDING_TEXT}`]: request.input,
|
|
377
|
+
};
|
|
378
|
+
}
|
|
379
|
+
else if (Array.isArray(request.input) &&
|
|
380
|
+
request.input.length > 0 &&
|
|
381
|
+
typeof request.input[0] === "string") {
|
|
382
|
+
return request.input.reduce((acc, input, index) => {
|
|
383
|
+
const indexPrefix = `${openinference_semantic_conventions_1.SemanticConventions.EMBEDDING_EMBEDDINGS}.${index}.`;
|
|
384
|
+
acc[`${indexPrefix}${openinference_semantic_conventions_1.SemanticConventions.EMBEDDING_TEXT}`] = input;
|
|
127
385
|
return acc;
|
|
128
386
|
}, {});
|
|
129
387
|
}
|
|
388
|
+
// Ignore other cases where input is a number or an array of numbers
|
|
130
389
|
return {};
|
|
131
390
|
}
|
|
391
|
+
/**
|
|
392
|
+
* Converts the embedding result payload to embedding attributes
|
|
393
|
+
*/
|
|
394
|
+
function getEmbeddingEmbeddingsAttributes(response) {
|
|
395
|
+
return response.data.reduce((acc, embedding, index) => {
|
|
396
|
+
const indexPrefix = `${openinference_semantic_conventions_1.SemanticConventions.EMBEDDING_EMBEDDINGS}.${index}.`;
|
|
397
|
+
acc[`${indexPrefix}${openinference_semantic_conventions_1.SemanticConventions.EMBEDDING_VECTOR}`] =
|
|
398
|
+
embedding.embedding;
|
|
399
|
+
return acc;
|
|
400
|
+
}, {});
|
|
401
|
+
}
|
|
402
|
+
/**
|
|
403
|
+
* Consumes the stream chunks and adds them to the span
|
|
404
|
+
*/
|
|
405
|
+
function consumeChatCompletionStreamChunks(stream, span) {
|
|
406
|
+
var _a, stream_1, stream_1_1;
|
|
407
|
+
var _b, e_1, _c, _d;
|
|
408
|
+
return __awaiter(this, void 0, void 0, function* () {
|
|
409
|
+
let streamResponse = "";
|
|
410
|
+
try {
|
|
411
|
+
for (_a = true, stream_1 = __asyncValues(stream); stream_1_1 = yield stream_1.next(), _b = stream_1_1.done, !_b; _a = true) {
|
|
412
|
+
_d = stream_1_1.value;
|
|
413
|
+
_a = false;
|
|
414
|
+
const chunk = _d;
|
|
415
|
+
if (chunk.choices.length > 0 && chunk.choices[0].delta.content) {
|
|
416
|
+
streamResponse += chunk.choices[0].delta.content;
|
|
417
|
+
}
|
|
418
|
+
}
|
|
419
|
+
}
|
|
420
|
+
catch (e_1_1) { e_1 = { error: e_1_1 }; }
|
|
421
|
+
finally {
|
|
422
|
+
try {
|
|
423
|
+
if (!_a && !_b && (_c = stream_1.return)) yield _c.call(stream_1);
|
|
424
|
+
}
|
|
425
|
+
finally { if (e_1) throw e_1.error; }
|
|
426
|
+
}
|
|
427
|
+
span.setAttributes({
|
|
428
|
+
[openinference_semantic_conventions_1.SemanticConventions.OUTPUT_VALUE]: streamResponse,
|
|
429
|
+
[openinference_semantic_conventions_1.SemanticConventions.OUTPUT_MIME_TYPE]: openinference_semantic_conventions_1.MimeType.TEXT,
|
|
430
|
+
[`${openinference_semantic_conventions_1.SemanticConventions.LLM_OUTPUT_MESSAGES}.0.${openinference_semantic_conventions_1.SemanticConventions.MESSAGE_CONTENT}`]: streamResponse,
|
|
431
|
+
[`${openinference_semantic_conventions_1.SemanticConventions.LLM_OUTPUT_MESSAGES}.0.${openinference_semantic_conventions_1.SemanticConventions.MESSAGE_ROLE}`]: "assistant",
|
|
432
|
+
});
|
|
433
|
+
span.end();
|
|
434
|
+
});
|
|
435
|
+
}
|
|
132
436
|
//# 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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"}
|
|
@@ -0,0 +1,8 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Utility function that uses the type system to check if a switch statement is exhaustive.
|
|
3
|
+
* If the switch statement is not exhaustive, there will be a type error caught in typescript
|
|
4
|
+
*
|
|
5
|
+
* See https://stackoverflow.com/questions/39419170/how-do-i-check-that-a-switch-block-is-exhaustive-in-typescript for more details.
|
|
6
|
+
*/
|
|
7
|
+
export declare function assertUnreachable(_: never): never;
|
|
8
|
+
//# sourceMappingURL=typeUtils.d.ts.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.d.ts","sourceRoot":"","sources":["../../src/typeUtils.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AACH,wBAAgB,iBAAiB,CAAC,CAAC,EAAE,KAAK,GAAG,KAAK,CAEjD"}
|
|
@@ -0,0 +1,14 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
|
+
exports.assertUnreachable = void 0;
|
|
4
|
+
/**
|
|
5
|
+
* Utility function that uses the type system to check if a switch statement is exhaustive.
|
|
6
|
+
* If the switch statement is not exhaustive, there will be a type error caught in typescript
|
|
7
|
+
*
|
|
8
|
+
* See https://stackoverflow.com/questions/39419170/how-do-i-check-that-a-switch-block-is-exhaustive-in-typescript for more details.
|
|
9
|
+
*/
|
|
10
|
+
function assertUnreachable(_) {
|
|
11
|
+
throw new Error("Unreachable");
|
|
12
|
+
}
|
|
13
|
+
exports.assertUnreachable = assertUnreachable;
|
|
14
|
+
//# sourceMappingURL=typeUtils.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"typeUtils.js","sourceRoot":"","sources":["../../src/typeUtils.ts"],"names":[],"mappings":";;;AAAA;;;;;GAKG;AACH,SAAgB,iBAAiB,CAAC,CAAQ;IACxC,MAAM,IAAI,KAAK,CAAC,aAAa,CAAC,CAAC;AACjC,CAAC;AAFD,8CAEC"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.0
|
|
1
|
+
export declare const VERSION = "0.1.0";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
package/dist/src/version.js
CHANGED