openlit 1.7.1 → 1.9.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.
Files changed (101) hide show
  1. package/README.md +14 -10
  2. package/dist/helpers.d.ts +10 -0
  3. package/dist/helpers.js +106 -3
  4. package/dist/helpers.js.map +1 -1
  5. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js +1 -1
  6. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js.map +1 -1
  7. package/dist/instrumentation/__tests__/base-wrapper.test.js +1 -1
  8. package/dist/instrumentation/__tests__/base-wrapper.test.js.map +1 -1
  9. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.d.ts +4 -0
  10. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js +99 -0
  11. package/dist/instrumentation/__tests__/google-ai-trace-comparison.test.js.map +1 -0
  12. package/dist/instrumentation/__tests__/groq-trace-comparison.test.d.ts +7 -0
  13. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js +180 -0
  14. package/dist/instrumentation/__tests__/groq-trace-comparison.test.js.map +1 -0
  15. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.d.ts +4 -0
  16. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js +127 -0
  17. package/dist/instrumentation/__tests__/mistral-trace-comparison.test.js.map +1 -0
  18. package/dist/instrumentation/__tests__/together-trace-comparison.test.d.ts +4 -0
  19. package/dist/instrumentation/__tests__/together-trace-comparison.test.js +98 -0
  20. package/dist/instrumentation/__tests__/together-trace-comparison.test.js.map +1 -0
  21. package/dist/instrumentation/__tests__/trace-comparison-utils.d.ts +66 -0
  22. package/dist/instrumentation/__tests__/trace-comparison-utils.js +245 -0
  23. package/dist/instrumentation/__tests__/trace-comparison-utils.js.map +1 -0
  24. package/dist/instrumentation/anthropic/index.js +6 -4
  25. package/dist/instrumentation/anthropic/index.js.map +1 -1
  26. package/dist/instrumentation/anthropic/wrapper.js +12 -30
  27. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  28. package/dist/instrumentation/base-wrapper.js +2 -2
  29. package/dist/instrumentation/base-wrapper.js.map +1 -1
  30. package/dist/instrumentation/bedrock/index.d.ts +11 -0
  31. package/dist/instrumentation/bedrock/index.js +52 -0
  32. package/dist/instrumentation/bedrock/index.js.map +1 -0
  33. package/dist/instrumentation/bedrock/wrapper.d.ts +10 -0
  34. package/dist/instrumentation/bedrock/wrapper.js +345 -0
  35. package/dist/instrumentation/bedrock/wrapper.js.map +1 -0
  36. package/dist/instrumentation/cohere/wrapper.js +8 -10
  37. package/dist/instrumentation/cohere/wrapper.js.map +1 -1
  38. package/dist/instrumentation/google-ai/index.d.ts +11 -0
  39. package/dist/instrumentation/google-ai/index.js +48 -0
  40. package/dist/instrumentation/google-ai/index.js.map +1 -0
  41. package/dist/instrumentation/google-ai/wrapper.d.ts +34 -0
  42. package/dist/instrumentation/google-ai/wrapper.js +241 -0
  43. package/dist/instrumentation/google-ai/wrapper.js.map +1 -0
  44. package/dist/instrumentation/groq/index.d.ts +11 -0
  45. package/dist/instrumentation/groq/index.js +43 -0
  46. package/dist/instrumentation/groq/index.js.map +1 -0
  47. package/dist/instrumentation/groq/wrapper.d.ts +33 -0
  48. package/dist/instrumentation/groq/wrapper.js +289 -0
  49. package/dist/instrumentation/groq/wrapper.js.map +1 -0
  50. package/dist/instrumentation/index.js +20 -0
  51. package/dist/instrumentation/index.js.map +1 -1
  52. package/dist/instrumentation/langchain/index.d.ts +23 -0
  53. package/dist/instrumentation/langchain/index.js +109 -0
  54. package/dist/instrumentation/langchain/index.js.map +1 -0
  55. package/dist/instrumentation/langchain/wrapper.d.ts +6 -0
  56. package/dist/instrumentation/langchain/wrapper.js +318 -0
  57. package/dist/instrumentation/langchain/wrapper.js.map +1 -0
  58. package/dist/instrumentation/llamaindex/index.d.ts +11 -0
  59. package/dist/instrumentation/llamaindex/index.js +102 -0
  60. package/dist/instrumentation/llamaindex/index.js.map +1 -0
  61. package/dist/instrumentation/llamaindex/wrapper.d.ts +11 -0
  62. package/dist/instrumentation/llamaindex/wrapper.js +252 -0
  63. package/dist/instrumentation/llamaindex/wrapper.js.map +1 -0
  64. package/dist/instrumentation/mistral/index.d.ts +11 -0
  65. package/dist/instrumentation/mistral/index.js +66 -0
  66. package/dist/instrumentation/mistral/index.js.map +1 -0
  67. package/dist/instrumentation/mistral/wrapper.d.ts +34 -0
  68. package/dist/instrumentation/mistral/wrapper.js +340 -0
  69. package/dist/instrumentation/mistral/wrapper.js.map +1 -0
  70. package/dist/instrumentation/ollama/wrapper.d.ts +11 -3
  71. package/dist/instrumentation/ollama/wrapper.js +60 -95
  72. package/dist/instrumentation/ollama/wrapper.js.map +1 -1
  73. package/dist/instrumentation/openai/index.js +1 -1
  74. package/dist/instrumentation/openai/index.js.map +1 -1
  75. package/dist/instrumentation/openai/wrapper.js +14 -84
  76. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  77. package/dist/instrumentation/pinecone/index.d.ts +11 -0
  78. package/dist/instrumentation/pinecone/index.js +79 -0
  79. package/dist/instrumentation/pinecone/index.js.map +1 -0
  80. package/dist/instrumentation/pinecone/wrapper.d.ts +14 -0
  81. package/dist/instrumentation/pinecone/wrapper.js +198 -0
  82. package/dist/instrumentation/pinecone/wrapper.js.map +1 -0
  83. package/dist/instrumentation/together/index.d.ts +11 -0
  84. package/dist/instrumentation/together/index.js +43 -0
  85. package/dist/instrumentation/together/index.js.map +1 -0
  86. package/dist/instrumentation/together/wrapper.d.ts +33 -0
  87. package/dist/instrumentation/together/wrapper.js +271 -0
  88. package/dist/instrumentation/together/wrapper.js.map +1 -0
  89. package/dist/instrumentation/vercel-ai/index.d.ts +10 -0
  90. package/dist/instrumentation/vercel-ai/index.js +59 -0
  91. package/dist/instrumentation/vercel-ai/index.js.map +1 -0
  92. package/dist/instrumentation/vercel-ai/wrapper.d.ts +11 -0
  93. package/dist/instrumentation/vercel-ai/wrapper.js +248 -0
  94. package/dist/instrumentation/vercel-ai/wrapper.js.map +1 -0
  95. package/dist/otel/__tests__/metrics.test.js +5 -5
  96. package/dist/otel/__tests__/metrics.test.js.map +1 -1
  97. package/dist/semantic-convention.d.ts +14 -3
  98. package/dist/semantic-convention.js +19 -8
  99. package/dist/semantic-convention.js.map +1 -1
  100. package/dist/types.d.ts +1 -1
  101. package/package.json +1 -1
