openlit 1.8.0 → 1.9.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 (84) hide show
  1. package/dist/constant.d.ts +1 -0
  2. package/dist/constant.js +2 -1
  3. package/dist/constant.js.map +1 -1
  4. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js +4 -0
  5. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js.map +1 -1
  6. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js +11 -0
  7. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js.map +1 -1
  8. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +11 -0
  9. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -1
  10. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js +11 -0
  11. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js.map +1 -1
  12. package/dist/instrumentation/__tests__/together-trace-comparison.test.js +11 -0
  13. package/dist/instrumentation/__tests__/together-trace-comparison.test.js.map +1 -1
  14. package/dist/instrumentation/__tests__/trace-comparison-utils.js +3 -0
  15. package/dist/instrumentation/__tests__/trace-comparison-utils.js.map +1 -1
  16. package/dist/instrumentation/anthropic/wrapper.d.ts +7 -1
  17. package/dist/instrumentation/anthropic/wrapper.js +71 -3
  18. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  19. package/dist/instrumentation/base-wrapper.d.ts +3 -1
  20. package/dist/instrumentation/base-wrapper.js +19 -1
  21. package/dist/instrumentation/base-wrapper.js.map +1 -1
  22. package/dist/instrumentation/bedrock/index.d.ts +11 -0
  23. package/dist/instrumentation/bedrock/index.js +52 -0
  24. package/dist/instrumentation/bedrock/index.js.map +1 -0
  25. package/dist/instrumentation/bedrock/wrapper.d.ts +10 -0
  26. package/dist/instrumentation/bedrock/wrapper.js +360 -0
  27. package/dist/instrumentation/bedrock/wrapper.js.map +1 -0
  28. package/dist/instrumentation/cohere/wrapper.d.ts +5 -1
  29. package/dist/instrumentation/cohere/wrapper.js +24 -1
  30. package/dist/instrumentation/cohere/wrapper.js.map +1 -1
  31. package/dist/instrumentation/google-ai/wrapper.d.ts +2 -0
  32. package/dist/instrumentation/google-ai/wrapper.js +4 -0
  33. package/dist/instrumentation/google-ai/wrapper.js.map +1 -1
  34. package/dist/instrumentation/groq/wrapper.d.ts +2 -0
  35. package/dist/instrumentation/groq/wrapper.js +4 -0
  36. package/dist/instrumentation/groq/wrapper.js.map +1 -1
  37. package/dist/instrumentation/index.js +10 -0
  38. package/dist/instrumentation/index.js.map +1 -1
  39. package/dist/instrumentation/langchain/index.d.ts +23 -0
  40. package/dist/instrumentation/langchain/index.js +109 -0
  41. package/dist/instrumentation/langchain/index.js.map +1 -0
  42. package/dist/instrumentation/langchain/wrapper.d.ts +6 -0
  43. package/dist/instrumentation/langchain/wrapper.js +322 -0
  44. package/dist/instrumentation/langchain/wrapper.js.map +1 -0
  45. package/dist/instrumentation/llamaindex/index.d.ts +11 -0
  46. package/dist/instrumentation/llamaindex/index.js +102 -0
  47. package/dist/instrumentation/llamaindex/index.js.map +1 -0
  48. package/dist/instrumentation/llamaindex/wrapper.d.ts +11 -0
  49. package/dist/instrumentation/llamaindex/wrapper.js +252 -0
  50. package/dist/instrumentation/llamaindex/wrapper.js.map +1 -0
  51. package/dist/instrumentation/mistral/wrapper.d.ts +2 -0
  52. package/dist/instrumentation/mistral/wrapper.js +6 -0
  53. package/dist/instrumentation/mistral/wrapper.js.map +1 -1
  54. package/dist/instrumentation/ollama/wrapper.d.ts +2 -0
  55. package/dist/instrumentation/ollama/wrapper.js +4 -0
  56. package/dist/instrumentation/ollama/wrapper.js.map +1 -1
  57. package/dist/instrumentation/openai/index.js +1 -1
  58. package/dist/instrumentation/openai/index.js.map +1 -1
  59. package/dist/instrumentation/openai/wrapper.d.ts +2 -0
  60. package/dist/instrumentation/openai/wrapper.js +17 -7
  61. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  62. package/dist/instrumentation/pinecone/index.d.ts +11 -0
  63. package/dist/instrumentation/pinecone/index.js +79 -0
  64. package/dist/instrumentation/pinecone/index.js.map +1 -0
  65. package/dist/instrumentation/pinecone/wrapper.d.ts +14 -0
  66. package/dist/instrumentation/pinecone/wrapper.js +198 -0
  67. package/dist/instrumentation/pinecone/wrapper.js.map +1 -0
  68. package/dist/instrumentation/together/wrapper.d.ts +2 -0
  69. package/dist/instrumentation/together/wrapper.js +4 -0
  70. package/dist/instrumentation/together/wrapper.js.map +1 -1
  71. package/dist/instrumentation/vercel-ai/index.d.ts +10 -0
  72. package/dist/instrumentation/vercel-ai/index.js +59 -0
  73. package/dist/instrumentation/vercel-ai/index.js.map +1 -0
  74. package/dist/instrumentation/vercel-ai/wrapper.d.ts +11 -0
  75. package/dist/instrumentation/vercel-ai/wrapper.js +284 -0
  76. package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -0
  77. package/dist/otel/metrics.d.ts +3 -0
  78. package/dist/otel/metrics.js +21 -0
  79. package/dist/otel/metrics.js.map +1 -1
  80. package/dist/semantic-convention.d.ts +15 -0
  81. package/dist/semantic-convention.js +21 -5
  82. package/dist/semantic-convention.js.map +1 -1
  83. package/dist/types.d.ts +1 -1
  84. package/package.json +1 -1
