openlit 1.5.0 → 1.7.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 (90) hide show
  1. package/README.md +18 -0
  2. package/dist/evals/base.js +1 -1
  3. package/dist/evals/base.js.map +1 -1
  4. package/dist/guard/__tests__/gaurd.test.d.ts +1 -0
  5. package/dist/guard/__tests__/gaurd.test.js +136 -0
  6. package/dist/guard/__tests__/gaurd.test.js.map +1 -0
  7. package/dist/guard/__tests__/utils.test.d.ts +1 -0
  8. package/dist/guard/__tests__/utils.test.js +64 -0
  9. package/dist/guard/__tests__/utils.test.js.map +1 -0
  10. package/dist/guard/all.d.ts +8 -0
  11. package/dist/guard/all.js +28 -0
  12. package/dist/guard/all.js.map +1 -0
  13. package/dist/guard/base.d.ts +15 -0
  14. package/dist/guard/base.js +58 -0
  15. package/dist/guard/base.js.map +1 -0
  16. package/dist/guard/index.d.ts +5 -0
  17. package/dist/guard/index.js +24 -0
  18. package/dist/guard/index.js.map +1 -0
  19. package/dist/guard/prompt-injection.d.ts +7 -0
  20. package/dist/guard/prompt-injection.js +79 -0
  21. package/dist/guard/prompt-injection.js.map +1 -0
  22. package/dist/guard/sensitive-topic.d.ts +7 -0
  23. package/dist/guard/sensitive-topic.js +75 -0
  24. package/dist/guard/sensitive-topic.js.map +1 -0
  25. package/dist/guard/topic-restriction.d.ts +7 -0
  26. package/dist/guard/topic-restriction.js +75 -0
  27. package/dist/guard/topic-restriction.js.map +1 -0
  28. package/dist/guard/types.d.ts +26 -0
  29. package/dist/guard/types.js +4 -0
  30. package/dist/guard/types.js.map +1 -0
  31. package/dist/guard/utils.d.ts +13 -0
  32. package/dist/guard/utils.js +79 -0
  33. package/dist/guard/utils.js.map +1 -0
  34. package/dist/index.d.ts +19 -2
  35. package/dist/index.js +31 -6
  36. package/dist/index.js.map +1 -1
  37. package/dist/instrumentation/__tests__/anthropic-wrapper.test.d.ts +1 -0
  38. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js +92 -0
  39. package/dist/instrumentation/__tests__/anthropic-wrapper.test.js.map +1 -0
  40. package/dist/instrumentation/__tests__/base-wrapper.test.d.ts +1 -0
  41. package/dist/instrumentation/__tests__/base-wrapper.test.js +175 -0
  42. package/dist/instrumentation/__tests__/base-wrapper.test.js.map +1 -0
  43. package/dist/instrumentation/__tests__/cohere-wrapper.test.d.ts +1 -0
  44. package/dist/instrumentation/__tests__/cohere-wrapper.test.js +131 -0
  45. package/dist/instrumentation/__tests__/cohere-wrapper.test.js.map +1 -0
  46. package/dist/instrumentation/__tests__/openai-wrapper.test.d.ts +1 -0
  47. package/dist/instrumentation/__tests__/openai-wrapper.test.js +118 -0
  48. package/dist/instrumentation/__tests__/openai-wrapper.test.js.map +1 -0
  49. package/dist/instrumentation/anthropic/wrapper.d.ts +7 -1
  50. package/dist/instrumentation/anthropic/wrapper.js +16 -1
  51. package/dist/instrumentation/anthropic/wrapper.js.map +1 -1
  52. package/dist/instrumentation/base-wrapper.d.ts +3 -2
  53. package/dist/instrumentation/base-wrapper.js +81 -1
  54. package/dist/instrumentation/base-wrapper.js.map +1 -1
  55. package/dist/instrumentation/cohere/wrapper.d.ts +7 -1
  56. package/dist/instrumentation/cohere/wrapper.js +19 -2
  57. package/dist/instrumentation/cohere/wrapper.js.map +1 -1
  58. package/dist/instrumentation/ollama/wrapper.d.ts +2 -1
  59. package/dist/instrumentation/ollama/wrapper.js +2 -2
  60. package/dist/instrumentation/ollama/wrapper.js.map +1 -1
  61. package/dist/instrumentation/openai/wrapper.d.ts +9 -2
  62. package/dist/instrumentation/openai/wrapper.js +86 -3
  63. package/dist/instrumentation/openai/wrapper.js.map +1 -1
  64. package/dist/llm/anthropic.d.ts +5 -0
  65. package/dist/llm/anthropic.js +35 -0
  66. package/dist/llm/anthropic.js.map +1 -0
  67. package/dist/llm/index.d.ts +3 -0
  68. package/dist/llm/index.js +93 -0
  69. package/dist/llm/index.js.map +1 -0
  70. package/dist/llm/openai.d.ts +6 -0
  71. package/dist/llm/openai.js +48 -0
  72. package/dist/llm/openai.js.map +1 -0
  73. package/dist/llm/providers.d.ts +7 -0
  74. package/dist/llm/providers.js +10 -0
  75. package/dist/llm/providers.js.map +1 -0
  76. package/dist/otel/__tests__/metrics.test.d.ts +1 -0
  77. package/dist/otel/__tests__/metrics.test.js +51 -0
  78. package/dist/otel/__tests__/metrics.test.js.map +1 -0
  79. package/dist/otel/metrics.d.ts +22 -0
  80. package/dist/otel/metrics.js +132 -0
  81. package/dist/otel/metrics.js.map +1 -0
  82. package/dist/{tracing.d.ts → otel/tracing.d.ts} +1 -1
  83. package/dist/{tracing.js → otel/tracing.js} +17 -15
  84. package/dist/otel/tracing.js.map +1 -0
  85. package/dist/semantic-convention.d.ts +6 -0
  86. package/dist/semantic-convention.js +8 -1
  87. package/dist/semantic-convention.js.map +1 -1
  88. package/dist/types.d.ts +7 -0
  89. package/package.json +10 -11
  90. package/dist/tracing.js.map +0 -1
