@arizeai/openinference-instrumentation-openai 0.0.1-rc9 → 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.
- package/README.md +30 -1
- package/dist/esm/instrumentation.d.ts +6 -0
- package/dist/esm/instrumentation.d.ts.map +1 -1
- package/dist/esm/instrumentation.js +75 -8
- package/dist/esm/instrumentation.js.map +1 -1
- package/dist/esm/tsconfig.esm.tsbuildinfo +1 -1
- package/dist/esm/version.d.ts +1 -1
- package/dist/esm/version.d.ts.map +1 -1
- package/dist/esm/version.js +1 -1
- package/dist/esm/version.js.map +1 -1
- package/dist/esnext/instrumentation.d.ts +6 -0
- package/dist/esnext/instrumentation.d.ts.map +1 -1
- package/dist/esnext/instrumentation.js +73 -8
- package/dist/esnext/instrumentation.js.map +1 -1
- package/dist/esnext/tsconfig.esnext.tsbuildinfo +1 -1
- package/dist/esnext/version.d.ts +1 -1
- package/dist/esnext/version.d.ts.map +1 -1
- package/dist/esnext/version.js +1 -1
- package/dist/esnext/version.js.map +1 -1
- package/dist/src/instrumentation.d.ts +6 -0
- package/dist/src/instrumentation.d.ts.map +1 -1
- package/dist/src/instrumentation.js +71 -6
- package/dist/src/instrumentation.js.map +1 -1
- package/dist/src/version.d.ts +1 -1
- package/dist/src/version.d.ts.map +1 -1
- package/dist/src/version.js +1 -1
- package/dist/src/version.js.map +1 -1
- package/dist/test/openai.test.js +53 -1
- package/dist/test/openai.test.js.map +1 -1
- package/dist/tsconfig.tsbuildinfo +1 -1
- package/package.json +2 -2
- package/src/instrumentation.ts +92 -8
- package/src/version.ts +1 -1
package/dist/esnext/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.0.
|
|
1
|
+
export declare const VERSION = "0.0.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/esnext/version.js
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AAAA,mEAAmE;AACnE,MAAM,CAAC,MAAM,OAAO,GAAG,OAAO,CAAC"}
|
|
@@ -3,7 +3,13 @@ import { InstrumentationBase, InstrumentationConfig, InstrumentationModuleDefini
|
|
|
3
3
|
export declare class OpenAIInstrumentation extends InstrumentationBase<typeof openai> {
|
|
4
4
|
constructor(config?: InstrumentationConfig);
|
|
5
5
|
protected init(): InstrumentationModuleDefinition<typeof openai>;
|
|
6
|
+
/**
|
|
7
|
+
* Patches the OpenAI module
|
|
8
|
+
*/
|
|
6
9
|
private patch;
|
|
10
|
+
/**
|
|
11
|
+
* Un-patches the OpenAI module's chat completions API
|
|
12
|
+
*/
|
|
7
13
|
private unpatch;
|
|
8
14
|
}
|
|
9
15
|
//# sourceMappingURL=instrumentation.d.ts.map
|
|
@@ -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;
|
|
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,4 +1,15 @@
|
|
|
1
1
|
"use strict";
|
|
2
|
+
var __rest = (this && this.__rest) || function (s, e) {
|
|
3
|
+
var t = {};
|
|
4
|
+
for (var p in s) if (Object.prototype.hasOwnProperty.call(s, p) && e.indexOf(p) < 0)
|
|
5
|
+
t[p] = s[p];
|
|
6
|
+
if (s != null && typeof Object.getOwnPropertySymbols === "function")
|
|
7
|
+
for (var i = 0, p = Object.getOwnPropertySymbols(s); i < p.length; i++) {
|
|
8
|
+
if (e.indexOf(p[i]) < 0 && Object.prototype.propertyIsEnumerable.call(s, p[i]))
|
|
9
|
+
t[p[i]] = s[p[i]];
|
|
10
|
+
}
|
|
11
|
+
return t;
|
|
12
|
+
};
|
|
2
13
|
Object.defineProperty(exports, "__esModule", { value: true });
|
|
3
14
|
exports.OpenAIInstrumentation = void 0;
|
|
4
15
|
const instrumentation_1 = require("@opentelemetry/instrumentation");
|
|
@@ -14,19 +25,23 @@ class OpenAIInstrumentation extends instrumentation_1.InstrumentationBase {
|
|
|
14
25
|
const module = new instrumentation_1.InstrumentationNodeModuleDefinition("openai", ["^4.0.0"], this.patch.bind(this), this.unpatch.bind(this));
|
|
15
26
|
return module;
|
|
16
27
|
}
|
|
28
|
+
/**
|
|
29
|
+
* Patches the OpenAI module
|
|
30
|
+
*/
|
|
17
31
|
patch(module, moduleVersion) {
|
|
18
|
-
|
|
19
|
-
const plugin = this;
|
|
32
|
+
api_1.diag.debug(`Applying patch for ${MODULE_NAME}@${moduleVersion}`);
|
|
20
33
|
if (module === null || module === void 0 ? void 0 : module.openInferencePatched) {
|
|
21
34
|
return module;
|
|
22
35
|
}
|
|
23
36
|
const instrumentation = this;
|
|
37
|
+
// Patch create chat completions
|
|
24
38
|
this._wrap(module.OpenAI.Chat.Completions.prototype, "create", (original) => {
|
|
25
39
|
return function patchedCreate(...args) {
|
|
26
40
|
const body = args[0];
|
|
41
|
+
const { messages } = body, invocationParameters = __rest(body, ["messages"]);
|
|
27
42
|
const span = instrumentation.tracer.startSpan(`OpenAI Chat Completions`, {
|
|
28
43
|
kind: api_1.SpanKind.CLIENT,
|
|
29
|
-
attributes: Object.assign({ [openinference_semantic_conventions_1.SemanticConventions.OPENINFERENCE_SPAN_KIND]: openinference_semantic_conventions_1.OpenInferenceSpanKind.LLM }, getLLMInputMessagesAttributes(body)),
|
|
44
|
+
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)),
|
|
30
45
|
});
|
|
31
46
|
const execContext = api_1.trace.setSpan(api_1.context.active(), span);
|
|
32
47
|
const execPromise = (0, instrumentation_1.safeExecuteInTheMiddle)(() => {
|
|
@@ -34,10 +49,17 @@ class OpenAIInstrumentation extends instrumentation_1.InstrumentationBase {
|
|
|
34
49
|
return original.apply(this, args);
|
|
35
50
|
});
|
|
36
51
|
}, (error) => {
|
|
37
|
-
//
|
|
52
|
+
// Push the error to the span
|
|
53
|
+
if (error) {
|
|
54
|
+
span.recordException(error);
|
|
55
|
+
}
|
|
38
56
|
});
|
|
39
57
|
const wrappedPromise = execPromise.then((result) => {
|
|
40
|
-
|
|
58
|
+
if (result) {
|
|
59
|
+
// Record the results
|
|
60
|
+
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 }, getLLMOutputMessagesAttributes(result)), getUsageAttributes(result)));
|
|
61
|
+
}
|
|
62
|
+
span.setStatus({ code: api_1.SpanStatusCode.OK });
|
|
41
63
|
span.end();
|
|
42
64
|
return result;
|
|
43
65
|
});
|
|
@@ -47,13 +69,17 @@ class OpenAIInstrumentation extends instrumentation_1.InstrumentationBase {
|
|
|
47
69
|
module.openInferencePatched = true;
|
|
48
70
|
return module;
|
|
49
71
|
}
|
|
72
|
+
/**
|
|
73
|
+
* Un-patches the OpenAI module's chat completions API
|
|
74
|
+
*/
|
|
50
75
|
unpatch(moduleExports, moduleVersion) {
|
|
51
76
|
api_1.diag.debug(`Removing patch for ${MODULE_NAME}@${moduleVersion}`);
|
|
77
|
+
this._unwrap(moduleExports.OpenAI.Chat.Completions.prototype, "create");
|
|
52
78
|
}
|
|
53
79
|
}
|
|
54
80
|
exports.OpenAIInstrumentation = OpenAIInstrumentation;
|
|
55
81
|
/**
|
|
56
|
-
* Converts the body input
|
|
82
|
+
* Converts the body of the request to LLM input messages
|
|
57
83
|
*/
|
|
58
84
|
function getLLMInputMessagesAttributes(body) {
|
|
59
85
|
return body.messages.reduce((acc, message, index) => {
|
|
@@ -63,4 +89,43 @@ function getLLMInputMessagesAttributes(body) {
|
|
|
63
89
|
return acc;
|
|
64
90
|
}, {});
|
|
65
91
|
}
|
|
92
|
+
/**
|
|
93
|
+
* Get Usage attributes
|
|
94
|
+
*/
|
|
95
|
+
function getUsageAttributes(response) {
|
|
96
|
+
if (response.hasOwnProperty("usage")) {
|
|
97
|
+
const completion = response;
|
|
98
|
+
if (completion.usage) {
|
|
99
|
+
return {
|
|
100
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_TOKEN_COUNT_COMPLETION]: completion.usage.completion_tokens,
|
|
101
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_TOKEN_COUNT_PROMPT]: completion.usage.prompt_tokens,
|
|
102
|
+
[openinference_semantic_conventions_1.SemanticConventions.LLM_TOKEN_COUNT_TOTAL]: completion.usage.total_tokens,
|
|
103
|
+
};
|
|
104
|
+
}
|
|
105
|
+
}
|
|
106
|
+
return {};
|
|
107
|
+
}
|
|
108
|
+
/**
|
|
109
|
+
* Converts the result to LLM output attributes
|
|
110
|
+
*/
|
|
111
|
+
function getLLMOutputMessagesAttributes(response) {
|
|
112
|
+
// Handle chat completion
|
|
113
|
+
if (response.hasOwnProperty("choices")) {
|
|
114
|
+
const completion = response;
|
|
115
|
+
// Right now support just the first choice
|
|
116
|
+
const choice = completion.choices[0];
|
|
117
|
+
if (!choice) {
|
|
118
|
+
return {};
|
|
119
|
+
}
|
|
120
|
+
return [choice.message].reduce((acc, message, index) => {
|
|
121
|
+
const index_prefix = `${openinference_semantic_conventions_1.SemanticConventions.LLM_OUTPUT_MESSAGES}.${index}`;
|
|
122
|
+
acc[`${index_prefix}.${openinference_semantic_conventions_1.SemanticConventions.MESSAGE_CONTENT}`] =
|
|
123
|
+
String(message.content);
|
|
124
|
+
acc[`${index_prefix}.${openinference_semantic_conventions_1.SemanticConventions.MESSAGE_ROLE}`] =
|
|
125
|
+
message.role;
|
|
126
|
+
return acc;
|
|
127
|
+
}, {});
|
|
128
|
+
}
|
|
129
|
+
return {};
|
|
130
|
+
}
|
|
66
131
|
//# sourceMappingURL=instrumentation.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"
|
|
1
|
+
{"version":3,"file":"instrumentation.js","sourceRoot":"","sources":["../../src/instrumentation.ts"],"names":[],"mappings":"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"}
|
package/dist/src/version.d.ts
CHANGED
|
@@ -1,2 +1,2 @@
|
|
|
1
|
-
export declare const VERSION = "0.0.
|
|
1
|
+
export declare const VERSION = "0.0.2";
|
|
2
2
|
//# sourceMappingURL=version.d.ts.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,
|
|
1
|
+
{"version":3,"file":"version.d.ts","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":"AACA,eAAO,MAAM,OAAO,UAAU,CAAC"}
|
package/dist/src/version.js
CHANGED
package/dist/src/version.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,mEAAmE;AACtD,QAAA,OAAO,GAAG,
|
|
1
|
+
{"version":3,"file":"version.js","sourceRoot":"","sources":["../../src/version.ts"],"names":[],"mappings":";;;AAAA,mEAAmE;AACtD,QAAA,OAAO,GAAG,OAAO,CAAC"}
|
package/dist/test/openai.test.js
CHANGED
|
@@ -59,20 +59,72 @@ describe("OpenAIInstrumentation", () => {
|
|
|
59
59
|
instrumentation._modules[0].moduleExports = OpenAI;
|
|
60
60
|
instrumentation.enable();
|
|
61
61
|
openai = new OpenAI.OpenAI({
|
|
62
|
-
apiKey:
|
|
62
|
+
apiKey: `fake-api-key`,
|
|
63
63
|
});
|
|
64
64
|
memoryExporter.reset();
|
|
65
65
|
});
|
|
66
|
+
afterEach(() => {
|
|
67
|
+
instrumentation.disable();
|
|
68
|
+
jest.clearAllMocks();
|
|
69
|
+
});
|
|
66
70
|
it("is patched", () => {
|
|
67
71
|
expect(OpenAI.openInferencePatched).toBe(true);
|
|
68
72
|
});
|
|
69
73
|
it("creates a span for chat completions", () => __awaiter(void 0, void 0, void 0, function* () {
|
|
74
|
+
const response = {
|
|
75
|
+
id: "chatcmpl-8adq9JloOzNZ9TyuzrKyLpGXexh6p",
|
|
76
|
+
object: "chat.completion",
|
|
77
|
+
created: 1703743645,
|
|
78
|
+
model: "gpt-3.5-turbo-0613",
|
|
79
|
+
choices: [
|
|
80
|
+
{
|
|
81
|
+
index: 0,
|
|
82
|
+
message: {
|
|
83
|
+
role: "assistant",
|
|
84
|
+
content: "This is a test.",
|
|
85
|
+
},
|
|
86
|
+
logprobs: null,
|
|
87
|
+
finish_reason: "stop",
|
|
88
|
+
},
|
|
89
|
+
],
|
|
90
|
+
usage: {
|
|
91
|
+
prompt_tokens: 12,
|
|
92
|
+
completion_tokens: 5,
|
|
93
|
+
total_tokens: 17,
|
|
94
|
+
},
|
|
95
|
+
};
|
|
96
|
+
// Mock out the chat completions endpoint
|
|
97
|
+
jest.spyOn(openai, "post").mockImplementation(
|
|
98
|
+
// @ts-expect-error
|
|
99
|
+
() => __awaiter(void 0, void 0, void 0, function* () {
|
|
100
|
+
return response;
|
|
101
|
+
}));
|
|
70
102
|
const chatCompletion = yield openai.chat.completions.create({
|
|
71
103
|
messages: [{ role: "user", content: "Say this is a test" }],
|
|
72
104
|
model: "gpt-3.5-turbo",
|
|
73
105
|
});
|
|
74
106
|
const spans = memoryExporter.getFinishedSpans();
|
|
75
107
|
expect(spans.length).toBe(1);
|
|
108
|
+
const span = spans[0];
|
|
109
|
+
expect(span.name).toBe("OpenAI Chat Completions");
|
|
110
|
+
expect(span.attributes).toMatchInlineSnapshot(`
|
|
111
|
+
{
|
|
112
|
+
"input.mime_type": "application/json",
|
|
113
|
+
"input.value": "{"messages":[{"role":"user","content":"Say this is a test"}],"model":"gpt-3.5-turbo"}",
|
|
114
|
+
"llm.input_messages.0.message.content": "Say this is a test",
|
|
115
|
+
"llm.input_messages.0.message.role": "user",
|
|
116
|
+
"llm.invocation_parameters": "{"model":"gpt-3.5-turbo"}",
|
|
117
|
+
"llm.model_name": "gpt-3.5-turbo",
|
|
118
|
+
"llm.output_messages.0.message.content": "This is a test.",
|
|
119
|
+
"llm.output_messages.0.message.role": "assistant",
|
|
120
|
+
"llm.token_count.completion": 5,
|
|
121
|
+
"llm.token_count.prompt": 12,
|
|
122
|
+
"llm.token_count.total": 17,
|
|
123
|
+
"openinference.span.kind": "llm",
|
|
124
|
+
"output.mime_type": "application/json",
|
|
125
|
+
"output.value": "{"id":"chatcmpl-8adq9JloOzNZ9TyuzrKyLpGXexh6p","object":"chat.completion","created":1703743645,"model":"gpt-3.5-turbo-0613","choices":[{"index":0,"message":{"role":"assistant","content":"This is a test."},"logprobs":null,"finish_reason":"stop"}],"usage":{"prompt_tokens":12,"completion_tokens":5,"total_tokens":17}}",
|
|
126
|
+
}
|
|
127
|
+
`);
|
|
76
128
|
}));
|
|
77
129
|
});
|
|
78
130
|
//# sourceMappingURL=openai.test.js.map
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"openai.test.js","sourceRoot":"","sources":["../../test/openai.test.ts"],"names":[],"mappings":";;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;AAAA,gCAA+C;AAC/C,kEAGuC;AACvC,kEAAmE;AACnE,wDAAoD;AACpD,8EAAiF;AACjF,MAAM,cAAc,GAAG,IAAI,mCAAkB,EAAE,CAAC;AAChD,cAAc,CAAC,QAAQ,EAAE,CAAC;AAC1B,MAAM,cAAc,GAAG,IAAI,qCAAoB,EAAE,CAAC;AAClD,MAAM,MAAM,GAAG,cAAc,CAAC,SAAS,CAAC,SAAS,CAAC,CAAC;AACnD,MAAM,QAAQ,GAAG,IAAI,oBAAQ,CAAC;
|
|
1
|
+
{"version":3,"file":"openai.test.js","sourceRoot":"","sources":["../../test/openai.test.ts"],"names":[],"mappings":"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"}
|