openlit 1.7.0 → 1.8.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/README.md +15 -11
- package/dist/helpers.d.ts +10 -0
- package/dist/helpers.js +114 -7
- package/dist/helpers.js.map +1 -1
- package/dist/instrumentation/__tests__/anthropic-wrapper.test.js +1 -1
- package/dist/instrumentation/__tests__/anthropic-wrapper.test.js.map +1 -1
- package/dist/instrumentation/__tests__/base-wrapper.test.js +1 -1
- package/dist/instrumentation/__tests__/base-wrapper.test.js.map +1 -1
- package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.d.ts +4 -0
- package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js +99 -0
- package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/groq-trace-comparison.test.d.ts +7 -0
- package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +180 -0
- package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/mistral-trace-comparison.test.d.ts +4 -0
- package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js +127 -0
- package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/openai-wrapper.test.js +81 -18
- package/dist/instrumentation/__tests__/openai-wrapper.test.js.map +1 -1
- package/dist/instrumentation/__tests__/together-trace-comparison.test.d.ts +4 -0
- package/dist/instrumentation/__tests__/together-trace-comparison.test.js +98 -0
- package/dist/instrumentation/__tests__/together-trace-comparison.test.js.map +1 -0
- package/dist/instrumentation/__tests__/trace-comparison-utils.d.ts +66 -0
- package/dist/instrumentation/__tests__/trace-comparison-utils.js +245 -0
- package/dist/instrumentation/__tests__/trace-comparison-utils.js.map +1 -0
- package/dist/instrumentation/anthropic/index.js +6 -4
- package/dist/instrumentation/anthropic/index.js.map +1 -1
- package/dist/instrumentation/anthropic/wrapper.js +12 -30
- package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
- package/dist/instrumentation/base-wrapper.js +2 -2
- package/dist/instrumentation/base-wrapper.js.map +1 -1
- package/dist/instrumentation/cohere/wrapper.js +8 -10
- package/dist/instrumentation/cohere/wrapper.js.map +1 -1
- package/dist/instrumentation/google-ai/index.d.ts +11 -0
- package/dist/instrumentation/google-ai/index.js +48 -0
- package/dist/instrumentation/google-ai/index.js.map +1 -0
- package/dist/instrumentation/google-ai/wrapper.d.ts +34 -0
- package/dist/instrumentation/google-ai/wrapper.js +241 -0
- package/dist/instrumentation/google-ai/wrapper.js.map +1 -0
- package/dist/instrumentation/groq/index.d.ts +11 -0
- package/dist/instrumentation/groq/index.js +43 -0
- package/dist/instrumentation/groq/index.js.map +1 -0
- package/dist/instrumentation/groq/wrapper.d.ts +33 -0
- package/dist/instrumentation/groq/wrapper.js +289 -0
- package/dist/instrumentation/groq/wrapper.js.map +1 -0
- package/dist/instrumentation/index.js +10 -0
- package/dist/instrumentation/index.js.map +1 -1
- package/dist/instrumentation/mistral/index.d.ts +11 -0
- package/dist/instrumentation/mistral/index.js +66 -0
- package/dist/instrumentation/mistral/index.js.map +1 -0
- package/dist/instrumentation/mistral/wrapper.d.ts +34 -0
- package/dist/instrumentation/mistral/wrapper.js +340 -0
- package/dist/instrumentation/mistral/wrapper.js.map +1 -0
- package/dist/instrumentation/ollama/wrapper.d.ts +11 -3
- package/dist/instrumentation/ollama/wrapper.js +60 -95
- package/dist/instrumentation/ollama/wrapper.js.map +1 -1
- package/dist/instrumentation/openai/index.js +11 -0
- package/dist/instrumentation/openai/index.js.map +1 -1
- package/dist/instrumentation/openai/wrapper.d.ts +30 -1
- package/dist/instrumentation/openai/wrapper.js +419 -61
- package/dist/instrumentation/openai/wrapper.js.map +1 -1
- package/dist/instrumentation/together/index.d.ts +11 -0
- package/dist/instrumentation/together/index.js +43 -0
- package/dist/instrumentation/together/index.js.map +1 -0
- package/dist/instrumentation/together/wrapper.d.ts +33 -0
- package/dist/instrumentation/together/wrapper.js +271 -0
- package/dist/instrumentation/together/wrapper.js.map +1 -0
- package/dist/otel/__tests__/metrics.test.js +5 -5
- package/dist/otel/__tests__/metrics.test.js.map +1 -1
- package/dist/semantic-convention.d.ts +34 -3
- package/dist/semantic-convention.js +50 -14
- package/dist/semantic-convention.js.map +1 -1
- package/dist/types.d.ts +1 -1
- package/package.json +1 -1
package/README.md
CHANGED
|
@@ -24,19 +24,25 @@ This project proudly follows and maintains the [Semantic Conventions](https://gi
|
|
|
24
24
|
|
|
25
25
|
## ⚡ Features
|
|
26
26
|
|
|
27
|
-
- 🔎 **Auto Instrumentation**: Works with
|
|
27
|
+
- 🔎 **Auto Instrumentation**: Works with 8 LLM providers with just one line of code.
|
|
28
28
|
- 🔭 **OpenTelemetry-Native Observability SDKs**: Vendor-neutral SDKs that can send traces and metrics to your existing observability tool like Prometheus and Jaeger.
|
|
29
29
|
- 💲 **Cost Tracking for Custom and Fine-Tuned Models**: Pass custom pricing files for accurate budgeting of custom and fine-tuned models.
|
|
30
|
-
- 🚀 **
|
|
30
|
+
- 🚀 **Support for OpenLIT Features**: Includes support for prompt management and secrets management features available in OpenLIT.
|
|
31
31
|
|
|
32
32
|
|
|
33
33
|
## Auto Instrumentation Capabilities
|
|
34
34
|
|
|
35
|
-
| LLMs
|
|
36
|
-
|
|
|
37
|
-
| [✅ OpenAI](https://docs.openlit.io/latest/integrations/openai)
|
|
38
|
-
| [✅ Anthropic](https://docs.openlit.io/latest/integrations/anthropic)
|
|
39
|
-
| [✅ Cohere](https://docs.openlit.io/latest/integrations/cohere)
|
|
35
|
+
| LLMs |
|
|
36
|
+
| ------------------------------------------------------------------------------------------- |
|
|
37
|
+
| [✅ OpenAI](https://docs.openlit.io/latest/integrations/openai) |
|
|
38
|
+
| [✅ Anthropic](https://docs.openlit.io/latest/integrations/anthropic) |
|
|
39
|
+
| [✅ Cohere](https://docs.openlit.io/latest/integrations/cohere) |
|
|
40
|
+
| [✅ Groq](https://docs.openlit.io/latest/integrations/groq) |
|
|
41
|
+
| [✅ Mistral](https://docs.openlit.io/latest/integrations/mistral) |
|
|
42
|
+
| [✅ Google AI Studio](https://docs.openlit.io/latest/integrations/google-ai-studio) |
|
|
43
|
+
| [✅ Together AI](https://docs.openlit.io/latest/integrations/together) |
|
|
44
|
+
| [✅ Ollama](https://docs.openlit.io/latest/integrations/ollama) |
|
|
45
|
+
| [✅ Azure OpenAI](https://docs.openlit.io/latest/integrations/azure-openai) *(via OpenAI SDK)* |
|
|
40
46
|
|
|
41
47
|
## Supported Destinations
|
|
42
48
|
|
|
@@ -56,9 +62,7 @@ This project proudly follows and maintains the [Semantic Conventions](https://gi
|
|
|
56
62
|
|
|
57
63
|
## Supported Metrics
|
|
58
64
|
|
|
59
|
-
|
|
60
|
-
|
|
61
|
-
The following metrics are supported:
|
|
65
|
+
The following metrics are supported across all integrations:
|
|
62
66
|
|
|
63
67
|
- **genaiClientUsageTokens**: Histogram for total input/output tokens used.
|
|
64
68
|
- **genaiClientOperationDuration**: Histogram for GenAI operation duration.
|
|
@@ -161,7 +165,7 @@ Now that your LLM observability data is being collected and sent to configured O
|
|
|
161
165
|
|
|
162
166
|
If you want to use OpenLIT's Observability Dashboard to monitor LLM usage—like cost, tokens, and user interactions—please check out our [Quickstart Guide](https://docs.openlit.io/latest/quickstart).
|
|
163
167
|
|
|
164
|
-
If you're sending metrics and traces to other observability tools, take a look at our [Connections Guide](https://docs.openlit.io/latest/
|
|
168
|
+
If you're sending metrics and traces to other observability tools, take a look at our [Connections Guide](https://docs.openlit.io/latest/destinations/intro) to start using a pre-built dashboard we have created for these tools.
|
|
165
169
|
|
|
166
170
|

|
|
167
171
|
|
package/dist/helpers.d.ts
CHANGED
|
@@ -8,6 +8,16 @@ export default class OpenLitHelper {
|
|
|
8
8
|
static getImageModelCost(model: string, pricingInfo: any, size: string, quality: number): number;
|
|
9
9
|
static getAudioModelCost(model: string, pricingInfo: any, prompt: string): number;
|
|
10
10
|
static fetchPricingInfo(pricingJson: any): Promise<any>;
|
|
11
|
+
/**
|
|
12
|
+
* Build OTel-spec input messages JSON string from provider messages array.
|
|
13
|
+
* Format: [{"role": "user", "parts": [{"type": "text", "content": "..."}]}]
|
|
14
|
+
*/
|
|
15
|
+
static buildInputMessages(messages: any[], system?: string): string;
|
|
16
|
+
/**
|
|
17
|
+
* Build OTel-spec output messages JSON string from provider response.
|
|
18
|
+
* Format: [{"role": "assistant", "parts": [{"type": "text", "content": "..."}], "finish_reason": "stop"}]
|
|
19
|
+
*/
|
|
20
|
+
static buildOutputMessages(text: string, finishReason: string, toolCalls?: any[]): string;
|
|
11
21
|
static handleException(span: Span, error: Error): void;
|
|
12
22
|
static createStreamProxy(stream: any, generatorFuncResponse: any): Promise<any>;
|
|
13
23
|
}
|
package/dist/helpers.js
CHANGED
|
@@ -8,9 +8,8 @@ class OpenLitHelper {
|
|
|
8
8
|
const encoding = (0, js_tiktoken_1.encodingForModel)(model);
|
|
9
9
|
return encoding.encode(text).length;
|
|
10
10
|
}
|
|
11
|
-
catch
|
|
12
|
-
|
|
13
|
-
throw error;
|
|
11
|
+
catch {
|
|
12
|
+
return OpenLitHelper.generalTokens(text);
|
|
14
13
|
}
|
|
15
14
|
}
|
|
16
15
|
static generalTokens(text) {
|
|
@@ -19,9 +18,10 @@ class OpenLitHelper {
|
|
|
19
18
|
}
|
|
20
19
|
static getChatModelCost(model, pricingInfo, promptTokens, completionTokens) {
|
|
21
20
|
try {
|
|
22
|
-
|
|
21
|
+
const cost = ((promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.chat[model].promptPrice +
|
|
23
22
|
(completionTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) *
|
|
24
23
|
pricingInfo.chat[model].completionPrice);
|
|
24
|
+
return isNaN(cost) ? 0 : cost;
|
|
25
25
|
}
|
|
26
26
|
catch (error) {
|
|
27
27
|
console.error(`Error in getChatModelCost: ${error}`);
|
|
@@ -30,7 +30,8 @@ class OpenLitHelper {
|
|
|
30
30
|
}
|
|
31
31
|
static getEmbedModelCost(model, pricingInfo, promptTokens) {
|
|
32
32
|
try {
|
|
33
|
-
|
|
33
|
+
const cost = (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.embeddings[model];
|
|
34
|
+
return isNaN(cost) ? 0 : cost;
|
|
34
35
|
}
|
|
35
36
|
catch (error) {
|
|
36
37
|
console.error(`Error in getEmbedModelCost: ${error}`);
|
|
@@ -39,7 +40,8 @@ class OpenLitHelper {
|
|
|
39
40
|
}
|
|
40
41
|
static getImageModelCost(model, pricingInfo, size, quality) {
|
|
41
42
|
try {
|
|
42
|
-
|
|
43
|
+
const cost = pricingInfo.images[model][quality][size];
|
|
44
|
+
return isNaN(cost) ? 0 : cost;
|
|
43
45
|
}
|
|
44
46
|
catch (error) {
|
|
45
47
|
console.error(`Error in getImageModelCost: ${error}`);
|
|
@@ -48,7 +50,8 @@ class OpenLitHelper {
|
|
|
48
50
|
}
|
|
49
51
|
static getAudioModelCost(model, pricingInfo, prompt) {
|
|
50
52
|
try {
|
|
51
|
-
|
|
53
|
+
const cost = (prompt.length / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.audio[model];
|
|
54
|
+
return isNaN(cost) ? 0 : cost;
|
|
52
55
|
}
|
|
53
56
|
catch (error) {
|
|
54
57
|
console.error(`Error in getAudioModelCost: ${error}`);
|
|
@@ -98,6 +101,110 @@ class OpenLitHelper {
|
|
|
98
101
|
return {};
|
|
99
102
|
}
|
|
100
103
|
}
|
|
104
|
+
/**
|
|
105
|
+
* Build OTel-spec input messages JSON string from provider messages array.
|
|
106
|
+
* Format: [{"role": "user", "parts": [{"type": "text", "content": "..."}]}]
|
|
107
|
+
*/
|
|
108
|
+
static buildInputMessages(messages, system) {
|
|
109
|
+
try {
|
|
110
|
+
const otelMessages = [];
|
|
111
|
+
if (system) {
|
|
112
|
+
otelMessages.push({ role: 'system', parts: [{ type: 'text', content: system }] });
|
|
113
|
+
}
|
|
114
|
+
for (const msg of messages || []) {
|
|
115
|
+
const role = msg.role || 'user';
|
|
116
|
+
const content = msg.content;
|
|
117
|
+
const parts = [];
|
|
118
|
+
if (typeof content === 'string' && content) {
|
|
119
|
+
parts.push({ type: 'text', content });
|
|
120
|
+
}
|
|
121
|
+
else if (Array.isArray(content)) {
|
|
122
|
+
for (const item of content) {
|
|
123
|
+
const t = item.type;
|
|
124
|
+
if (t === 'text') {
|
|
125
|
+
parts.push({ type: 'text', content: item.text || '' });
|
|
126
|
+
}
|
|
127
|
+
else if (t === 'image_url') {
|
|
128
|
+
const url = item.image_url?.url || '';
|
|
129
|
+
if (url && !url.startsWith('data:')) {
|
|
130
|
+
parts.push({ type: 'uri', modality: 'image', uri: url });
|
|
131
|
+
}
|
|
132
|
+
}
|
|
133
|
+
else if (t === 'image') {
|
|
134
|
+
// Anthropic image format
|
|
135
|
+
const url = item.source?.url || '';
|
|
136
|
+
if (url && !url.startsWith('data:')) {
|
|
137
|
+
parts.push({ type: 'uri', modality: 'image', uri: url });
|
|
138
|
+
}
|
|
139
|
+
}
|
|
140
|
+
else if (t === 'tool_use') {
|
|
141
|
+
parts.push({ type: 'tool_call', id: item.id || '', name: item.name || '', arguments: item.input || {} });
|
|
142
|
+
}
|
|
143
|
+
else if (t === 'tool_result') {
|
|
144
|
+
parts.push({ type: 'tool_call_response', id: item.tool_use_id || '', response: typeof item.content === 'string' ? item.content : JSON.stringify(item.content || '') });
|
|
145
|
+
}
|
|
146
|
+
}
|
|
147
|
+
}
|
|
148
|
+
// Handle tool_calls in message (OpenAI assistant format)
|
|
149
|
+
if (msg.tool_calls && Array.isArray(msg.tool_calls)) {
|
|
150
|
+
for (const tc of msg.tool_calls) {
|
|
151
|
+
let args = tc.function?.arguments || {};
|
|
152
|
+
if (typeof args === 'string') {
|
|
153
|
+
try {
|
|
154
|
+
args = JSON.parse(args);
|
|
155
|
+
}
|
|
156
|
+
catch {
|
|
157
|
+
args = { raw: args };
|
|
158
|
+
}
|
|
159
|
+
}
|
|
160
|
+
parts.push({ type: 'tool_call', id: tc.id || '', name: tc.function?.name || '', arguments: args });
|
|
161
|
+
}
|
|
162
|
+
}
|
|
163
|
+
if (parts.length > 0) {
|
|
164
|
+
otelMessages.push({ role, parts });
|
|
165
|
+
}
|
|
166
|
+
}
|
|
167
|
+
return JSON.stringify(otelMessages);
|
|
168
|
+
}
|
|
169
|
+
catch {
|
|
170
|
+
return '[]';
|
|
171
|
+
}
|
|
172
|
+
}
|
|
173
|
+
/**
|
|
174
|
+
* Build OTel-spec output messages JSON string from provider response.
|
|
175
|
+
* Format: [{"role": "assistant", "parts": [{"type": "text", "content": "..."}], "finish_reason": "stop"}]
|
|
176
|
+
*/
|
|
177
|
+
static buildOutputMessages(text, finishReason, toolCalls) {
|
|
178
|
+
try {
|
|
179
|
+
const parts = [];
|
|
180
|
+
if (text) {
|
|
181
|
+
parts.push({ type: 'text', content: text });
|
|
182
|
+
}
|
|
183
|
+
if (toolCalls && toolCalls.length > 0) {
|
|
184
|
+
for (const tc of toolCalls) {
|
|
185
|
+
let args = tc.function?.arguments || tc.arguments || {};
|
|
186
|
+
if (typeof args === 'string') {
|
|
187
|
+
try {
|
|
188
|
+
args = JSON.parse(args);
|
|
189
|
+
}
|
|
190
|
+
catch {
|
|
191
|
+
args = { raw: args };
|
|
192
|
+
}
|
|
193
|
+
}
|
|
194
|
+
parts.push({
|
|
195
|
+
type: 'tool_call',
|
|
196
|
+
id: tc.id || '',
|
|
197
|
+
name: tc.function?.name || tc.name || '',
|
|
198
|
+
arguments: args,
|
|
199
|
+
});
|
|
200
|
+
}
|
|
201
|
+
}
|
|
202
|
+
return JSON.stringify([{ role: 'assistant', parts, finish_reason: finishReason || 'stop' }]);
|
|
203
|
+
}
|
|
204
|
+
catch {
|
|
205
|
+
return '[]';
|
|
206
|
+
}
|
|
207
|
+
}
|
|
101
208
|
static handleException(span, error) {
|
|
102
209
|
span.recordException(error);
|
|
103
210
|
span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
|
package/dist/helpers.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":";;AAAA,6CAA8D;AAC9D,4CAA0D;AAE1D,MAAqB,aAAa;IAGhC,MAAM,CAAC,YAAY,CAAC,IAAY,EAAE,KAAa;QAC7C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,IAAA,8BAAgB,EAAC,KAAsB,CAAC,CAAC;YAC1D,OAAO,QAAQ,CAAC,MAAM,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC;QACtC,CAAC;QAAC,
|
|
1
|
+
{"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
|
|
@@ -85,7 +85,7 @@ describe('AnthropicWrapper', () => {
|
|
|
85
85
|
expect(setAttributeSpy).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, 10);
|
|
86
86
|
expect(setAttributeSpy).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, 20);
|
|
87
87
|
expect(setAttributeSpy).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, 30);
|
|
88
|
-
expect(setAttributeSpy).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, 'stop');
|
|
88
|
+
expect(setAttributeSpy).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, ['stop']);
|
|
89
89
|
});
|
|
90
90
|
});
|
|
91
91
|
});
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"anthropic-wrapper.test.js","sourceRoot":"","sources":["../../../src/instrumentation/__tests__/anthropic-wrapper.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"anthropic-wrapper.test.js","sourceRoot":"","sources":["../../../src/instrumentation/__tests__/anthropic-wrapper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -60,7 +60,7 @@ describe('BaseWrapper.setBaseSpanAttributes', () => {
|
|
|
60
60
|
expect(span.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_COST, 0.99);
|
|
61
61
|
expect(span.setStatus).toHaveBeenCalled();
|
|
62
62
|
expect(metrics_1.default.genaiRequests.add).toHaveBeenCalledWith(1, expect.objectContaining({
|
|
63
|
-
[semantic_convention_1.default.
|
|
63
|
+
[semantic_convention_1.default.GEN_AI_PROVIDER_NAME]: 'openai',
|
|
64
64
|
[semantic_convention_1.default.GEN_AI_REQUEST_USER]: 'user1',
|
|
65
65
|
[semantic_convention_1.default.GEN_AI_REQUEST_MODEL]: 'gpt-4',
|
|
66
66
|
}));
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"base-wrapper.test.js","sourceRoot":"","sources":["../../../src/instrumentation/__tests__/base-wrapper.test.ts"],"names":[],"mappings":"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
|
|
1
|
+
{"version":3,"file":"base-wrapper.test.js","sourceRoot":"","sources":["../../../src/instrumentation/__tests__/base-wrapper.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,99 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-Language Trace Comparison Tests for Google AI Studio Integration
|
|
4
|
+
*/
|
|
5
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
6
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
7
|
+
};
|
|
8
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
9
|
+
const wrapper_1 = __importDefault(require("../google-ai/wrapper"));
|
|
10
|
+
const config_1 = __importDefault(require("../../config"));
|
|
11
|
+
const helpers_1 = __importDefault(require("../../helpers"));
|
|
12
|
+
const base_wrapper_1 = __importDefault(require("../base-wrapper"));
|
|
13
|
+
const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
|
|
14
|
+
jest.mock('../../config');
|
|
15
|
+
jest.mock('../../helpers');
|
|
16
|
+
jest.mock('../base-wrapper');
|
|
17
|
+
describe('Google AI Studio Cross-Language Trace Comparison', () => {
|
|
18
|
+
let mockSpan;
|
|
19
|
+
beforeEach(() => {
|
|
20
|
+
// Create mock span
|
|
21
|
+
mockSpan = {
|
|
22
|
+
setAttribute: jest.fn(),
|
|
23
|
+
addEvent: jest.fn(),
|
|
24
|
+
end: jest.fn(),
|
|
25
|
+
setStatus: jest.fn(),
|
|
26
|
+
};
|
|
27
|
+
// Mock OpenlitConfig
|
|
28
|
+
config_1.default.environment = 'openlit-testing';
|
|
29
|
+
config_1.default.applicationName = 'openlit-test';
|
|
30
|
+
config_1.default.traceContent = true;
|
|
31
|
+
config_1.default.pricing_json = {};
|
|
32
|
+
config_1.default.updatePricingJson = jest.fn().mockResolvedValue({});
|
|
33
|
+
// Mock OpenLitHelper
|
|
34
|
+
helpers_1.default.getChatModelCost = jest.fn().mockReturnValue(0.001);
|
|
35
|
+
helpers_1.default.handleException = jest.fn();
|
|
36
|
+
helpers_1.default.createStreamProxy = jest.fn().mockImplementation((stream, generator) => stream);
|
|
37
|
+
// Mock BaseWrapper
|
|
38
|
+
base_wrapper_1.default.recordMetrics = jest.fn();
|
|
39
|
+
base_wrapper_1.default.setBaseSpanAttributes = jest.fn().mockImplementation((span, attrs) => {
|
|
40
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_PROVIDER_NAME, attrs.aiSystem);
|
|
41
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_ENDPOINT, attrs.genAIEndpoint);
|
|
42
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MODEL, attrs.model);
|
|
43
|
+
if (attrs.cost !== undefined) {
|
|
44
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_COST, attrs.cost);
|
|
45
|
+
}
|
|
46
|
+
});
|
|
47
|
+
});
|
|
48
|
+
afterEach(() => {
|
|
49
|
+
jest.clearAllMocks();
|
|
50
|
+
});
|
|
51
|
+
describe('Generate Content Trace Consistency', () => {
|
|
52
|
+
it('should set same attributes as Python SDK', async () => {
|
|
53
|
+
const mockArgs = [
|
|
54
|
+
{
|
|
55
|
+
contents: [
|
|
56
|
+
{ role: 'user', parts: [{ text: 'What is Gemini?' }] },
|
|
57
|
+
],
|
|
58
|
+
config: {
|
|
59
|
+
temperature: 0.7,
|
|
60
|
+
maxOutputTokens: 100,
|
|
61
|
+
topP: 0.95,
|
|
62
|
+
},
|
|
63
|
+
},
|
|
64
|
+
];
|
|
65
|
+
const mockResponse = {
|
|
66
|
+
model: 'gemini-pro',
|
|
67
|
+
candidates: [
|
|
68
|
+
{
|
|
69
|
+
content: {
|
|
70
|
+
parts: [{ text: 'Gemini is Google\'s AI model' }],
|
|
71
|
+
role: 'model',
|
|
72
|
+
},
|
|
73
|
+
finishReason: 'STOP',
|
|
74
|
+
},
|
|
75
|
+
],
|
|
76
|
+
usageMetadata: {
|
|
77
|
+
promptTokenCount: 5,
|
|
78
|
+
candidatesTokenCount: 10,
|
|
79
|
+
totalTokenCount: 15,
|
|
80
|
+
},
|
|
81
|
+
};
|
|
82
|
+
await wrapper_1.default._generateContent({
|
|
83
|
+
args: mockArgs,
|
|
84
|
+
genAIEndpoint: 'google.generativeai.models.generate_content',
|
|
85
|
+
response: mockResponse,
|
|
86
|
+
span: mockSpan,
|
|
87
|
+
});
|
|
88
|
+
// Verify critical attributes are set (matching Python SDK)
|
|
89
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_PROVIDER_NAME, 'google_ai_studio');
|
|
90
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
|
|
91
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_REQUEST_MODEL, 'gemini-pro');
|
|
92
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, 'gemini-pro');
|
|
93
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, 5);
|
|
94
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, 10);
|
|
95
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, 15);
|
|
96
|
+
});
|
|
97
|
+
});
|
|
98
|
+
});
|
|
99
|
+
//# sourceMappingURL=google-ai-trace-comparison.test.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"google-ai-trace-comparison.test.js","sourceRoot":"","sources":["../../../src/instrumentation/__tests__/google-ai-trace-comparison.test.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,180 @@
|
|
|
1
|
+
"use strict";
|
|
2
|
+
/**
|
|
3
|
+
* Cross-Language Trace Comparison Tests for Groq Integration
|
|
4
|
+
*
|
|
5
|
+
* These tests verify that TypeScript and Python generate equivalent traces
|
|
6
|
+
* for the same operations.
|
|
7
|
+
*/
|
|
8
|
+
var __importDefault = (this && this.__importDefault) || function (mod) {
|
|
9
|
+
return (mod && mod.__esModule) ? mod : { "default": mod };
|
|
10
|
+
};
|
|
11
|
+
Object.defineProperty(exports, "__esModule", { value: true });
|
|
12
|
+
const wrapper_1 = __importDefault(require("../groq/wrapper"));
|
|
13
|
+
const config_1 = __importDefault(require("../../config"));
|
|
14
|
+
const helpers_1 = __importDefault(require("../../helpers"));
|
|
15
|
+
const base_wrapper_1 = __importDefault(require("../base-wrapper"));
|
|
16
|
+
const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
|
|
17
|
+
jest.mock('../../config');
|
|
18
|
+
jest.mock('../../helpers');
|
|
19
|
+
jest.mock('../base-wrapper');
|
|
20
|
+
describe('Groq Cross-Language Trace Comparison', () => {
|
|
21
|
+
let mockSpan;
|
|
22
|
+
let mockTracer;
|
|
23
|
+
beforeEach(() => {
|
|
24
|
+
// Create mock span
|
|
25
|
+
mockSpan = {
|
|
26
|
+
setAttribute: jest.fn(),
|
|
27
|
+
addEvent: jest.fn(),
|
|
28
|
+
end: jest.fn(),
|
|
29
|
+
setStatus: jest.fn(),
|
|
30
|
+
};
|
|
31
|
+
// Create mock tracer
|
|
32
|
+
mockTracer = {
|
|
33
|
+
startSpan: jest.fn().mockReturnValue(mockSpan),
|
|
34
|
+
};
|
|
35
|
+
// Mock OpenlitConfig
|
|
36
|
+
config_1.default.environment = 'openlit-testing';
|
|
37
|
+
config_1.default.applicationName = 'openlit-test';
|
|
38
|
+
config_1.default.traceContent = true;
|
|
39
|
+
config_1.default.pricing_json = {};
|
|
40
|
+
config_1.default.updatePricingJson = jest.fn().mockResolvedValue({});
|
|
41
|
+
// Mock OpenLitHelper
|
|
42
|
+
helpers_1.default.getChatModelCost = jest.fn().mockReturnValue(0.001);
|
|
43
|
+
helpers_1.default.openaiTokens = jest.fn().mockReturnValue(5);
|
|
44
|
+
helpers_1.default.handleException = jest.fn();
|
|
45
|
+
helpers_1.default.createStreamProxy = jest.fn().mockImplementation((stream, generator) => stream);
|
|
46
|
+
// Mock BaseWrapper
|
|
47
|
+
base_wrapper_1.default.recordMetrics = jest.fn();
|
|
48
|
+
base_wrapper_1.default.setBaseSpanAttributes = jest.fn().mockImplementation((span, attrs) => {
|
|
49
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_PROVIDER_NAME, attrs.aiSystem);
|
|
50
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_ENDPOINT, attrs.genAIEndpoint);
|
|
51
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MODEL, attrs.model);
|
|
52
|
+
if (attrs.cost !== undefined) {
|
|
53
|
+
span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_COST, attrs.cost);
|
|
54
|
+
}
|
|
55
|
+
});
|
|
56
|
+
});
|
|
57
|
+
afterEach(() => {
|
|
58
|
+
jest.clearAllMocks();
|
|
59
|
+
});
|
|
60
|
+
describe('Chat Completion Trace Consistency', () => {
|
|
61
|
+
it('should set same attributes as Python SDK', async () => {
|
|
62
|
+
const mockArgs = [
|
|
63
|
+
{
|
|
64
|
+
messages: [{ role: 'user', content: 'What is LLM Observability?' }],
|
|
65
|
+
model: 'llama-3.1-8b-instant',
|
|
66
|
+
max_tokens: 100,
|
|
67
|
+
temperature: 0.7,
|
|
68
|
+
stream: false,
|
|
69
|
+
},
|
|
70
|
+
];
|
|
71
|
+
const mockResponse = {
|
|
72
|
+
id: 'test-id-123',
|
|
73
|
+
created: Date.now(),
|
|
74
|
+
model: 'llama-3.1-8b-instant',
|
|
75
|
+
choices: [
|
|
76
|
+
{
|
|
77
|
+
index: 0,
|
|
78
|
+
finish_reason: 'stop',
|
|
79
|
+
message: { role: 'assistant', content: 'LLM Observability is...' },
|
|
80
|
+
},
|
|
81
|
+
],
|
|
82
|
+
usage: {
|
|
83
|
+
prompt_tokens: 10,
|
|
84
|
+
completion_tokens: 20,
|
|
85
|
+
total_tokens: 30,
|
|
86
|
+
},
|
|
87
|
+
};
|
|
88
|
+
await wrapper_1.default._chatCompletion({
|
|
89
|
+
args: mockArgs,
|
|
90
|
+
genAIEndpoint: 'groq.chat.completions',
|
|
91
|
+
response: mockResponse,
|
|
92
|
+
span: mockSpan,
|
|
93
|
+
});
|
|
94
|
+
// Verify critical attributes are set (matching Python SDK)
|
|
95
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_PROVIDER_NAME, 'groq');
|
|
96
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
|
|
97
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_ENDPOINT, 'groq.chat.completions');
|
|
98
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_REQUEST_MODEL, 'llama-3.1-8b-instant');
|
|
99
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, 'llama-3.1-8b-instant');
|
|
100
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_RESPONSE_ID, 'test-id-123');
|
|
101
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, 10);
|
|
102
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, 20);
|
|
103
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, 30);
|
|
104
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_REQUEST_TEMPERATURE, 0.7);
|
|
105
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS, 100);
|
|
106
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, false);
|
|
107
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, ['stop']);
|
|
108
|
+
});
|
|
109
|
+
it('should set streaming attributes matching Python SDK', async () => {
|
|
110
|
+
const mockArgs = [
|
|
111
|
+
{
|
|
112
|
+
messages: [{ role: 'user', content: 'Test streaming' }],
|
|
113
|
+
model: 'llama-3.1-8b-instant',
|
|
114
|
+
stream: true,
|
|
115
|
+
},
|
|
116
|
+
];
|
|
117
|
+
// Mock streaming response
|
|
118
|
+
async function* mockStream() {
|
|
119
|
+
yield {
|
|
120
|
+
id: 'test-id',
|
|
121
|
+
created: Date.now(),
|
|
122
|
+
model: 'llama-3.1-8b-instant',
|
|
123
|
+
choices: [{ delta: { content: 'Hello' } }],
|
|
124
|
+
};
|
|
125
|
+
yield {
|
|
126
|
+
id: 'test-id',
|
|
127
|
+
created: Date.now(),
|
|
128
|
+
model: 'llama-3.1-8b-instant',
|
|
129
|
+
choices: [{ delta: { content: ' world' } }],
|
|
130
|
+
};
|
|
131
|
+
}
|
|
132
|
+
const generator = wrapper_1.default._chatCompletionGenerator({
|
|
133
|
+
args: mockArgs,
|
|
134
|
+
genAIEndpoint: 'groq.chat.completions',
|
|
135
|
+
response: mockStream(),
|
|
136
|
+
span: mockSpan,
|
|
137
|
+
});
|
|
138
|
+
// Consume the stream
|
|
139
|
+
for await (const _ of generator) {
|
|
140
|
+
// Consume chunks
|
|
141
|
+
}
|
|
142
|
+
// Verify streaming-specific attributes are set
|
|
143
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, true);
|
|
144
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_PROVIDER_NAME, 'groq');
|
|
145
|
+
expect(mockSpan.setAttribute).toHaveBeenCalledWith(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
|
|
146
|
+
});
|
|
147
|
+
});
|
|
148
|
+
describe('Trace Validation', () => {
|
|
149
|
+
it('should set all required attributes matching Python SDK', async () => {
|
|
150
|
+
const mockArgs = [
|
|
151
|
+
{
|
|
152
|
+
messages: [{ role: 'user', content: 'Test' }],
|
|
153
|
+
model: 'llama-3.1-8b-instant',
|
|
154
|
+
},
|
|
155
|
+
];
|
|
156
|
+
const mockResponse = {
|
|
157
|
+
id: 'test',
|
|
158
|
+
model: 'llama-3.1-8b-instant',
|
|
159
|
+
choices: [{ message: { content: 'Response' }, finish_reason: 'stop' }],
|
|
160
|
+
usage: { prompt_tokens: 5, completion_tokens: 10, total_tokens: 15 },
|
|
161
|
+
};
|
|
162
|
+
await wrapper_1.default._chatCompletion({
|
|
163
|
+
args: mockArgs,
|
|
164
|
+
genAIEndpoint: 'groq.chat.completions',
|
|
165
|
+
response: mockResponse,
|
|
166
|
+
span: mockSpan,
|
|
167
|
+
});
|
|
168
|
+
// Verify all required attributes are set (matching Python expectations)
|
|
169
|
+
const setAttributeCalls = mockSpan.setAttribute.mock.calls;
|
|
170
|
+
const attributeMap = new Map(setAttributeCalls.map(([key, value]) => [key, value]));
|
|
171
|
+
expect(attributeMap.get(semantic_convention_1.default.GEN_AI_PROVIDER_NAME)).toBe('groq');
|
|
172
|
+
expect(attributeMap.get(semantic_convention_1.default.GEN_AI_OPERATION)).toBe(semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
|
|
173
|
+
expect(attributeMap.get(semantic_convention_1.default.GEN_AI_REQUEST_MODEL)).toBe('llama-3.1-8b-instant');
|
|
174
|
+
expect(attributeMap.get(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS)).toBe(5);
|
|
175
|
+
expect(attributeMap.get(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS)).toBe(10);
|
|
176
|
+
expect(attributeMap.get(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS)).toBe(15);
|
|
177
|
+
});
|
|
178
|
+
});
|
|
179
|
+
});
|
|
180
|
+
//# sourceMappingURL=groq-trace-comparison.test.js.map
|