@@ -0,0 +1,51 @@
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 metrics_1 = __importDefault(require("../metrics"));
7
+ const semantic_convention_1 = __importDefault(require("../../semantic-convention"));
8
+ const resources_1 = require("@opentelemetry/resources");
9
+ const sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
10
+ describe('Metrics creation', () => {
11
+ beforeEach(() => {
12
+ metrics_1.default.setup({ resource: (0, resources_1.defaultResource)(), otlpEndpoint: 'http://localhost:4318' }); // Ensure metrics are initialized
13
+ });
14
+ it('should create genaiRequests counter and allow increment', () => {
15
+ expect(metrics_1.default.genaiRequests).toBeDefined();
16
+ expect(typeof metrics_1.default.genaiRequests.add).toBe('function');
17
+ expect(() => metrics_1.default.genaiRequests.add(1, { [semantic_convention_1.default.GEN_AI_SYSTEM]: 'openai' })).not.toThrow();
18
+ });
19
+ it('should create genaiPromptTokens counter and allow increment', () => {
20
+ expect(metrics_1.default.genaiPromptTokens).toBeDefined();
21
+ expect(typeof metrics_1.default.genaiPromptTokens.add).toBe('function');
22
+ expect(() => metrics_1.default.genaiPromptTokens.add(42, { [semantic_convention_1.default.GEN_AI_SYSTEM]: 'openai' })).not.toThrow();
23
+ });
24
+ it('should create genaiCompletionTokens counter and allow increment', () => {
25
+ expect(metrics_1.default.genaiCompletionTokens).toBeDefined();
26
+ expect(typeof metrics_1.default.genaiCompletionTokens.add).toBe('function');
27
+ expect(() => metrics_1.default.genaiCompletionTokens.add(24, { [semantic_convention_1.default.GEN_AI_SYSTEM]: 'openai' })).not.toThrow();
28
+ });
29
+ it('should create genaiClientOperationDuration histogram and allow record', () => {
30
+ expect(metrics_1.default.genaiClientOperationDuration).toBeDefined();
31
+ expect(typeof metrics_1.default.genaiClientOperationDuration.record).toBe('function');
32
+ expect(() => metrics_1.default.genaiClientOperationDuration.record(1.23, { [semantic_convention_1.default.GEN_AI_SYSTEM]: 'openai' })).not.toThrow();
33
+ });
34
+ it('should create genaiCost histogram and allow record', () => {
35
+ expect(metrics_1.default.genaiCost).toBeDefined();
36
+ expect(typeof metrics_1.default.genaiCost.record).toBe('function');
37
+ expect(() => metrics_1.default.genaiCost.record(0.99, { [semantic_convention_1.default.GEN_AI_SYSTEM]: 'openai' })).not.toThrow();
38
+ });
39
+ it('should throw an error when allowConsoleExporterFallback is not set and fallback is required', () => {
40
+ expect(() => {
41
+ metrics_1.default.handleExporterFallback(new Error('Simulated OTLPMetricExporter failure'), false);
42
+ }).toThrow('[Metrics] Failed to initialize OTLPMetricExporter and fallback to ConsoleMetricExporter is disabled. Set allowConsoleExporterFallback=true to enable fallback (not recommended for production).');
43
+ });
44
+ it('should use ConsoleMetricExporter when allowConsoleExporterFallback is set to true', () => {
45
+ expect(() => {
46
+ const exporter = metrics_1.default.handleExporterFallback(new Error('Simulated OTLPMetricExporter failure'), true);
47
+ expect(exporter).toBeInstanceOf(sdk_metrics_1.ConsoleMetricExporter);
48
+ }).not.toThrow();
49
+ });
50
+ });
51
+ //# sourceMappingURL=metrics.test.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.test.js","sourceRoot":"","sources":["../../../src/otel/__tests__/metrics.test.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,22 @@
1
+ import { MeterProvider, PeriodicExportingMetricReader, ConsoleMetricExporter } from '@opentelemetry/sdk-metrics';
2
+ import { metrics } from '@opentelemetry/api';
3
+ import { SetupMetricsOptions } from '../types';
4
+ export default class Metrics {
5
+ static meterProvider: MeterProvider;
6
+ static meter: ReturnType<typeof metrics.getMeter>;
7
+ static metricReaders: PeriodicExportingMetricReader[];
8
+ static genaiClientUsageTokens: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
9
+ static genaiClientOperationDuration: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
10
+ static genaiServerTbt: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
11
+ static genaiServerTtft: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
12
+ static dbClientOperationDuration: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
13
+ static genaiRequests: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>;
14
+ static genaiPromptTokens: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>;
15
+ static genaiCompletionTokens: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>;
16
+ static genaiReasoningTokens: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>;
17
+ static genaiCost: ReturnType<ReturnType<typeof metrics.getMeter>['createHistogram']>;
18
+ static dbRequests: ReturnType<ReturnType<typeof metrics.getMeter>['createCounter']>;
19
+ static initializeMetrics(): void;
20
+ static handleExporterFallback(err: Error, allowConsoleExporterFallback: boolean): ConsoleMetricExporter;
21
+ static setup(options: SetupMetricsOptions): import("@opentelemetry/api").Meter | null;
22
+ }
@@ -0,0 +1,132 @@
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 sdk_metrics_1 = require("@opentelemetry/sdk-metrics");
7
+ const api_1 = require("@opentelemetry/api");
8
+ const semantic_convention_1 = __importDefault(require("../semantic-convention"));
9
+ const exporter_metrics_otlp_http_1 = require("@opentelemetry/exporter-metrics-otlp-http");
10
+ const DB_CLIENT_OPERATION_DURATION_BUCKETS = [0.001, 0.005, 0.01, 0.05, 0.1, 0.5, 1, 5, 10];
11
+ const GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS = [
12
+ 0.01, 0.02, 0.04, 0.08, 0.16, 0.32, 0.64, 1.28, 2.56, 5.12, 10.24, 20.48, 40.96, 81.92,
13
+ ];
14
+ const GEN_AI_SERVER_TBT = [0.01, 0.025, 0.05, 0.075, 0.1, 0.15, 0.2, 0.3, 0.4, 0.5, 0.75, 1.0, 2.5];
15
+ const GEN_AI_SERVER_TFTT = [
16
+ 0.001, 0.005, 0.01, 0.02, 0.04, 0.06, 0.08, 0.1, 0.25, 0.5, 0.75, 1.0, 2.5, 5.0, 7.5, 10.0,
17
+ ];
18
+ const GEN_AI_CLIENT_TOKEN_USAGE_BUCKETS = [
19
+ 1, 4, 16, 64, 256, 1024, 4096, 16384, 65536, 262144, 1048576, 4194304, 16777216, 67108864,
20
+ ];
21
+ class Metrics {
22
+ static initializeMetrics() {
23
+ this.genaiClientUsageTokens = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_USAGE_TOTAL_TOKENS, {
24
+ description: 'Measures number of input and output tokens used',
25
+ unit: '{token}',
26
+ advice: {
27
+ explicitBucketBoundaries: GEN_AI_CLIENT_TOKEN_USAGE_BUCKETS,
28
+ },
29
+ });
30
+ this.genaiClientOperationDuration = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_CLIENT_OPERATION_DURATION, {
31
+ description: 'GenAI operation duration',
32
+ unit: 's',
33
+ advice: {
34
+ explicitBucketBoundaries: GEN_AI_CLIENT_OPERATION_DURATION_BUCKETS,
35
+ },
36
+ });
37
+ this.genaiServerTbt = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_SERVER_TBT, {
38
+ description: 'Time per output token generated after the first token for successful responses',
39
+ unit: 's',
40
+ advice: {
41
+ explicitBucketBoundaries: GEN_AI_SERVER_TBT,
42
+ },
43
+ });
44
+ this.genaiServerTtft = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_SERVER_TTFT, {
45
+ description: 'Time to generate first token for successful responses',
46
+ unit: 's',
47
+ advice: {
48
+ explicitBucketBoundaries: GEN_AI_SERVER_TFTT,
49
+ },
50
+ });
51
+ this.dbClientOperationDuration = this.meter.createHistogram(semantic_convention_1.default.DB_CLIENT_OPERATION_DURATION, {
52
+ description: 'DB operation duration',
53
+ unit: 's',
54
+ advice: {
55
+ explicitBucketBoundaries: DB_CLIENT_OPERATION_DURATION_BUCKETS,
56
+ },
57
+ });
58
+ this.genaiRequests = this.meter.createCounter(semantic_convention_1.default.GEN_AI_REQUESTS, {
59
+ description: 'Number of requests to GenAI',
60
+ unit: '1',
61
+ });
62
+ this.genaiPromptTokens = this.meter.createCounter(semantic_convention_1.default.GEN_AI_USAGE_INPUT_TOKENS, {
63
+ description: 'Number of prompt tokens processed.',
64
+ unit: '1',
65
+ });
66
+ this.genaiCompletionTokens = this.meter.createCounter(semantic_convention_1.default.GEN_AI_USAGE_OUTPUT_TOKENS, {
67
+ description: 'Number of completion tokens processed.',
68
+ unit: '1',
69
+ });
70
+ this.genaiReasoningTokens = this.meter.createCounter(semantic_convention_1.default.GEN_AI_USAGE_REASONING_TOKENS, {
71
+ description: 'Number of reasoning thought tokens processed.',
72
+ unit: '1',
73
+ });
74
+ this.genaiCost = this.meter.createHistogram(semantic_convention_1.default.GEN_AI_USAGE_COST, {
75
+ description: 'The distribution of GenAI request costs.',
76
+ unit: 'USD',
77
+ });
78
+ this.dbRequests = this.meter.createCounter(semantic_convention_1.default.DB_REQUESTS, {
79
+ description: 'Number of requests to VectorDBs.',
80
+ unit: '1',
81
+ });
82
+ }
83
+ static handleExporterFallback(err, allowConsoleExporterFallback) {
84
+ if (allowConsoleExporterFallback) {
85
+ console.warn('[Metrics] Falling back to ConsoleMetricExporter. WARNING: ConsoleMetricExporter may expose sensitive data in logs. Do NOT use in production!', err);
86
+ return new sdk_metrics_1.ConsoleMetricExporter();
87
+ }
88
+ else {
89
+ throw new Error('[Metrics] Failed to initialize OTLPMetricExporter and fallback to ConsoleMetricExporter is disabled. Set allowConsoleExporterFallback=true to enable fallback (not recommended for production).');
90
+ }
91
+ }
92
+ static setup(options) {
93
+ if (options.meter) {
94
+ this.meter = options.meter;
95
+ this.initializeMetrics();
96
+ return this.meter;
97
+ }
98
+ try {
99
+ let metricExporter;
100
+ try {
101
+ const url = options.otlpEndpoint + '/v1/metrics';
102
+ metricExporter = new exporter_metrics_otlp_http_1.OTLPMetricExporter({
103
+ url,
104
+ headers: options.otlpHeaders,
105
+ });
106
+ }
107
+ catch (err) {
108
+ metricExporter = this.handleExporterFallback(err, options.allowConsoleExporterFallback ?? false);
109
+ }
110
+ const metricReader = new sdk_metrics_1.PeriodicExportingMetricReader({
111
+ exportIntervalMillis: options.exportIntervalMillis || 60000,
112
+ exporter: metricExporter,
113
+ });
114
+ this.meterProvider = new sdk_metrics_1.MeterProvider({
115
+ resource: options.resource,
116
+ readers: [metricReader],
117
+ });
118
+ api_1.metrics.setGlobalMeterProvider(this.meterProvider);
119
+ this.meter = this.meterProvider.getMeter('openlit', '1.0.0');
120
+ this.metricReaders.push(metricReader);
121
+ this.initializeMetrics();
122
+ return this.meter;
123
+ }
124
+ catch (e) {
125
+ console.error('[Metrics] Failed to initialize metrics:', e);
126
+ return null;
127
+ }
128
+ }
129
+ }
130
+ Metrics.metricReaders = [];
131
+ exports.default = Metrics;
132
+ //# sourceMappingURL=metrics.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"metrics.js","sourceRoot":"","sources":["../../src/otel/metrics.ts"],"names":[],"mappings":"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"}
@@ -1,4 +1,4 @@
1
- import { SetupTracerOptions } from './types';
1
+ import { SetupTracerOptions } from '../types';
2
2
  import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