@@ -0,0 +1,318 @@
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
+ // Singleton handler — injected once into every CallbackManager created
12
+ let handlerInstance = null;
13
+ class OpenLITCallbackHandler {
14
+ constructor(tracer) {
15
+ this.name = 'openlit_callback_handler';
16
+ this.lc_serializable = false;
17
+ // LangChain checks this to decide if it should be copied to child runs
18
+ this.awaitHandlers = false;
19
+ this.spans = new Map();
20
+ this.tracer = tracer;
21
+ }
22
+ // ---- Model name helpers --------------------------------------------------
23
+ _extractModelName(llm) {
24
+ if (!llm)
25
+ return 'unknown';
26
+ const id = llm.id || [];
27
+ const className = id[id.length - 1] || '';
28
+ // Try various well-known invocation_params / kwargs paths
29
+ const kw = llm.kwargs || {};
30
+ const ip = kw.invocation_params || {};
31
+ return (ip.model_name || ip.model || ip.model_id ||
32
+ kw.model_name || kw.model || kw.model_id ||
33
+ className || 'unknown');
34
+ }
35
+ _detectProvider(llm) {
36
+ if (!llm)
37
+ return semantic_convention_1.default.GEN_AI_SYSTEM_LANGCHAIN;
38
+ const classPath = (llm.id || []).join('.').toLowerCase();
39
+ const providerMap = {
40
+ openai: semantic_convention_1.default.GEN_AI_SYSTEM_OPENAI,
41
+ anthropic: semantic_convention_1.default.GEN_AI_SYSTEM_ANTHROPIC,
42
+ bedrock: semantic_convention_1.default.GEN_AI_SYSTEM_AWS_BEDROCK,
43
+ google: semantic_convention_1.default.GEN_AI_SYSTEM_VERTEXAI,
44
+ cohere: semantic_convention_1.default.GEN_AI_SYSTEM_COHERE,
45
+ mistral: semantic_convention_1.default.GEN_AI_SYSTEM_MISTRAL,
46
+ };
47
+ for (const [key, val] of Object.entries(providerMap)) {
48
+ if (classPath.includes(key))
49
+ return val;
50
+ }
51
+ return semantic_convention_1.default.GEN_AI_SYSTEM_LANGCHAIN;
52
+ }
53
+ // ---- Parent context -------------------------------------------------------
54
+ _getParentContext(parentRunId) {
55
+ if (!parentRunId)
56
+ return undefined;
57
+ const holder = this.spans.get(parentRunId);
58
+ if (!holder)
59
+ return undefined;
60
+ return api_1.trace.setSpan(api_1.context.active(), holder.span);
61
+ }
62
+ // ---- LLM callbacks -------------------------------------------------------
63
+ handleChatModelStart(llm, messages, runId, parentRunId, _extraParams, _tags, metadata, name) {
64
+ try {
65
+ const modelName = this._extractModelName(llm);
66
+ const provider = this._detectProvider(llm);
67
+ const spanName = `chat ${modelName}`;
68
+ const parentCtx = this._getParentContext(parentRunId);
69
+ const span = this.tracer.startSpan(spanName, { kind: api_1.SpanKind.CLIENT }, parentCtx);
70
+ span.setAttribute(semantic_convention_1.default.GEN_AI_PROVIDER_NAME, provider);
71
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_CHAT);
72
+ span.setAttribute(semantic_convention_1.default.GEN_AI_ENVIRONMENT, config_1.default.environment || '');
73
+ span.setAttribute(semantic_convention_1.default.GEN_AI_APPLICATION_NAME, config_1.default.applicationName || '');
74
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MODEL, modelName);
75
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, false);
76
+ // Model parameters from invocation_params
77
+ const ip = llm?.kwargs?.invocation_params || {};
78
+ if (ip.temperature != null)
79
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TEMPERATURE, ip.temperature);
80
+ if (ip.max_tokens != null)
81
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_MAX_TOKENS, ip.max_tokens);
82
+ if (ip.top_p != null)
83
+ span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_TOP_P, ip.top_p);
84
+ if (config_1.default.traceContent && messages?.length > 0) {
85
+ const flatMessages = messages.flat().map((m) => ({
86
+ role: m._getType?.() || m.type || m.role || 'user',
87
+ content: typeof m.content === 'string' ? m.content : JSON.stringify(m.content),
88
+ }));
89
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, helpers_1.default.buildInputMessages(flatMessages));
90
+ }
91
+ this.spans.set(runId, {
92
+ span,
93
+ startTime: Date.now(),
94
+ modelName,
95
+ parentRunId,
96
+ streamingContent: [],
97
+ tokenTimestamps: [],
98
+ promptTokens: 0,
99
+ completionTokens: 0,
100
+ });
101
+ }
102
+ catch { /* non-blocking */ }
103
+ }
104
+ handleLLMNewToken(token, _idx, runId) {
105
+ try {
106
+ const holder = this.spans.get(runId);
107
+ if (!holder)
108
+ return;
109
+ const now = Date.now();
110
+ if (!holder.firstTokenTime)
111
+ holder.firstTokenTime = now;
112
+ holder.tokenTimestamps.push(now);
113
+ if (token)
114
+ holder.streamingContent.push(token);
115
+ // Mark as streaming
116
+ holder.span.setAttribute(semantic_convention_1.default.GEN_AI_REQUEST_IS_STREAM, true);
117
+ }
118
+ catch { /* non-blocking */ }
119
+ }
120
+ handleLLMEnd(output, runId) {
121
+ this._finalizeLLMSpan(runId, output, undefined);
122
+ }
123
+ handleLLMError(error, runId) {
124
+ try {
125
+ const holder = this.spans.get(runId);
126
+ if (!holder)
127
+ return;
128
+ helpers_1.default.handleException(holder.span, error);
129
+ holder.span.end();
130
+ this.spans.delete(runId);
131
+ }
132
+ catch { /* non-blocking */ }
133
+ }
134
+ async _finalizeLLMSpan(runId, output, _error) {
135
+ try {
136
+ const holder = this.spans.get(runId);
137
+ if (!holder)
138
+ return;
139
+ const { span, startTime, modelName, streamingContent, tokenTimestamps, firstTokenTime } = holder;
140
+ const endTime = Date.now();
141
+ const isStreaming = streamingContent.length > 0;
142
+ // Extract tokens from output
143
+ let promptTokens = 0;
144
+ let completionTokens = 0;
145
+ let completionContent = '';
146
+ let finishReason = 'stop';
147
+ let responseModel = modelName;
148
+ if (output?.llm_output) {
149
+ const lu = output.llm_output;
150
+ const tu = lu.token_usage || lu.usage || {};
151
+ promptTokens = tu.prompt_tokens || tu.input_tokens || 0;
152
+ completionTokens = tu.completion_tokens || tu.output_tokens || 0;
153
+ responseModel = lu.model_name || lu.model || modelName;
154
+ }
155
+ const generations = output?.generations || [];
156
+ for (const genList of generations) {
157
+ for (const gen of (Array.isArray(genList) ? genList : [genList])) {
158
+ const msg = gen?.message || gen;
159
+ // From usage_metadata (standard LangChain)
160
+ const um = msg?.usage_metadata;
161
+ if (um) {
162
+ if (!promptTokens)
163
+ promptTokens = um.input_tokens || um.prompt_tokens || 0;
164
+ if (!completionTokens)
165
+ completionTokens = um.output_tokens || um.completion_tokens || 0;
166
+ }
167
+ // Content
168
+ const content = gen?.text || msg?.content || '';
169
+ if (content && typeof content === 'string' && content.length > completionContent.length) {
170
+ completionContent = content;
171
+ }
172
+ // Finish reason
173
+ const fr = gen?.generationInfo?.finish_reason || msg?.response_metadata?.finish_reason;
174
+ if (fr)
175
+ finishReason = fr;
176
+ }
177
+ }
178
+ if (isStreaming) {
179
+ completionContent = streamingContent.join('');
180
+ }
181
+ const totalTokens = promptTokens + completionTokens;
182
+ const duration = (endTime - startTime) / 1000;
183
+ const pricingInfo = await config_1.default.updatePricingJson(config_1.default.pricing_json);
184
+ const cost = helpers_1.default.getChatModelCost(responseModel, pricingInfo, promptTokens, completionTokens);
185
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_MODEL, responseModel);
186
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, promptTokens);
187
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, completionTokens);
188
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, totalTokens);
189
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_TOKEN_USAGE, totalTokens);
190
+ span.setAttribute(semantic_convention_1.default.GEN_AI_USAGE_COST, cost);
191
+ span.setAttribute(semantic_convention_1.default.GEN_AI_RESPONSE_FINISH_REASON, [finishReason]);
192
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_TYPE, semantic_convention_1.default.GEN_AI_OUTPUT_TYPE_TEXT);
193
+ span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_DURATION, duration);
194
+ if (isStreaming && firstTokenTime) {
195
+ const ttft = (firstTokenTime - startTime) / 1000;
196
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SERVER_TTFT, ttft);
197
+ if (tokenTimestamps.length > 1) {
198
+ const diffs = tokenTimestamps.slice(1).map((t, i) => t - tokenTimestamps[i]);
199
+ const tbt = diffs.reduce((a, b) => a + b, 0) / diffs.length / 1000;
200
+ span.setAttribute(semantic_convention_1.default.GEN_AI_SERVER_TBT, tbt);
201
+ }
202
+ }
203
+ if (config_1.default.traceContent && completionContent) {
204
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, helpers_1.default.buildOutputMessages(completionContent, finishReason));
205
+ }
206
+ // base attributes (system, endpoint, etc.)
207
+ base_wrapper_1.default.setBaseSpanAttributes(span, {
208
+ genAIEndpoint: `langchain.chat_model`,
209
+ model: responseModel,
210
+ cost,
211
+ aiSystem: semantic_convention_1.default.GEN_AI_SYSTEM_LANGCHAIN,
212
+ });
213
+ const metricParams = {
214
+ genAIEndpoint: 'langchain.chat_model',
215
+ model: responseModel,
216
+ cost,
217
+ aiSystem: semantic_convention_1.default.GEN_AI_SYSTEM_LANGCHAIN,
218
+ };
219
+ span.setStatus({ code: 1 });
220
+ span.end();
221
+ base_wrapper_1.default.recordMetrics(span, metricParams);
222
+ this.spans.delete(runId);
223
+ }
224
+ catch { /* non-blocking */ }
225
+ }
226
+ // ---- Chain callbacks -------------------------------------------------------
227
+ handleChainStart(chain, inputs, runId, parentRunId) {
228
+ try {
229
+ const id = chain?.id || [];
230
+ const name = id[id.length - 1] || 'chain';
231
+ const spanName = `workflow ${name}`;
232
+ const parentCtx = this._getParentContext(parentRunId);
233
+ const span = this.tracer.startSpan(spanName, { kind: api_1.SpanKind.INTERNAL }, parentCtx);
234
+ span.setAttribute(semantic_convention_1.default.GEN_AI_PROVIDER_NAME, semantic_convention_1.default.GEN_AI_SYSTEM_LANGCHAIN);
235
+ span.setAttribute(semantic_convention_1.default.GEN_AI_OPERATION, semantic_convention_1.default.GEN_AI_OPERATION_TYPE_FRAMEWORK);
236
+ span.setAttribute(semantic_convention_1.default.GEN_AI_ENVIRONMENT, config_1.default.environment || '');
237
+ span.setAttribute(semantic_convention_1.default.GEN_AI_APPLICATION_NAME, config_1.default.applicationName || '');
238
+ if (config_1.default.traceContent && inputs) {
239
+ span.setAttribute(semantic_convention_1.default.GEN_AI_INPUT_MESSAGES, JSON.stringify(inputs).slice(0, 2000));
240
+ }
241
+ this.spans.set(runId, {
242
+ span,
243
+ startTime: Date.now(),
244
+ modelName: name,
245
+ parentRunId,
246
+ streamingContent: [],
247
+ tokenTimestamps: [],
248
+ promptTokens: 0,
249
+ completionTokens: 0,
250
+ });
251
+ }
252
+ catch { /* non-blocking */ }
253
+ }
254
+ handleChainEnd(outputs, runId) {
255
+ try {
256
+ const holder = this.spans.get(runId);
257
+ if (!holder)
258
+ return;
259
+ const duration = (Date.now() - holder.startTime) / 1000;
260
+ holder.span.setAttribute(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_DURATION, duration);
261
+ if (config_1.default.traceContent && outputs) {
262
+ holder.span.setAttribute(semantic_convention_1.default.GEN_AI_OUTPUT_MESSAGES, JSON.stringify(outputs).slice(0, 2000));
263
+ }
264
+ holder.span.setStatus({ code: 1 });
265
+ holder.span.end();
266
+ this.spans.delete(runId);
267
+ }
268
+ catch { /* non-blocking */ }
269
+ }
270
+ handleChainError(error, runId) {
271
+ try {
272
+ const holder = this.spans.get(runId);
273
+ if (!holder)
274
+ return;
275
+ helpers_1.default.handleException(holder.span, error);
276
+ holder.span.end();
277
+ this.spans.delete(runId);
278
+ }
279
+ catch { /* non-blocking */ }
280
+ }
281
+ }
282
+ // ----------------------------------------------------------------------------
283
+ // Wrapper factory
284
+ // ----------------------------------------------------------------------------
285
+ class LangChainWrapper extends base_wrapper_1.default {
286
+ static _patchConfigure(tracer) {
287
+ // Ensure singleton handler
288
+ if (!handlerInstance) {
289
+ handlerInstance = new OpenLITCallbackHandler(tracer);
290
+ }
291
+ const handler = handlerInstance;
292
+ return (originalConfigure) => {
293
+ return function (inheritableHandlers, ...rest) {
294
+ // inheritableHandlers can be:
295
+ // - undefined : no handlers passed
296
+ // - Array : list of handler objects (chat model calls)
297
+ // - CallbackManager instance: already-built manager (Runnable/chain calls)
298
+ if (Array.isArray(inheritableHandlers) || !inheritableHandlers) {
299
+ const handlers = inheritableHandlers ? [...inheritableHandlers] : [];
300
+ if (!handlers.some((h) => h?.name === 'openlit_callback_handler')) {
301
+ handlers.unshift(handler);
302
+ }
303
+ return originalConfigure.call(this, handlers, ...rest);
304
+ }
305
+ else {
306
+ // Existing CallbackManager — add our handler directly
307
+ const cbManager = inheritableHandlers;
308
+ if (cbManager?.handlers && !cbManager.handlers.some((h) => h?.name === 'openlit_callback_handler')) {
309
+ cbManager.addHandler(handler, true);
310
+ }
311
+ return originalConfigure.call(this, cbManager, ...rest);
312
+ }
313
+ };
314
+ };
315
+ }
316
+ }
317
+ exports.default = LangChainWrapper;
318
+ //# sourceMappingURL=wrapper.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"wrapper.js","sourceRoot":"","sources":["../../../src/instrumentation/langchain/wrapper.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';
2
+ import { InstrumentationConfig } from '@opentelemetry/instrumentation';
3
+ export interface LlamaIndexInstrumentationConfig extends InstrumentationConfig {
4
+ }
5
+ export default class OpenlitLlamaIndexInstrumentation extends InstrumentationBase {
6
+ constructor(config?: LlamaIndexInstrumentationConfig);
7
+ protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[];
8
+ manualPatch(llamaindex: any): void;
9
+ protected _patch(moduleExports: any): void;
10
+ protected _unpatch(moduleExports: any): void;
11
+ }
@@ -0,0 +1,102 @@
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
+ class OpenlitLlamaIndexInstrumentation extends instrumentation_1.InstrumentationBase {
10
+ constructor(config = {}) {
11
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-llamaindex`, '1.0.0', config);
12
+ }
13
+ init() {
14
+ const module = new instrumentation_1.InstrumentationNodeModuleDefinition('llamaindex', ['>=0.3.0'], (moduleExports) => {
15
+ this._patch(moduleExports);
16
+ return moduleExports;
17
+ }, (moduleExports) => {
18
+ if (moduleExports !== undefined) {
19
+ this._unpatch(moduleExports);
20
+ }
21
+ });
22
+ return [module];
23
+ }
24
+ manualPatch(llamaindex) {
25
+ this._patch(llamaindex);
26
+ }
27
+ _patch(moduleExports) {
28
+ try {
29
+ // Patch query engines
30
+ const queryEngineClasses = [
31
+ 'RetrieverQueryEngine',
32
+ 'BaseQueryEngine',
33
+ 'QueryEngine',
34
+ ];
35
+ for (const className of queryEngineClasses) {
36
+ const QueryEngineClass = moduleExports[className];
37
+ if (QueryEngineClass?.prototype?.query) {
38
+ if ((0, instrumentation_1.isWrapped)(QueryEngineClass.prototype.query)) {
39
+ this._unwrap(QueryEngineClass.prototype, 'query');
40
+ }
41
+ this._wrap(QueryEngineClass.prototype, 'query', wrapper_1.default._patchQueryEngineQuery(this.tracer));
42
+ break; // Only patch the first one found to avoid duplicates
43
+ }
44
+ }
45
+ // Patch chat engines
46
+ const chatEngineClasses = [
47
+ 'ContextChatEngine',
48
+ 'SimpleChatEngine',
49
+ 'BaseChatEngine',
50
+ ];
51
+ for (const className of chatEngineClasses) {
52
+ const ChatEngineClass = moduleExports[className];
53
+ if (ChatEngineClass?.prototype?.chat) {
54
+ if ((0, instrumentation_1.isWrapped)(ChatEngineClass.prototype.chat)) {
55
+ this._unwrap(ChatEngineClass.prototype, 'chat');
56
+ }
57
+ this._wrap(ChatEngineClass.prototype, 'chat', wrapper_1.default._patchChatEngineChat(this.tracer));
58
+ break; // Only patch the first one found
59
+ }
60
+ }
61
+ // Patch base LLM chat and complete methods for lower-level tracing
62
+ const llmClasses = ['OpenAI', 'Anthropic', 'Ollama', 'LLM', 'BaseLLM'];
63
+ for (const className of llmClasses) {
64
+ const LLMClass = moduleExports[className];
65
+ if (!LLMClass?.prototype)
66
+ continue;
67
+ if (LLMClass.prototype.chat && !(0, instrumentation_1.isWrapped)(LLMClass.prototype.chat)) {
68
+ this._wrap(LLMClass.prototype, 'chat', wrapper_1.default._patchLLMChat(this.tracer));
69
+ }
70
+ if (LLMClass.prototype.complete && !(0, instrumentation_1.isWrapped)(LLMClass.prototype.complete)) {
71
+ this._wrap(LLMClass.prototype, 'complete', wrapper_1.default._patchLLMComplete(this.tracer));
72
+ }
73
+ }
74
+ }
75
+ catch (e) {
76
+ console.error('Error in LlamaIndex _patch method:', e);
77
+ }
78
+ }
79
+ _unpatch(moduleExports) {
80
+ try {
81
+ const allClasses = [
82
+ 'RetrieverQueryEngine', 'BaseQueryEngine', 'QueryEngine',
83
+ 'ContextChatEngine', 'SimpleChatEngine', 'BaseChatEngine',
84
+ 'OpenAI', 'Anthropic', 'Ollama', 'LLM', 'BaseLLM',
85
+ ];
86
+ for (const className of allClasses) {
87
+ const Cls = moduleExports[className];
88
+ if (Cls?.prototype) {
89
+ if ((0, instrumentation_1.isWrapped)(Cls.prototype.query))
90
+ this._unwrap(Cls.prototype, 'query');
91
+ if ((0, instrumentation_1.isWrapped)(Cls.prototype.chat))
92
+ this._unwrap(Cls.prototype, 'chat');
93
+ if ((0, instrumentation_1.isWrapped)(Cls.prototype.complete))
94
+ this._unwrap(Cls.prototype, 'complete');
95
+ }
96
+ }
97
+ }
98
+ catch { /* ignore */ }
99
+ }
100
+ }
101
+ exports.default = OpenlitLlamaIndexInstrumentation;
102
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/llamaindex/index.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,11 @@
1
+ import { Tracer } from '@opentelemetry/api';
2
+ import BaseWrapper from '../base-wrapper';
3
+ declare class LlamaIndexWrapper extends BaseWrapper {
4
+ static aiSystem: string;
5
+ private static _extractServerInfo;
6
+ static _patchLLMChat(tracer: Tracer): any;
7
+ static _patchLLMComplete(tracer: Tracer): any;
8
+ static _patchQueryEngineQuery(tracer: Tracer): any;
9
+ static _patchChatEngineChat(tracer: Tracer): any;
10
+ }
11
+ export default LlamaIndexWrapper;