@@ -0,0 +1,59 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const instrumentation_1 = require("@opentelemetry/instrumentation");
7
+ const constant_1 = require("../../constant");
8
+ const wrapper_1 = __importDefault(require("./wrapper"));
9
+ // Functions to intercept from the `ai` module
10
+ const PATCHED_FNS = ['generateText', 'streamText', 'generateObject', 'embed'];
11
+ class OpenlitVercelAIInstrumentation extends instrumentation_1.InstrumentationBase {
12
+ constructor(config = {}) {
13
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-vercel-ai`, '1.0.0', config);
14
+ }
15
+ init() {
16
+ const module = new instrumentation_1.InstrumentationNodeModuleDefinition('ai', ['>=3.0.0 <5'], (moduleExports) => this._patch(moduleExports),
17
+ // No-op unpatch: Proxy is discarded when the module is re-required
18
+ () => { });
19
+ return [module];
20
+ }
21
+ manualPatch(ai) {
22
+ return this._patch(ai);
23
+ }
24
+ _patch(moduleExports) {
25
+ try {
26
+ const tracer = this.tracer;
27
+ // The `ai` package exports functions as non-configurable getter properties,
28
+ // so shimmer's Object.defineProperty-based wrapping fails. Instead, return a
29
+ // Proxy that intercepts property access and returns wrapped functions.
30
+ const patchers = {
31
+ generateText: wrapper_1.default._patchGenerateText,
32
+ streamText: wrapper_1.default._patchStreamText,
33
+ generateObject: wrapper_1.default._patchGenerateObject,
34
+ embed: wrapper_1.default._patchEmbed,
35
+ };
36
+ // Pre-build wrapped functions once (avoid re-wrapping on every get)
37
+ const wrapped = {};
38
+ for (const name of PATCHED_FNS) {
39
+ const original = moduleExports[name];
40
+ if (typeof original === 'function') {
41
+ wrapped[name] = patchers[name](tracer)(original);
42
+ }
43
+ }
44
+ return new Proxy(moduleExports, {
45
+ get(target, prop, receiver) {
46
+ if (prop in wrapped)
47
+ return wrapped[prop];
48
+ return Reflect.get(target, prop, receiver);
49
+ },
50
+ });
51
+ }
52
+ catch (e) {
53
+ console.error('Error in VercelAI _patch method:', e);
54
+ return moduleExports;
55
+ }
56
+ }
57
+ }
58
+ exports.default = OpenlitVercelAIInstrumentation;
59
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/vercel-ai/index.ts"],"names":[],"mappings":";;;;;AAAA,oEAIwC;AAExC,6CAAwD;AACxD,wDAAwC;AAIxC,8CAA8C;AAC9C,MAAM,WAAW,GAAG,CAAC,cAAc,EAAE,YAAY,EAAE,gBAAgB,EAAE,OAAO,CAAU,CAAC;AAEvF,MAAqB,8BAA+B,SAAQ,qCAAmB;IAC7E,YAAY,SAAwC,EAAE;QACpD,KAAK,CAAC,GAAG,iCAAsB,4BAA4B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAES,IAAI;QACZ,MAAM,MAAM,GAAG,IAAI,qDAAmC,CACpD,IAAI,EACJ,CAAC,YAAY,CAAC,EACd,CAAC,aAAa,EAAE,EAAE,CAAC,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC;QAC7C,mEAAmE;QACnE,GAAG,EAAE,GAAE,CAAC,CACT,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEM,WAAW,CAAC,EAAO;QACxB,OAAO,IAAI,CAAC,MAAM,CAAC,EAAE,CAAC,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,aAAkB;QACjC,IAAI,CAAC;YACH,MAAM,MAAM,GAAG,IAAI,CAAC,MAAM,CAAC;YAE3B,4EAA4E;YAC5E,6EAA6E;YAC7E,uEAAuE;YACvE,MAAM,QAAQ,GAA6D;gBACzE,YAAY,EAAE,iBAAe,CAAC,kBAAkB;gBAChD,UAAU,EAAE,iBAAe,CAAC,gBAAgB;gBAC5C,cAAc,EAAE,iBAAe,CAAC,oBAAoB;gBACpD,KAAK,EAAE,iBAAe,CAAC,WAAW;aACnC,CAAC;YAEF,oEAAoE;YACpE,MAAM,OAAO,GAAwB,EAAE,CAAC;YACxC,KAAK,MAAM,IAAI,IAAI,WAAW,EAAE,CAAC;gBAC/B,MAAM,QAAQ,GAAG,aAAa,CAAC,IAAI,CAAC,CAAC;gBACrC,IAAI,OAAO,QAAQ,KAAK,UAAU,EAAE,CAAC;oBACnC,OAAO,CAAC,IAAI,CAAC,GAAG,QAAQ,CAAC,IAAI,CAAC,CAAC,MAAM,CAAC,CAAC,QAAQ,CAAC,CAAC;gBACnD,CAAC;YACH,CAAC;YAED,OAAO,IAAI,KAAK,CAAC,aAAa,EAAE;gBAC9B,GAAG,CAAC,MAAM,EAAE,IAAY,EAAE,QAAQ;oBAChC,IAAI,IAAI,IAAI,OAAO;wBAAE,OAAO,OAAO,CAAC,IAAI,CAAC,CAAC;oBAC1C,OAAO,OAAO,CAAC,GAAG,CAAC,MAAM,EAAE,IAAI,EAAE,QAAQ,CAAC,CAAC;gBAC7C,CAAC;aACF,CAAC,CAAC;QACL,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,kCAAkC,EAAE,CAAC,CAAC,CAAC;YACrD,OAAO,aAAa,CAAC;QACvB,CAAC;IACH,CAAC;CACF;AAtDD,iDAsDC"}
@@ -0,0 +1,11 @@
1
+ import { Tracer } from '@opentelemetry/api';
2
+ import BaseWrapper from '../base-wrapper';
3
+ declare class VercelAIWrapper extends BaseWrapper {
4
+ static aiSystem: string;
5
+ static _getProviderFromModel(model: any): string;
6
+ static _patchGenerateText(tracer: Tracer): any;
7
+ static _patchStreamText(tracer: Tracer): any;
8
+ static _patchGenerateObject(tracer: Tracer): any;
9
+ static _patchEmbed(tracer: Tracer): any;
10
+ }
11
+ export default VercelAIWrapper;
@@ -0,0 +1,284 @@
1
+ "use strict";
2
+ var __importDefault = (this && this.__importDefault) || function (mod) {
3
+ return (mod && mod.__esModule) ? mod : { "default": mod };
4
+ };
5
+ Object.defineProperty(exports, "__esModule", { value: true });
6
+ const api_1 = require("@opentelemetry/api");
7
+ const config_1 = __importDefault(require("../../config"));
8
+ const helpers_1 = __importDefault(require("../../helpers"));
9
+ const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
10
+ const base_wrapper_1 = __importDefault(require("../base-wrapper"));
11
+ class VercelAIWrapper extends base_wrapper_1.default {
12
+ static _getProviderFromModel(model) {
13
+ if (!model)
14
+ return VercelAIWrapper.aiSystem;
15
+ const provider = model.provider || '';
16
+ if (provider.startsWith('openai'))
17
+ return semantic_convention_1.default.GEN_AI_SYSTEM_OPENAI;
18
+ if (provider.startsWith('anthropic'))
19
+ return semantic_convention_1.default.GEN_AI_SYSTEM_ANTHROPIC;
20
+ if (provider.startsWith('google'))
21
+ return semantic_convention_1.default.GEN_AI_SYSTEM_VERTEXAI;
22
+ if (provider.startsWith('mistral'))
23
+ return semantic_convention_1.default.GEN_AI_SYSTEM_MISTRAL;
24
+ if (provider.startsWith('cohere'))
25
+ return semantic_convention_1.default.GEN_AI_SYSTEM_COHERE;
26
+ if (provider.startsWith('amazon') || provider.startsWith('aws'))
27
+ return semantic_convention_1.default.GEN_AI_SYSTEM_AWS_BEDROCK;
28
+ return VercelAIWrapper.aiSystem;
29
+ }
30
+ static _patchGenerateText(tracer) {
31
+ const genAIEndpoint = 'ai.generateText';
32
+ return (originalMethod) => {
33
+ return async function (...args) {
34
+ const span = tracer.startSpan(genAIEndpoint, { kind: api_1.SpanKind.CLIENT });
35
+ return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), async () => {
36
+ let metricParams;
37
+ try {
38
+ const response = await originalMethod.apply(this, args);
39
+ const params = args[0] || {};
40
+ const model = params.model;
41
+ const modelId = model?.modelId || 'unknown';
42
+ const aiSystem = VercelAIWrapper._getProviderFromModel(model);
43
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
44
+ const cost = helpers_1.default.getChatModelCost(modelId, pricingInfo, response.usage?.promptTokens || 0, response.usage?.completionTokens || 0);
45
+ VercelAIWrapper.setBaseSpanAttributes(span, { genAIEndpoint, model: modelId, cost, aiSystem });
46
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
47
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, false);
48
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS, params.maxTokens || -1);
49
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TEMPERATURE, params.temperature ?? 1);
50
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TOP_P, params.topP ?? 1);
51
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, modelId);
52
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, response.usage?.promptTokens || 0);
53
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, response.usage?.completionTokens || 0);
54
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, response.usage?.totalTokens || 0);
55
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, response.usage?.totalTokens || 0);
56
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, [response.finishReason || 'stop']);
57
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT);
58
+ if (response.toolCalls?.length > 0) {
59
+ const toolNames = response.toolCalls.map((t) => t.toolName || '').filter(Boolean);
60
+ const toolArgs = response.toolCalls.map((t) => JSON.stringify(t.args || {}));
61
+ if (toolNames.length > 0)
62
+ span.setAttribute(semantic_convention_1.default.GEN_AI_TOOL_NAME, toolNames.join(', '));
63
+ if (toolArgs.length > 0)
64
+ span.setAttribute(semantic_convention_1.default.GEN_AI_TOOL_CALL_ARGUMENTS, toolArgs);
65
+ }
66
+ if (config_1.default.traceContent) {
67
+ const messages = params.messages || (params.prompt ? [{ role: 'user', content: params.prompt }] : []);
68
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, helpers_1.default.buildInputMessages(messages));
69
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, helpers_1.default.buildOutputMessages(response.text || '', response.finishReason || 'stop', response.toolCalls));
70
+ }
71
+ metricParams = { genAIEndpoint, model: modelId, cost, aiSystem };
72
+ return response;
73
+ }
74
+ catch (e) {
75
+ helpers_1.default.handleException(span, e);
76
+ throw e;
77
+ }
78
+ finally {
79
+ span.end();
80
+ if (metricParams)
81
+ base_wrapper_1.default.recordMetrics(span, metricParams);
82
+ }
83
+ });
84
+ };
85
+ };
86
+ }
87
+ static _patchStreamText(tracer) {
88
+ const genAIEndpoint = 'ai.streamText';
89
+ return (originalMethod) => {
90
+ return async function (...args) {
91
+ const span = tracer.startSpan(genAIEndpoint, { kind: api_1.SpanKind.CLIENT });
92
+ const startTime = Date.now();
93
+ const chunkTimestamps = [];
94
+ try {
95
+ const response = await originalMethod.apply(this, args);
96
+ const params = args[0] || {};
97
+ const model = params.model;
98
+ const modelId = model?.modelId || 'unknown';
99
+ const aiSystem = VercelAIWrapper._getProviderFromModel(model);
100
+ // Set request attributes immediately
101
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
102
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, true);
103
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS, params.maxTokens || -1);
104
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TEMPERATURE, params.temperature ?? 1);
105
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TOP_P, params.topP ?? 1);
106
+ if (config_1.default.traceContent) {
107
+ const messages = params.messages || (params.prompt ? [{ role: 'user', content: params.prompt }] : []);
108
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, helpers_1.default.buildInputMessages(messages));
109
+ }
110
+ // Intercept textStream to capture per-chunk timestamps for TTFT/TBT
111
+ try {
112
+ const originalTextStream = response.textStream;
113
+ if (originalTextStream && typeof originalTextStream.getReader === 'function') {
114
+ const reader = originalTextStream.getReader();
115
+ const wrappedTextStream = new ReadableStream({
116
+ async pull(controller) {
117
+ const { done, value } = await reader.read();
118
+ if (done) {
119
+ controller.close();
120
+ }
121
+ else {
122
+ chunkTimestamps.push(Date.now());
123
+ controller.enqueue(value);
124
+ }
125
+ },
126
+ cancel() {
127
+ reader.cancel();
128
+ },
129
+ });
130
+ Object.defineProperty(response, 'textStream', {
131
+ value: wrappedTextStream,
132
+ writable: true,
133
+ configurable: true,
134
+ });
135
+ }
136
+ }
137
+ catch (_) {
138
+ // Stream interception failed; TTFT/TBT won't be captured from textStream
139
+ }
140
+ // Observe stream completion via usage promise
141
+ Promise.resolve(response.usage)
142
+ .then(async (usage) => {
143
+ try {
144
+ const ttft = chunkTimestamps.length > 0 ? (chunkTimestamps[0] - startTime) / 1000 : 0;
145
+ let tbt = 0;
146
+ if (chunkTimestamps.length > 1) {
147
+ const timeDiffs = chunkTimestamps.slice(1).map((t, i) => t - chunkTimestamps[i]);
148
+ tbt = timeDiffs.reduce((a, b) => a + b, 0) / timeDiffs.length / 1000;
149
+ }
150
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
151
+ const cost = helpers_1.default.getChatModelCost(modelId, pricingInfo, usage?.promptTokens || 0, usage?.completionTokens || 0);
152
+ VercelAIWrapper.setBaseSpanAttributes(span, { genAIEndpoint, model: modelId, cost, aiSystem });
153
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, modelId);
154
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, usage?.promptTokens || 0);
155
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, usage?.completionTokens || 0);
156
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, usage?.totalTokens || 0);
157
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, usage?.totalTokens || 0);
158
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT);
159
+ if (ttft > 0)
160
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SERVER_TTFT, ttft);
161
+ if (tbt > 0)
162
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SERVER_TBT, tbt);
163
+ const finishReason = await Promise.resolve(response.finishReason).catch(() => 'stop');
164
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, [finishReason || 'stop']);
165
+ if (config_1.default.traceContent) {
166
+ const text = await Promise.resolve(response.text).catch(() => '');
167
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, helpers_1.default.buildOutputMessages(text || '', finishReason || 'stop'));
168
+ }
169
+ base_wrapper_1.default.recordMetrics(span, { genAIEndpoint, model: modelId, cost, aiSystem });
170
+ }
171
+ catch (e) {
172
+ helpers_1.default.handleException(span, e);
173
+ }
174
+ finally {
175
+ span.end();
176
+ }
177
+ })
178
+ .catch((e) => {
179
+ helpers_1.default.handleException(span, e);
180
+ span.end();
181
+ });
182
+ return response;
183
+ }
184
+ catch (e) {
185
+ helpers_1.default.handleException(span, e);
186
+ span.end();
187
+ throw e;
188
+ }
189
+ };
190
+ };
191
+ }
192
+ static _patchGenerateObject(tracer) {
193
+ const genAIEndpoint = 'ai.generateObject';
194
+ return (originalMethod) => {
195
+ return async function (...args) {
196
+ const span = tracer.startSpan(genAIEndpoint, { kind: api_1.SpanKind.CLIENT });
197
+ return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), async () => {
198
+ let metricParams;
199
+ try {
200
+ const response = await originalMethod.apply(this, args);
201
+ const params = args[0] || {};
202
+ const model = params.model;
203
+ const modelId = model?.modelId || 'unknown';
204
+ const aiSystem = VercelAIWrapper._getProviderFromModel(model);
205
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
206
+ const cost = helpers_1.default.getChatModelCost(modelId, pricingInfo, response.usage?.promptTokens || 0, response.usage?.completionTokens || 0);
207
+ VercelAIWrapper.setBaseSpanAttributes(span, { genAIEndpoint, model: modelId, cost, aiSystem });
208
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
209
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, false);
210
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS, params.maxTokens || -1);
211
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TEMPERATURE, params.temperature ?? 1);
212
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, modelId);
213
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, response.usage?.promptTokens || 0);
214
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, response.usage?.completionTokens || 0);
215
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, response.usage?.totalTokens || 0);
216
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, response.usage?.totalTokens || 0);
217
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, [response.finishReason || 'stop']);
218
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_JSON);
219
+ if (config_1.default.traceContent) {
220
+ const messages = params.messages || (params.prompt ? [{ role: 'user', content: params.prompt }] : []);
221
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, helpers_1.default.buildInputMessages(messages));
222
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, helpers_1.default.buildOutputMessages(JSON.stringify(response.object || {}), response.finishReason || 'stop'));
223
+ }
224
+ metricParams = { genAIEndpoint, model: modelId, cost, aiSystem };
225
+ return response;
226
+ }
227
+ catch (e) {
228
+ helpers_1.default.handleException(span, e);
229
+ throw e;
230
+ }
231
+ finally {
232
+ span.end();
233
+ if (metricParams)
234
+ base_wrapper_1.default.recordMetrics(span, metricParams);
235
+ }
236
+ });
237
+ };
238
+ };
239
+ }
240
+ static _patchEmbed(tracer) {
241
+ const genAIEndpoint = 'ai.embed';
242
+ return (originalMethod) => {
243
+ return async function (...args) {
244
+ const span = tracer.startSpan(genAIEndpoint, { kind: api_1.SpanKind.CLIENT });
245
+ return api_1.context.with(api_1.trace.setSpan(api_1.context.active(), span), async () => {
246
+ let metricParams;
247
+ try {
248
+ const response = await originalMethod.apply(this, args);
249
+ const params = args[0] || {};
250
+ const model = params.model;
251
+ const modelId = model?.modelId || 'unknown';
252
+ const aiSystem = VercelAIWrapper._getProviderFromModel(model);
253
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
254
+ const cost = helpers_1.default.getEmbedModelCost(modelId, pricingInfo, response.usage?.tokens || 0);
255
+ VercelAIWrapper.setBaseSpanAttributes(span, { genAIEndpoint, model: modelId, cost, aiSystem });
256
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_EMBEDDING);
257
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, false);
258
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, modelId);
259
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, response.usage?.tokens || 0);
260
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, response.usage?.tokens || 0);
261
+ if (config_1.default.traceContent && params.value !== undefined) {
262
+ const inputStr = typeof params.value === 'string' ? params.value : JSON.stringify(params.value);
263
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, inputStr);
264
+ }
265
+ metricParams = { genAIEndpoint, model: modelId, cost, aiSystem };
266
+ return response;
267
+ }
268
+ catch (e) {
269
+ helpers_1.default.handleException(span, e);
270
+ throw e;
271
+ }
272
+ finally {
273
+ span.end();
274
+ if (metricParams)
275
+ base_wrapper_1.default.recordMetrics(span, metricParams);
276
+ }
277
+ });
278
+ };
279
+ };
280
+ }
281
+ }
282
+ VercelAIWrapper.aiSystem = 'vercel_ai';
283
+ exports.default = VercelAIWrapper;
284
+ //# sourceMappingURL=wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/instrumentation/vercel-ai/wrapper.ts"],"names":[],"mappings":"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"}
@@ -9,6 +9,9 @@ export default class Metrics {
9
9
  static genaiClientOperationDuration: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
10
10
  static genaiServerTbt: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
11
11
  static genaiServerTtft: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
12
+ static genaiClientTimeToFirstChunk: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
13
+ static genaiClientTimePerOutputChunk: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
14
+ static genaiServerRequestDuration: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
12
15
  static dbClientOperationDuration: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
13
16
  static genaiRequests: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>;
14
17
  static genaiPromptTokens: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>;
@@ -48,6 +48,27 @@ class Metrics {
48
48
  explicitBucketBoundaries: GEN_AI_SERVER_TFTT,
49
49
  },
50
50
  });
51
+ this.genaiClientTimeToFirstChunk = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_TIME_TO_FIRST_CHUNK, {
52
+ description: 'Time from client request to first response chunk',
53
+ unit: 's',
54
+ advice: {
55
+ explicitBucketBoundaries: GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS,
56
+ },
57
+ });
58
+ this.genaiClientTimePerOutputChunk = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_TIME_PER_OUTPUT_CHUNK, {
59
+ description: 'Time between consecutive response chunks from client perspective',
60
+ unit: 's',
61
+ advice: {
62
+ explicitBucketBoundaries: GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS,
63
+ },
64
+ });
65
+ this.genaiServerRequestDuration = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_SERVER_REQUEST_DURATION, {
66
+ description: 'Total server-side processing time from request receipt to response transmission',
67
+ unit: 's',
68
+ advice: {
69
+ explicitBucketBoundaries: GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS,
70
+ },
71
+ });
51
72
  this.dbClientOperationDuration = this.meter.createHistogram(semantic_convention_1.default.DB_CLIENT_OPERATION_DURATION, {
52
73
  description: 'DB operation duration',
53
74
  unit: 's',
@@ -1 +1 @@
1
- {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/otel/metrics.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/otel/metrics.ts"],"names":[],"mappings":"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"}
@@ -47,6 +47,8 @@ export default class SemanticConvention {
47
47
  static GEN_AI_USAGE_COMPLETION_TOKENS_DETAILS_REASONING: string;
48
48
  static GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_READ: string;
49
49
  static GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_WRITE: string;
50
+ static GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS: string;
51
+ static GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS: string;
50
52
  static GEN_AI_RESPONSE_ID: string;
51
53
  static GEN_AI_RESPONSE_MODEL: string;
52
54
  static GEN_AI_RESPONSE_FINISH_REASON: string;
@@ -92,12 +94,16 @@ export default class SemanticConvention {
92
94
  static GEN_AI_SYSTEM_AWS_BEDROCK: string;
93
95
  static GEN_AI_SYSTEM_VERTEXAI: string;
94
96
  static GEN_AI_SYSTEM_LANGCHAIN: string;
97
+ static GEN_AI_SYSTEM_VERCEL_AI: string;
98
+ static GEN_AI_SYSTEM_LLAMAINDEX: string;
95
99
  static DB_REQUESTS: string;
96
100
  static DB_SYSTEM: string;
101
+ static DB_SYSTEM_NAME: string;
97
102
  static DB_SYSTEM_CHROMA: string;
98
103
  static DB_SYSTEM_PINECONE: string;
99
104
  static DB_COLLECTION_NAME: string;
100
105
  static DB_OPERATION: string;
106
+ static DB_OPERATION_NAME: string;
101
107
  static DB_OPERATION_CREATE_INDEX: string;
102
108
  static DB_OPERATION_QUERY: string;
103
109
  static DB_OPERATION_DELETE: string;
@@ -106,16 +112,22 @@ export default class SemanticConvention {
106
112
  static DB_OPERATION_GET: string;
107
113
  static DB_OPERATION_ADD: string;
108
114
  static DB_OPERATION_PEEK: string;
115
+ static DB_OPERATION_SEARCH: string;
116
+ static DB_OPERATION_FETCH: string;
109
117
  static DB_ID_COUNT: string;
110
118
  static DB_VECTOR_COUNT: string;
111
119
  static DB_METADATA_COUNT: string;
112
120
  static DB_DOCUMENTS_COUNT: string;
113
121
  static DB_QUERY_LIMIT: string;
122
+ static DB_VECTOR_QUERY_TOP_K: string;
114
123
  static DB_OFFSET: string;
115
124
  static DB_WHERE_DOCUMENT: string;
116
125
  static DB_FILTER: string;
126
+ static DB_QUERY_TEXT: string;
127
+ static DB_QUERY_SUMMARY: string;
117
128
  static DB_STATEMENT: string;
118
129
  static DB_N_RESULTS: string;
130
+ static DB_RESPONSE_RETURNED_ROWS: string;
119
131
  static DB_DELETE_ALL: string;
120
132
  static DB_INDEX_NAME: string;
121
133
  static DB_INDEX_DIMENSION: string;
@@ -126,6 +138,9 @@ export default class SemanticConvention {
126
138
  static DB_UPDATE_VALUES: string;
127
139
  static DB_UPDATE_ID: string;
128
140
  static GEN_AI_CLIENT_OPERATION_DURATION: string;
141
+ static GEN_AI_CLIENT_OPERATION_TIME_TO_FIRST_CHUNK: string;
142
+ static GEN_AI_CLIENT_OPERATION_TIME_PER_OUTPUT_CHUNK: string;
143
+ static GEN_AI_SERVER_REQUEST_DURATION: string;
129
144
  static GEN_AI_CLIENT_TOKEN_USAGE: string;
130
145
  static GEN_AI_SERVER_TBT: string;
131
146
  static GEN_AI_SERVER_TTFT: string;
@@ -55,6 +55,9 @@ SemanticConvention.GEN_AI_USAGE_COMPLETION_TOKENS_DETAILS_AUDIO = 'gen_ai.usage.
55
55
  SemanticConvention.GEN_AI_USAGE_COMPLETION_TOKENS_DETAILS_REASONING = 'gen_ai.usage.completion_tokens_details.reasoning';
56
56
  SemanticConvention.GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_READ = 'gen_ai.usage.prompt_tokens_details.cache_read';
57
57
  SemanticConvention.GEN_AI_USAGE_PROMPT_TOKENS_DETAILS_CACHE_WRITE = 'gen_ai.usage.prompt_tokens_details.cache_write';
58
+ // OTel semconv standard cache token attribute names (aligned with Python SDK)
59
+ SemanticConvention.GEN_AI_USAGE_CACHE_CREATION_INPUT_TOKENS = 'gen_ai.usage.cache_creation.input_tokens';
60
+ SemanticConvention.GEN_AI_USAGE_CACHE_READ_INPUT_TOKENS = 'gen_ai.usage.cache_read.input_tokens';
58
61
  // GenAI Response
59
62
  SemanticConvention.GEN_AI_RESPONSE_ID = 'gen_ai.response.id';
60
63
  SemanticConvention.GEN_AI_RESPONSE_MODEL = 'gen_ai.response.model';
@@ -105,31 +108,41 @@ SemanticConvention.GEN_AI_SYSTEM_MISTRAL = 'mistral_ai';
105
108
  SemanticConvention.GEN_AI_SYSTEM_AWS_BEDROCK = 'aws.bedrock';
106
109
  SemanticConvention.GEN_AI_SYSTEM_VERTEXAI = 'vertex_ai';
107
110
  SemanticConvention.GEN_AI_SYSTEM_LANGCHAIN = 'langchain';
111
+ SemanticConvention.GEN_AI_SYSTEM_VERCEL_AI = 'vercel_ai';
112
+ SemanticConvention.GEN_AI_SYSTEM_LLAMAINDEX = 'llamaindex';
108
113
  // Vector DB
109
114
  SemanticConvention.DB_REQUESTS = 'db.total.requests';
110
115
  SemanticConvention.DB_SYSTEM = 'db.system';
116
+ SemanticConvention.DB_SYSTEM_NAME = 'db.system.name';
111
117
  SemanticConvention.DB_SYSTEM_CHROMA = 'chroma';
112
118
  SemanticConvention.DB_SYSTEM_PINECONE = 'pinecone';
113
119
  SemanticConvention.DB_COLLECTION_NAME = 'db.collection.name';
114
120
  SemanticConvention.DB_OPERATION = 'db.operation';
121
+ SemanticConvention.DB_OPERATION_NAME = 'db.operation.name';
115
122
  SemanticConvention.DB_OPERATION_CREATE_INDEX = 'create_index';
116
- SemanticConvention.DB_OPERATION_QUERY = 'query';
117
- SemanticConvention.DB_OPERATION_DELETE = 'delete';
118
- SemanticConvention.DB_OPERATION_UPDATE = 'update';
119
- SemanticConvention.DB_OPERATION_UPSERT = 'upsert';
123
+ SemanticConvention.DB_OPERATION_QUERY = 'QUERY';
124
+ SemanticConvention.DB_OPERATION_DELETE = 'DELETE';
125
+ SemanticConvention.DB_OPERATION_UPDATE = 'UPDATE';
126
+ SemanticConvention.DB_OPERATION_UPSERT = 'UPSERT';
120
127
  SemanticConvention.DB_OPERATION_GET = 'get';
121
128
  SemanticConvention.DB_OPERATION_ADD = 'add';
122
129
  SemanticConvention.DB_OPERATION_PEEK = 'peek';
130
+ SemanticConvention.DB_OPERATION_SEARCH = 'SEARCH';
131
+ SemanticConvention.DB_OPERATION_FETCH = 'FETCH';
123
132
  SemanticConvention.DB_ID_COUNT = 'db.ids_count';
124
- SemanticConvention.DB_VECTOR_COUNT = 'db.vector_count';
133
+ SemanticConvention.DB_VECTOR_COUNT = 'db.vector.count';
125
134
  SemanticConvention.DB_METADATA_COUNT = 'db.metadatas_count';
126
135
  SemanticConvention.DB_DOCUMENTS_COUNT = 'db.documents_count';
127
136
  SemanticConvention.DB_QUERY_LIMIT = 'db.limit';
137
+ SemanticConvention.DB_VECTOR_QUERY_TOP_K = 'db.vector.query.top_k';
128
138
  SemanticConvention.DB_OFFSET = 'db.offset';
129
139
  SemanticConvention.DB_WHERE_DOCUMENT = 'db.where_document';
130
140
  SemanticConvention.DB_FILTER = 'db.filter';
141
+ SemanticConvention.DB_QUERY_TEXT = 'db.query.text';
142
+ SemanticConvention.DB_QUERY_SUMMARY = 'db.query.summary';
131
143
  SemanticConvention.DB_STATEMENT = 'db.statement';
132
144
  SemanticConvention.DB_N_RESULTS = 'db.n_results';
145
+ SemanticConvention.DB_RESPONSE_RETURNED_ROWS = 'db.response.returned_rows';
133
146
  SemanticConvention.DB_DELETE_ALL = 'db.delete_all';
134
147
  SemanticConvention.DB_INDEX_NAME = 'db.create_index.name';
135
148
  SemanticConvention.DB_INDEX_DIMENSION = 'db.create_index.dimensions';
@@ -140,6 +153,9 @@ SemanticConvention.DB_UPDATE_METADATA = 'db.update.metadata';
140
153
  SemanticConvention.DB_UPDATE_VALUES = 'db.update.values';
141
154
  SemanticConvention.DB_UPDATE_ID = 'db.update.id';
142
155
  SemanticConvention.GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration';
156
+ SemanticConvention.GEN_AI_CLIENT_OPERATION_TIME_TO_FIRST_CHUNK = 'gen_ai.client.operation.time_to_first_chunk';
157
+ SemanticConvention.GEN_AI_CLIENT_OPERATION_TIME_PER_OUTPUT_CHUNK = 'gen_ai.client.operation.time_per_output_chunk';
158
+ SemanticConvention.GEN_AI_SERVER_REQUEST_DURATION = 'gen_ai.server.request.duration';
143
159
  SemanticConvention.GEN_AI_CLIENT_TOKEN_USAGE = 'gen_ai.client.token.usage';
144
160
  SemanticConvention.GEN_AI_SERVER_TBT = 'gen_ai.server.time_per_output_token';
145
161
  SemanticConvention.GEN_AI_SERVER_TTFT = 'gen_ai.server.time_to_first_token';
@@ -1 +1 @@
1
- {"version":3,"file":"semantic-convention.js","sourceRoot":"","sources":["../src/semantic-convention.ts"],"names":[],"mappings":"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"}
1
+ {"version":3,"file":"semantic-convention.js","sourceRoot":"","sources":["../src/semantic-convention.ts"],"names":[],"mappings":"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"}
package/dist/types.d.ts CHANGED
@@ -1,7 +1,7 @@
1
1
  import { Resource } from '@opentelemetry/resources';
2
2
  import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
3
3
  import { metrics } from '@opentelemetry/api';
4
- export type InstrumentationType = 'openai' | 'anthropic' | 'cohere' | 'groq' | 'mistral' | 'google-ai' | 'together' | 'ollama';
4
+ export type InstrumentationType = 'openai' | 'anthropic' | 'cohere' | 'groq' | 'mistral' | 'google-ai' | 'together' | 'ollama' | 'vercel-ai' | 'langchain' | 'pinecone' | 'bedrock' | 'llamaindex';
5
5
  export type OpenlitInstrumentations = Partial<Record<InstrumentationType, any>>;
6
6
  export type PricingObject = Record<string, Record<string, unknown>>;
7
7
  /**
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openlit",
3
- "version": "1.8.0",
3
+ "version": "1.9.1",
4
4
  "homepage": "https://github.com/openlit/openlit#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/openlit/openlit/issues",