3
3
  import { OTLPTraceExporter } from '@opentelemetry/exporter-trace-otlp-http';
4
4
  export default class Tracing {
@@ -5,37 +5,39 @@ var __importDefault = (this && this.__importDefault) || function (mod) {
5
5
  Object.defineProperty(exports, "__esModule", { value: true });
6
6
  const sdk_trace_node_1 = require("@opentelemetry/sdk-trace-node");
7
7
  const exporter_trace_otlp_http_1 = require("@opentelemetry/exporter-trace-otlp-http");
8
- const instrumentation_1 = __importDefault(require("./instrumentation"));
9
- const config_1 = __importDefault(require("./config"));
8
+ const instrumentation_1 = __importDefault(require("../instrumentation"));
9
+ const config_1 = __importDefault(require("../config"));
10
10
  class Tracing {
11
11
  static async setup(options) {
12
12
  if (options.tracer)
13
13
  return options.tracer;
14
14
  try {
15
+ const consoleSpanExporter = new sdk_trace_node_1.ConsoleSpanExporter();
16
+ const url = options.otlpEndpoint + "/v1/traces";
17
+ const otlpTraceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter({
18
+ url,
19
+ headers: options.otlpHeaders,
20
+ });
21
+ const spanProcessors = [
22
+ new sdk_trace_node_1.SimpleSpanProcessor(consoleSpanExporter),
23
+ options.disableBatch
24
+ ? new sdk_trace_node_1.SimpleSpanProcessor(otlpTraceExporter)
25
+ : new sdk_trace_node_1.BatchSpanProcessor(otlpTraceExporter),
26
+ ];
15
27
  this.traceProvider = new sdk_trace_node_1.NodeTracerProvider({
16
28
  resource: options.resource,
29
+ spanProcessors,
17
30
  });
18
31
  config_1.default.updateConfig({
19
32
  ...options,
20
33
  tracer: options.tracer || Tracing.traceProvider,
21
34
  });
22
35
  instrumentation_1.default.setup(Tracing.traceProvider, options?.disabledInstrumentations, options?.instrumentations);
23
- const consoleSpanExporter = new sdk_trace_node_1.ConsoleSpanExporter();
24
- // Adding span to console
25
- this.traceProvider.addSpanProcessor(new sdk_trace_node_1.SimpleSpanProcessor(consoleSpanExporter));
26
- this.traceExporter = new exporter_trace_otlp_http_1.OTLPTraceExporter({
27
- url: options.otlpEndpoint,
28
- headers: options.otlpHeaders,
29
- });
30
- if (options.disableBatch) {
31
- this.traceProvider.addSpanProcessor(new sdk_trace_node_1.SimpleSpanProcessor(this.traceExporter));
32
- }
33
- else {
34
- this.traceProvider.addSpanProcessor(new sdk_trace_node_1.BatchSpanProcessor(this.traceExporter));
35
- }
36
+ this.traceExporter = otlpTraceExporter;
36
37
  this.traceProvider.register();
37
38
  }
38
39
  catch (e) {
40
+ console.error('[Traces] Failed to initialize traces:', e);
39
41
  return null;
40
42
  }
41
43
  }
@@ -0,0 +1 @@
1
+ {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../../src/otel/tracing.ts"],"names":[],"mappings":";;;;;AACA,kEAMuC;AACvC,sFAA4E;AAE5E,yEAAkD;AAClD,uDAAsC;AAEtC,MAAqB,OAAO;IAG1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAA2B;QAC5C,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC;YACH,MAAM,mBAAmB,GAAG,IAAI,oCAAmB,EAAE,CAAC;YACtD,MAAM,GAAG,GAAG,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;YAChD,MAAM,iBAAiB,GAAG,IAAI,4CAAiB,CAAC;gBAC9C,GAAG;gBACH,OAAO,EAAE,OAAO,CAAC,WAAiD;aACnE,CAAC,CAAC;YAEH,MAAM,cAAc,GAAG;gBACrB,IAAI,oCAAmB,CAAC,mBAAmB,CAAC;gBAC5C,OAAO,CAAC,YAAY;oBAClB,CAAC,CAAC,IAAI,oCAAmB,CAAC,iBAAiC,CAAC;oBAC5D,CAAC,CAAC,IAAI,mCAAkB,CAAC,iBAAiC,CAAC;aAC9D,CAAC;YAEF,IAAI,CAAC,aAAa,GAAG,IAAI,mCAAkB,CAAC;gBAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;gBAC1B,cAAc;aACf,CAAC,CAAC;YAEH,gBAAa,CAAC,YAAY,CAAC;gBACzB,GAAG,OAAO;gBACV,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa;aAChD,CAAC,CAAC;YAEH,yBAAgB,CAAC,KAAK,CACpB,OAAO,CAAC,aAAa,EACrB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,gBAAgB,CAC1B,CAAC;YAEF,IAAI,CAAC,aAAa,GAAG,iBAAiB,CAAC;YAEvC,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,uCAAuC,EAAE,CAAC,CAAC,CAAC;YAC1D,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA5CD,0BA4CC"}
@@ -1,4 +1,5 @@
1
1
  export default class SemanticConvention {
2
+ static ATTR_DEPLOYMENT_ENVIRONMENT: string;
2
3
  static GEN_AI_ENDPOINT: string;
3
4
  static GEN_AI_SYSTEM: string;
4
5
  static GEN_AI_ENVIRONMENT: string;
@@ -38,6 +39,7 @@ export default class SemanticConvention {
38
39
  static GEN_AI_USAGE_OUTPUT_TOKENS: string;
39
40
  static GEN_AI_USAGE_TOTAL_TOKENS: string;
40
41
  static GEN_AI_USAGE_COST: string;
42
+ static GEN_AI_USAGE_REASONING_TOKENS: string;
41
43
  static GEN_AI_RESPONSE_ID: string;
42
44
  static GEN_AI_RESPONSE_FINISH_REASON: string;
43
45
  static GEN_AI_RESPONSE_IMAGE: string;
@@ -96,4 +98,8 @@ export default class SemanticConvention {
96
98
  static DB_UPDATE_METADATA: string;
97
99
  static DB_UPDATE_VALUES: string;
98
100
  static DB_UPDATE_ID: string;
101
+ static GEN_AI_CLIENT_OPERATION_DURATION: string;
102
+ static GEN_AI_SERVER_TBT: string;
103
+ static GEN_AI_SERVER_TTFT: string;
104
+ static DB_CLIENT_OPERATION_DURATION: string;
99
105
  }
@@ -2,12 +2,14 @@
2
2
  Object.defineProperty(exports, "__esModule", { value: true });
3
3
  class SemanticConvention {
4
4
  }
5
+ // Unstable SemConv
6
+ SemanticConvention.ATTR_DEPLOYMENT_ENVIRONMENT = 'deployment.environment';
5
7
  // GenAI General
6
8
  SemanticConvention.GEN_AI_ENDPOINT = 'gen_ai.endpoint';
7
9
  SemanticConvention.GEN_AI_SYSTEM = 'gen_ai.system';
8
10
  SemanticConvention.GEN_AI_ENVIRONMENT = 'gen_ai.environment';
9
11
  SemanticConvention.GEN_AI_APPLICATION_NAME = 'gen_ai.application_name';
10
- SemanticConvention.GEN_AI_OPERATION = 'gen_ai.type';
12
+ SemanticConvention.GEN_AI_OPERATION = 'gen_ai.operation.name';
11
13
  SemanticConvention.GEN_AI_HUB_OWNER = 'gen_ai.hub.owner';
12
14
  SemanticConvention.GEN_AI_HUB_REPO = 'gen_ai.hub.repo';
13
15
  SemanticConvention.GEN_AI_RETRIEVAL_SOURCE = 'gen_ai.retrieval.source';
@@ -44,6 +46,7 @@ SemanticConvention.GEN_AI_USAGE_INPUT_TOKENS = 'gen_ai.usage.input_tokens';
44
46
  SemanticConvention.GEN_AI_USAGE_OUTPUT_TOKENS = 'gen_ai.usage.output_tokens';
45
47
  SemanticConvention.GEN_AI_USAGE_TOTAL_TOKENS = 'gen_ai.usage.total_tokens';
46
48
  SemanticConvention.GEN_AI_USAGE_COST = 'gen_ai.usage.cost';
49
+ SemanticConvention.GEN_AI_USAGE_REASONING_TOKENS = 'gen_ai.usage.reasoning_tokens';
47
50
  // GenAI Response
48
51
  SemanticConvention.GEN_AI_RESPONSE_ID = 'gen_ai.response.id';
49
52
  SemanticConvention.GEN_AI_RESPONSE_FINISH_REASON = 'gen_ai.response.finish_reason';
@@ -105,5 +108,9 @@ SemanticConvention.DB_NAMESPACE = 'db.query.namespace';
105
108
  SemanticConvention.DB_UPDATE_METADATA = 'db.update.metadata';
106
109
  SemanticConvention.DB_UPDATE_VALUES = 'db.update.values';
107
110
  SemanticConvention.DB_UPDATE_ID = 'db.update.id';
111
+ SemanticConvention.GEN_AI_CLIENT_OPERATION_DURATION = 'gen_ai.client.operation.duration';
112
+ SemanticConvention.GEN_AI_SERVER_TBT = 'gen_ai.server.tbt';
113
+ SemanticConvention.GEN_AI_SERVER_TTFT = 'gen_ai.server.ttft';
114
+ SemanticConvention.DB_CLIENT_OPERATION_DURATION = 'db.client.operation.duration';
108
115
  exports.default = SemanticConvention;
109
116
  //# sourceMappingURL=semantic-convention.js.map
@@ -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,5 +1,6 @@
1
1
  import { Resource } from '@opentelemetry/resources';
2
2
  import { NodeTracerProvider } from '@opentelemetry/sdk-trace-node';
3
+ import { metrics } from '@opentelemetry/api';
3
4
  export type InstrumentationType = 'openai' | 'anthropic' | 'cohere';
4
5
  export type OpenlitInstrumentations = Partial<Record<InstrumentationType, any>>;
5
6
  export type PricingObject = Record<string, Record<string, unknown>>;
@@ -39,6 +40,12 @@ export type OpenlitOptions = {
39
40
  export type SetupTracerOptions = OpenlitOptions & {
40
41
  resource: Resource;
41
42
  };
43
+ export type MeterType = ReturnType<typeof metrics.getMeter>;
44
+ export type SetupMetricsOptions = SetupTracerOptions & {
45
+ meter?: MeterType;
46
+ exportIntervalMillis?: number;
47
+ allowConsoleExporterFallback?: boolean;
48
+ };
42
49
  export interface BaseOpenlitOptions {
43
50
  url?: string;
44
51
  apiKey?: string;
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "openlit",
3
- "version": "1.5.0",
3
+ "version": "1.7.0",
4
4
  "homepage": "https://github.com/openlit/openlit#readme",
5
5
  "bugs": {
6
6
  "url": "https://github.com/openlit/openlit/issues",
@@ -58,16 +58,15 @@
58
58
  },
59
59
  "dependencies": {
60
60
  "@anthropic-ai/sdk": "^0.25.0",
61
- "@opentelemetry/api": "^1.8.0",
62
- "@opentelemetry/auto-instrumentations-node": "^0.46.1",
63
- "@opentelemetry/exporter-jaeger": "^1.24.1",
64
- "@opentelemetry/exporter-otlp-http": "^0.26.0",
65
- "@opentelemetry/instrumentation": "^0.51.1",
66
- "@opentelemetry/resources": "^1.24.1",
67
- "@opentelemetry/sdk-metrics": "^1.24.1",
68
- "@opentelemetry/sdk-trace-base": "^1.24.1",
69
- "@opentelemetry/sdk-trace-node": "^1.24.1",
70
- "@opentelemetry/semantic-conventions": "^1.24.1",
61
+ "@opentelemetry/api": "^1.9.0",
62
+ "@opentelemetry/auto-instrumentations-node": "^0.62.0",
63
+ "@opentelemetry/exporter-jaeger": "^2.0.1",
64
+ "@opentelemetry/exporter-metrics-otlp-http": "^0.203.0",
65
+ "@opentelemetry/instrumentation": "^0.203.0",
66
+ "@opentelemetry/resources": "^2.0.1",
67
+ "@opentelemetry/sdk-trace-base": "^2.0.1",
68
+ "@opentelemetry/sdk-trace-node": "^2.0.1",
69
+ "@opentelemetry/semantic-conventions": "^1.36.0",
71
70
  "cohere-ai": "^7.13.0",
72
71
  "js-tiktoken": "^1.0.12",
73
72
  "openai": "^4.47.1",
@@ -1 +0,0 @@
1
- {"version":3,"file":"tracing.js","sourceRoot":"","sources":["../src/tracing.ts"],"names":[],"mappings":";;;;;AACA,kEAMuC;AACvC,sFAA4E;AAE5E,wEAAiD;AACjD,sDAAqC;AAErC,MAAqB,OAAO;IAG1B,MAAM,CAAC,KAAK,CAAC,KAAK,CAAC,OAA2B;QAC5C,IAAI,OAAO,CAAC,MAAM;YAAE,OAAO,OAAO,CAAC,MAAM,CAAC;QAC1C,IAAI,CAAC;YACH,IAAI,CAAC,aAAa,GAAG,IAAI,mCAAkB,CAAC;gBAC1C,QAAQ,EAAE,OAAO,CAAC,QAAQ;aAC3B,CAAC,CAAC;YAEH,gBAAa,CAAC,YAAY,CAAC;gBACzB,GAAG,OAAO;gBACV,MAAM,EAAE,OAAO,CAAC,MAAM,IAAI,OAAO,CAAC,aAAa;aAChD,CAAC,CAAC;YAEH,yBAAgB,CAAC,KAAK,CACpB,OAAO,CAAC,aAAa,EACrB,OAAO,EAAE,wBAAwB,EACjC,OAAO,EAAE,gBAAgB,CAC1B,CAAC;YAEF,MAAM,mBAAmB,GAAG,IAAI,oCAAmB,EAAE,CAAC;YAEtD,yBAAyB;YACzB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CAAC,IAAI,oCAAmB,CAAC,mBAAmB,CAAC,CAAC,CAAC;YAElF,IAAI,CAAC,aAAa,GAAG,IAAI,4CAAiB,CAAC;gBACzC,GAAG,EAAE,OAAO,CAAC,YAAY;gBACzB,OAAO,EAAE,OAAO,CAAC,WAAkD;aACpE,CAAC,CAAC;YACH,IAAI,OAAO,CAAC,YAAY,EAAE,CAAC;gBACzB,IAAI,CAAC,aAAa,CAAC,gBAAgB,CACjC,IAAI,oCAAmB,CAAC,IAAI,CAAC,aAA6B,CAAC,CAC5D,CAAC;YACJ,CAAC;iBAAM,CAAC;gBACN,IAAI,CAAC,aAAa,CAAC,gBAAgB,CACjC,IAAI,mCAAkB,CAAC,IAAI,CAAC,aAA6B,CAAC,CAC3D,CAAC;YACJ,CAAC;YAED,IAAI,CAAC,aAAa,CAAC,QAAQ,EAAE,CAAC;QAChC,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,IAAI,CAAC;QACd,CAAC;IACH,CAAC;CACF;AA7CD,0BA6CC"}