openlit 1.3.1 → 1.4.0-beta.2

This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
Files changed (84) hide show
  1. package/README.md +1 -1
  2. package/dist/config.d.ts +14 -0
  3. package/dist/config.js +30 -0
  4. package/dist/config.js.map +1 -0
  5. package/dist/constant.d.ts +6 -0
  6. package/dist/constant.js +10 -0
  7. package/dist/constant.js.map +1 -0
  8. package/{src/features/base.ts → dist/features/base.d.ts} +2 -3
  9. package/dist/features/base.js +13 -0
  10. package/dist/features/base.js.map +1 -0
  11. package/dist/features/prompt-hub.d.ts +4 -0
  12. package/dist/features/prompt-hub.js +66 -0
  13. package/dist/features/prompt-hub.js.map +1 -0
  14. package/dist/features/vault.d.ts +4 -0
  15. package/dist/features/vault.js +63 -0
  16. package/dist/features/vault.js.map +1 -0
  17. package/dist/helpers.d.ts +13 -0
  18. package/dist/helpers.js +118 -0
  19. package/dist/helpers.js.map +1 -0
  20. package/dist/index.d.ts +10 -0
  21. package/dist/index.js +61 -0
  22. package/dist/index.js.map +1 -0
  23. package/dist/instrumentation/anthropic/index.d.ts +12 -0
  24. package/dist/instrumentation/anthropic/index.js +43 -0
  25. package/dist/instrumentation/anthropic/index.js.map +1 -0
  26. package/dist/instrumentation/anthropic/wrapper.d.ts +24 -0
  27. package/dist/instrumentation/anthropic/wrapper.js +186 -0
  28. package/dist/instrumentation/anthropic/wrapper.js.map +1 -0
  29. package/dist/instrumentation/base-wrapper.d.ts +12 -0
  30. package/dist/instrumentation/base-wrapper.js +31 -0
  31. package/dist/instrumentation/base-wrapper.js.map +1 -0
  32. package/dist/instrumentation/cohere/index.d.ts +12 -0
  33. package/dist/instrumentation/cohere/index.js +53 -0
  34. package/dist/instrumentation/cohere/index.js.map +1 -0
  35. package/dist/instrumentation/cohere/wrapper.d.ts +27 -0
  36. package/dist/instrumentation/cohere/wrapper.js +200 -0
  37. package/dist/instrumentation/cohere/wrapper.js.map +1 -0
  38. package/dist/instrumentation/index.d.ts +7 -0
  39. package/dist/instrumentation/index.js +58 -0
  40. package/dist/instrumentation/index.js.map +1 -0
  41. package/dist/instrumentation/ollama/index.d.ts +11 -0
  42. package/dist/instrumentation/ollama/index.js +43 -0
  43. package/dist/instrumentation/ollama/index.js.map +1 -0
  44. package/dist/instrumentation/ollama/wrapper.d.ts +23 -0
  45. package/dist/instrumentation/ollama/wrapper.js +210 -0
  46. package/dist/instrumentation/ollama/wrapper.js.map +1 -0
  47. package/dist/instrumentation/openai/index.d.ts +12 -0
  48. package/dist/instrumentation/openai/index.js +68 -0
  49. package/dist/instrumentation/openai/index.js.map +1 -0
  50. package/dist/instrumentation/openai/wrapper.d.ts +29 -0
  51. package/dist/instrumentation/openai/wrapper.js +436 -0
  52. package/dist/instrumentation/openai/wrapper.js.map +1 -0
  53. package/dist/prompt-hub.d.ts +4 -0
  54. package/dist/prompt-hub.js +66 -0
  55. package/dist/prompt-hub.js.map +1 -0
  56. package/dist/semantic-convention.d.ts +99 -0
  57. package/dist/semantic-convention.js +109 -0
  58. package/dist/semantic-convention.js.map +1 -0
  59. package/dist/tracing.d.ts +8 -0
  60. package/dist/tracing.js +44 -0
  61. package/dist/tracing.js.map +1 -0
  62. package/dist/types.d.ts +58 -0
  63. package/dist/types.js +3 -0
  64. package/dist/types.js.map +1 -0
  65. package/package.json +16 -2
  66. package/tsconfig.json +19 -12
  67. package/src/config.ts +0 -45
  68. package/src/constant.ts +0 -6
  69. package/src/features/prompt-hub.ts +0 -64
  70. package/src/features/vault.ts +0 -62
  71. package/src/helpers.ts +0 -122
  72. package/src/index.ts +0 -73
  73. package/src/instrumentation/anthropic/index.ts +0 -59
  74. package/src/instrumentation/anthropic/wrapper.ts +0 -255
  75. package/src/instrumentation/base-wrapper.ts +0 -39
  76. package/src/instrumentation/cohere/index.ts +0 -79
  77. package/src/instrumentation/cohere/wrapper.ts +0 -286
  78. package/src/instrumentation/index.ts +0 -68
  79. package/src/instrumentation/openai/index.ts +0 -114
  80. package/src/instrumentation/openai/wrapper.ts +0 -615
  81. package/src/prompt-hub.ts +0 -64
  82. package/src/semantic-convention.ts +0 -113
  83. package/src/tracing.ts +0 -59
  84. package/src/types.ts +0 -68
package/README.md CHANGED
@@ -14,7 +14,7 @@
14
14
  [![Slack](https://img.shields.io/badge/Slack-4A154B?logo=slack&logoColor=white)](https://join.slack.com/t/openlit/shared_invite/zt-2etnfttwg-TjP_7BZXfYg84oAukY8QRQ)
15
15
  [![X](https://img.shields.io/badge/follow-%40openlit__io-1DA1F2?logo=x&style=social)](https://twitter.com/openlit_io)
16
16
 
17
- ![OpenLIT Connections Banner](https://github.com/openlit/.github/blob/main/profile/assets/github-readme-connections-banner.png?raw=true)
17
+ ![OpenLIT Connections Banner](https://github.com/openlit/.github/blob/main/profile/assets/openlit-integrations-banner.png?raw=true)
18
18
 
19
19
  </div>
20
20
 
@@ -0,0 +1,14 @@
1
+ import { OpenlitConfigInterface, PricingObject } from './types';
2
+ export default class OpenlitConfig {
3
+ static environment: OpenlitConfigInterface['environment'];
4
+ static applicationName: OpenlitConfigInterface['applicationName'];
5
+ static pricingInfo: PricingObject;
6
+ static tracer: OpenlitConfigInterface['tracer'];
7
+ static otlpEndpoint?: OpenlitConfigInterface['otlpEndpoint'];
8
+ static otlpHeaders?: OpenlitConfigInterface['otlpHeaders'];
9
+ static disableBatch?: OpenlitConfigInterface['disableBatch'];
10
+ static traceContent?: OpenlitConfigInterface['traceContent'];
11
+ static pricing_json?: OpenlitConfigInterface['pricing_json'];
12
+ static updatePricingJson(pricing_json: any): Promise<PricingObject>;
13
+ static updateConfig({ environment, applicationName, tracer, otlpEndpoint, otlpHeaders, disableBatch, traceContent, pricing_json, }: OpenlitConfigInterface): void;
14
+ }
package/dist/config.js ADDED
@@ -0,0 +1,30 @@
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 helpers_1 = __importDefault(require("./helpers"));
7
+ class OpenlitConfig {
8
+ static async updatePricingJson(pricing_json) {
9
+ try {
10
+ const response = await helpers_1.default.fetchPricingInfo(pricing_json);
11
+ this.pricingInfo = response;
12
+ }
13
+ catch (e) {
14
+ this.pricingInfo = {};
15
+ }
16
+ return this.pricingInfo;
17
+ }
18
+ static updateConfig({ environment = 'default', applicationName = 'default', tracer, otlpEndpoint, otlpHeaders, disableBatch = true, traceContent = true, pricing_json, }) {
19
+ this.environment = environment;
20
+ this.applicationName = applicationName;
21
+ this.tracer = tracer;
22
+ this.otlpEndpoint = otlpEndpoint;
23
+ this.otlpHeaders = otlpHeaders;
24
+ this.disableBatch = disableBatch;
25
+ this.traceContent = traceContent;
26
+ this.pricing_json = pricing_json;
27
+ }
28
+ }
29
+ exports.default = OpenlitConfig;
30
+ //# sourceMappingURL=config.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"config.js","sourceRoot":"","sources":["../src/config.ts"],"names":[],"mappings":";;;;;AAAA,wDAAsC;AAGtC,MAAqB,aAAa;IAWhC,MAAM,CAAC,KAAK,CAAC,iBAAiB,CAAC,YAAiB;QAC9C,IAAI,CAAC;YACH,MAAM,QAAQ,GAAG,MAAM,iBAAa,CAAC,gBAAgB,CAAC,YAAY,CAAC,CAAC;YACpE,IAAI,CAAC,WAAW,GAAG,QAAQ,CAAC;QAC9B,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,IAAI,CAAC,WAAW,GAAG,EAAE,CAAC;QACxB,CAAC;QACD,OAAO,IAAI,CAAC,WAAW,CAAC;IAC1B,CAAC;IAED,MAAM,CAAC,YAAY,CAAC,EAClB,WAAW,GAAG,SAAS,EACvB,eAAe,GAAG,SAAS,EAC3B,MAAM,EACN,YAAY,EACZ,WAAW,EACX,YAAY,GAAG,IAAI,EACnB,YAAY,GAAG,IAAI,EACnB,YAAY,GACW;QACvB,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,eAAe,GAAG,eAAe,CAAC;QACvC,IAAI,CAAC,MAAM,GAAG,MAAM,CAAC;QACrB,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,WAAW,GAAG,WAAW,CAAC;QAC/B,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;QACjC,IAAI,CAAC,YAAY,GAAG,YAAY,CAAC;IACnC,CAAC;CACF;AAxCD,gCAwCC"}
@@ -0,0 +1,6 @@
1
+ export declare const SDK_NAME = "openlit";
2
+ export declare const DEFAULT_ENVIRONMENT = "default";
3
+ export declare const DEFAULT_APPLICATION_NAME = "default";
4
+ export declare const INSTRUMENTATION_PREFIX = "@openlit";
5
+ export declare const TELEMETRY_SDK_NAME = "opentelemetry";
6
+ export declare const OPENLIT_URL = "http://127.0.0.1:3000";
@@ -0,0 +1,10 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ exports.OPENLIT_URL = exports.TELEMETRY_SDK_NAME = exports.INSTRUMENTATION_PREFIX = exports.DEFAULT_APPLICATION_NAME = exports.DEFAULT_ENVIRONMENT = exports.SDK_NAME = void 0;
4
+ exports.SDK_NAME = 'openlit';
5
+ exports.DEFAULT_ENVIRONMENT = 'default';
6
+ exports.DEFAULT_APPLICATION_NAME = 'default';
7
+ exports.INSTRUMENTATION_PREFIX = '@openlit';
8
+ exports.TELEMETRY_SDK_NAME = 'opentelemetry';
9
+ exports.OPENLIT_URL = 'http://127.0.0.1:3000';
10
+ //# sourceMappingURL=constant.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"constant.js","sourceRoot":"","sources":["../src/constant.ts"],"names":[],"mappings":";;;AAAa,QAAA,QAAQ,GAAG,SAAS,CAAC;AACrB,QAAA,mBAAmB,GAAG,SAAS,CAAC;AAChC,QAAA,wBAAwB,GAAG,SAAS,CAAC;AACrC,QAAA,sBAAsB,GAAG,UAAU,CAAC;AACpC,QAAA,kBAAkB,GAAG,eAAe,CAAC;AACrC,QAAA,WAAW,GAAG,uBAAuB,CAAC"}
@@ -1,7 +1,6 @@
1
1
  import PromptHub from './prompt-hub';
2
2
  import Vault from './vault';
3
-
4
3
  export default class BaseOpenlit {
5
- static getPrompts = PromptHub.getPrompts;
6
- static getSecrets = Vault.getSecrets;
4
+ static getPrompts: typeof PromptHub.getPrompts;
5
+ static getSecrets: typeof Vault.getSecrets;
7
6
  }
@@ -0,0 +1,13 @@
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 prompt_hub_1 = __importDefault(require("./prompt-hub"));
7
+ const vault_1 = __importDefault(require("./vault"));
8
+ class BaseOpenlit {
9
+ }
10
+ BaseOpenlit.getPrompts = prompt_hub_1.default.getPrompts;
11
+ BaseOpenlit.getSecrets = vault_1.default.getSecrets;
12
+ exports.default = BaseOpenlit;
13
+ //# sourceMappingURL=base.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"base.js","sourceRoot":"","sources":["../../src/features/base.ts"],"names":[],"mappings":";;;;;AAAA,8DAAqC;AACrC,oDAA4B;AAE5B,MAAqB,WAAW;;AACvB,sBAAU,GAAG,oBAAS,CAAC,UAAU,CAAC;AAClC,sBAAU,GAAG,eAAK,CAAC,UAAU,CAAC;kBAFlB,WAAW"}
@@ -0,0 +1,4 @@
1
+ import { PromptHubOptions } from '../types';
2
+ export default class PromptHub {
3
+ static getPrompts(options: PromptHubOptions): Promise<any>;
4
+ }
@@ -0,0 +1,66 @@
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 config_1 = __importDefault(require("../config"));
7
+ const constant_1 = require("../constant");
8
+ class PromptHub {
9
+ static async getPrompts(options) {
10
+ const url = process.env.OPENLIT_URL || options.url || constant_1.OPENLIT_URL;
11
+ const apiKey = process.env.OPENLIT_API_KEY || options.apiKey || '';
12
+ let metaProperties = {
13
+ applicationName: config_1.default.applicationName,
14
+ environment: config_1.default.environment,
15
+ };
16
+ if (options.metaProperties &&
17
+ typeof options.metaProperties === 'object' &&
18
+ !Array.isArray(options.metaProperties)) {
19
+ metaProperties = {
20
+ ...metaProperties,
21
+ ...options.metaProperties,
22
+ };
23
+ }
24
+ try {
25
+ return await fetch(`${url}/api/prompt/get-compiled`, {
26
+ method: 'POST',
27
+ body: JSON.stringify({
28
+ name: options.name,
29
+ version: options.version,
30
+ shouldCompile: !!options.shouldCompile,
31
+ variables: options.variables || {},
32
+ id: options.promptId,
33
+ metaProperties,
34
+ source: 'ts-sdk',
35
+ }),
36
+ headers: {
37
+ Authorization: `Bearer ${apiKey}`,
38
+ },
39
+ })
40
+ .then(async (response) => {
41
+ if (!response.ok) {
42
+ return {
43
+ err: `Openlit Error : HTTP error! Status: ${response.status}`,
44
+ };
45
+ }
46
+ return response.json();
47
+ })
48
+ .then((resp) => {
49
+ return resp;
50
+ });
51
+ }
52
+ catch (e) {
53
+ if (e && typeof e.toString === 'function') {
54
+ return {
55
+ err: `Openlit Error : ${e.toString()}`,
56
+ data: null,
57
+ };
58
+ }
59
+ return {
60
+ err: `Openlit Error : ${e}`,
61
+ };
62
+ }
63
+ }
64
+ }
65
+ exports.default = PromptHub;
66
+ //# sourceMappingURL=prompt-hub.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"prompt-hub.js","sourceRoot":"","sources":["../../src/features/prompt-hub.ts"],"names":[],"mappings":";;;;;AAAA,uDAAsC;AACtC,0CAA0C;AAG1C,MAAqB,SAAS;IAC5B,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAyB;QAC/C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,sBAAW,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QACnE,IAAI,cAAc,GAAG;YACnB,eAAe,EAAE,gBAAa,CAAC,eAAe;YAC9C,WAAW,EAAE,gBAAa,CAAC,WAAW;SACvC,CAAC;QACF,IACE,OAAO,CAAC,cAAc;YACtB,OAAO,OAAO,CAAC,cAAc,KAAK,QAAQ;YAC1C,CAAC,KAAK,CAAC,OAAO,CAAC,OAAO,CAAC,cAAc,CAAC,EACtC,CAAC;YACD,cAAc,GAAG;gBACf,GAAG,cAAc;gBACjB,GAAG,OAAO,CAAC,cAAc;aAC1B,CAAC;QACJ,CAAC;QAED,IAAI,CAAC;YACH,OAAO,MAAM,KAAK,CAAC,GAAG,GAAG,0BAA0B,EAAE;gBACnD,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,OAAO,EAAE,OAAO,CAAC,OAAO;oBACxB,aAAa,EAAE,CAAC,CAAC,OAAO,CAAC,aAAa;oBACtC,SAAS,EAAE,OAAO,CAAC,SAAS,IAAI,EAAE;oBAClC,EAAE,EAAE,OAAO,CAAC,QAAQ;oBACpB,cAAc;oBACd,MAAM,EAAE,QAAQ;iBACjB,CAAC;gBACF,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;aACF,CAAC;iBACC,IAAI,CAAC,KAAK,EAAE,QAAa,EAAE,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO;wBACL,GAAG,EAAE,uCAAuC,QAAQ,CAAC,MAAM,EAAE;qBAC9D,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;QACP,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC1C,OAAO;oBACL,GAAG,EAAE,mBAAmB,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtC,IAAI,EAAE,IAAI;iBACX,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,EAAE,mBAAmB,CAAC,EAAE;aAC5B,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AA3DD,4BA2DC"}
@@ -0,0 +1,4 @@
1
+ import { VaultOptions } from '../types';
2
+ export default class Vault {
3
+ static getSecrets(options: VaultOptions): Promise<any>;
4
+ }
@@ -0,0 +1,63 @@
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 config_1 = __importDefault(require("../config"));
7
+ const constant_1 = require("../constant");
8
+ class Vault {
9
+ static async getSecrets(options) {
10
+ const url = process.env.OPENLIT_URL || options.url || constant_1.OPENLIT_URL;
11
+ const apiKey = process.env.OPENLIT_API_KEY || options.apiKey || '';
12
+ const metaProperties = {
13
+ applicationName: config_1.default.applicationName,
14
+ environment: config_1.default.environment,
15
+ };
16
+ try {
17
+ const vaultResponse = await fetch(`${url}/api/vault/get-secrets`, {
18
+ method: 'POST',
19
+ body: JSON.stringify({
20
+ key: options.key,
21
+ tags: options.tags,
22
+ metaProperties,
23
+ source: 'ts-sdk',
24
+ }),
25
+ headers: {
26
+ Authorization: `Bearer ${apiKey}`,
27
+ },
28
+ })
29
+ .then(async (response) => {
30
+ if (!response.ok) {
31
+ return {
32
+ err: `Openlit Error : HTTP error! Status: ${response.status}`,
33
+ };
34
+ }
35
+ return response.json();
36
+ })
37
+ .then((resp) => {
38
+ return resp;
39
+ });
40
+ const { res = {} } = vaultResponse;
41
+ if (!!options.shouldSetEnv) {
42
+ Object.entries(res).forEach(([key, value]) => {
43
+ process.env[key] = value;
44
+ });
45
+ }
46
+ return vaultResponse;
47
+ }
48
+ catch (e) {
49
+ console.log(e);
50
+ if (e && typeof e.toString === 'function') {
51
+ return {
52
+ err: `Openlit Error : ${e.toString()}`,
53
+ data: null,
54
+ };
55
+ }
56
+ return {
57
+ err: `Openlit Error : ${e}`,
58
+ };
59
+ }
60
+ }
61
+ }
62
+ exports.default = Vault;
63
+ //# sourceMappingURL=vault.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"vault.js","sourceRoot":"","sources":["../../src/features/vault.ts"],"names":[],"mappings":";;;;;AAAA,uDAAsC;AACtC,0CAA0C;AAG1C,MAAqB,KAAK;IACxB,MAAM,CAAC,KAAK,CAAC,UAAU,CAAC,OAAqB;QAC3C,MAAM,GAAG,GAAG,OAAO,CAAC,GAAG,CAAC,WAAW,IAAI,OAAO,CAAC,GAAG,IAAI,sBAAW,CAAC;QAClE,MAAM,MAAM,GAAG,OAAO,CAAC,GAAG,CAAC,eAAe,IAAI,OAAO,CAAC,MAAM,IAAI,EAAE,CAAC;QAEnE,MAAM,cAAc,GAAG;YACrB,eAAe,EAAE,gBAAa,CAAC,eAAe;YAC9C,WAAW,EAAE,gBAAa,CAAC,WAAW;SACvC,CAAC;QAEF,IAAI,CAAC;YACH,MAAM,aAAa,GAAG,MAAM,KAAK,CAAC,GAAG,GAAG,wBAAwB,EAAE;gBAChE,MAAM,EAAE,MAAM;gBACd,IAAI,EAAE,IAAI,CAAC,SAAS,CAAC;oBACnB,GAAG,EAAE,OAAO,CAAC,GAAG;oBAChB,IAAI,EAAE,OAAO,CAAC,IAAI;oBAClB,cAAc;oBACd,MAAM,EAAE,QAAQ;iBACjB,CAAC;gBACF,OAAO,EAAE;oBACP,aAAa,EAAE,UAAU,MAAM,EAAE;iBAClC;aACF,CAAC;iBACC,IAAI,CAAC,KAAK,EAAE,QAAa,EAAE,EAAE;gBAC5B,IAAI,CAAC,QAAQ,CAAC,EAAE,EAAE,CAAC;oBACjB,OAAO;wBACL,GAAG,EAAE,uCAAuC,QAAQ,CAAC,MAAM,EAAE;qBAC9D,CAAC;gBACJ,CAAC;gBACD,OAAO,QAAQ,CAAC,IAAI,EAAE,CAAC;YACzB,CAAC,CAAC;iBACD,IAAI,CAAC,CAAC,IAAS,EAAE,EAAE;gBAClB,OAAO,IAAI,CAAC;YACd,CAAC,CAAC,CAAC;YAEL,MAAM,EAAE,GAAG,GAAG,EAAE,EAAE,GAAG,aAAa,CAAC;YACnC,IAAI,CAAC,CAAC,OAAO,CAAC,YAAY,EAAE,CAAC;gBAC3B,MAAM,CAAC,OAAO,CAAC,GAAG,CAAC,CAAC,OAAO,CAAC,CAAC,CAAC,GAAG,EAAE,KAAK,CAAoB,EAAE,EAAE;oBAC9D,OAAO,CAAC,GAAG,CAAC,GAAG,CAAC,GAAG,KAAe,CAAC;gBACrC,CAAC,CAAC,CAAC;YACL,CAAC;YAED,OAAO,aAAa,CAAC;QACvB,CAAC;QAAC,OAAO,CAAM,EAAE,CAAC;YAChB,OAAO,CAAC,GAAG,CAAC,CAAC,CAAC,CAAC;YACf,IAAI,CAAC,IAAI,OAAO,CAAC,CAAC,QAAQ,KAAK,UAAU,EAAE,CAAC;gBAC1C,OAAO;oBACL,GAAG,EAAE,mBAAmB,CAAC,CAAC,QAAQ,EAAE,EAAE;oBACtC,IAAI,EAAE,IAAI;iBACX,CAAC;YACJ,CAAC;YAED,OAAO;gBACL,GAAG,EAAE,mBAAmB,CAAC,EAAE;aAC5B,CAAC;QACJ,CAAC;IACH,CAAC;CACF;AAzDD,wBAyDC"}
@@ -0,0 +1,13 @@
1
+ import { Span } from '@opentelemetry/api';
2
+ export default class OpenLitHelper {
3
+ static readonly PROMPT_TOKEN_FACTOR = 1000;
4
+ static openaiTokens(text: string, model: string): number;
5
+ static generalTokens(text: string): number;
6
+ static getChatModelCost(model: string, pricingInfo: any, promptTokens: number, completionTokens: number): number;
7
+ static getEmbedModelCost(model: string, pricingInfo: any, promptTokens: number): number;
8
+ static getImageModelCost(model: string, pricingInfo: any, size: string, quality: number): number;
9
+ static getAudioModelCost(model: string, pricingInfo: any, prompt: string): number;
10
+ static fetchPricingInfo(pricingJson: any): Promise<any>;
11
+ static handleException(span: Span, error: Error): void;
12
+ static createStreamProxy(stream: any, generatorFuncResponse: any): Promise<any>;
13
+ }
@@ -0,0 +1,118 @@
1
+ "use strict";
2
+ Object.defineProperty(exports, "__esModule", { value: true });
3
+ const js_tiktoken_1 = require("js-tiktoken");
4
+ const api_1 = require("@opentelemetry/api");
5
+ class OpenLitHelper {
6
+ static openaiTokens(text, model) {
7
+ try {
8
+ const encoding = (0, js_tiktoken_1.encodingForModel)(model);
9
+ return encoding.encode(text).length;
10
+ }
11
+ catch (error) {
12
+ console.error(`Error in openaiTokens: ${error}`);
13
+ throw error;
14
+ }
15
+ }
16
+ static generalTokens(text) {
17
+ const encoding = (0, js_tiktoken_1.encodingForModel)('gpt2');
18
+ return encoding.encode(text).length;
19
+ }
20
+ static getChatModelCost(model, pricingInfo, promptTokens, completionTokens) {
21
+ try {
22
+ return ((promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.chat[model].promptPrice +
23
+ (completionTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) *
24
+ pricingInfo.chat[model].completionPrice);
25
+ }
26
+ catch (error) {
27
+ console.error(`Error in getChatModelCost: ${error}`);
28
+ return 0;
29
+ }
30
+ }
31
+ static getEmbedModelCost(model, pricingInfo, promptTokens) {
32
+ try {
33
+ return (promptTokens / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.embeddings[model];
34
+ }
35
+ catch (error) {
36
+ console.error(`Error in getEmbedModelCost: ${error}`);
37
+ return 0;
38
+ }
39
+ }
40
+ static getImageModelCost(model, pricingInfo, size, quality) {
41
+ try {
42
+ return pricingInfo.images[model][quality][size];
43
+ }
44
+ catch (error) {
45
+ console.error(`Error in getImageModelCost: ${error}`);
46
+ return 0;
47
+ }
48
+ }
49
+ static getAudioModelCost(model, pricingInfo, prompt) {
50
+ try {
51
+ return (prompt.length / OpenLitHelper.PROMPT_TOKEN_FACTOR) * pricingInfo.audio[model];
52
+ }
53
+ catch (error) {
54
+ console.error(`Error in getAudioModelCost: ${error}`);
55
+ return 0;
56
+ }
57
+ }
58
+ static async fetchPricingInfo(pricingJson) {
59
+ let pricingUrl = 'https://raw.githubusercontent.com/openlit/openlit/main/assets/pricing.json';
60
+ if (pricingJson) {
61
+ let isUrl = false;
62
+ try {
63
+ isUrl = !!new URL(pricingJson);
64
+ }
65
+ catch {
66
+ isUrl = false;
67
+ }
68
+ if (isUrl) {
69
+ pricingUrl = pricingJson;
70
+ }
71
+ else {
72
+ try {
73
+ if (typeof pricingJson === 'string') {
74
+ const json = JSON.parse(pricingJson);
75
+ return json;
76
+ }
77
+ else {
78
+ const json = JSON.parse(JSON.stringify(pricingJson));
79
+ return json;
80
+ }
81
+ }
82
+ catch {
83
+ return {};
84
+ }
85
+ }
86
+ }
87
+ try {
88
+ const response = await fetch(pricingUrl);
89
+ if (response.ok) {
90
+ return response.json();
91
+ }
92
+ else {
93
+ throw new Error(`HTTP error occurred while fetching pricing info: ${response.status}`);
94
+ }
95
+ }
96
+ catch (error) {
97
+ console.error(`Unexpected error occurred while fetching pricing info: ${error}`);
98
+ return {};
99
+ }
100
+ }
101
+ static handleException(span, error) {
102
+ span.recordException(error);
103
+ span.setStatus({ code: api_1.SpanStatusCode.ERROR, message: error.message });
104
+ }
105
+ static async createStreamProxy(stream, generatorFuncResponse) {
106
+ return new Proxy(stream, {
107
+ get(target, prop, receiver) {
108
+ if (prop === Symbol.asyncIterator) {
109
+ return () => generatorFuncResponse;
110
+ }
111
+ return Reflect.get(target, prop, receiver);
112
+ }
113
+ });
114
+ }
115
+ }
116
+ OpenLitHelper.PROMPT_TOKEN_FACTOR = 1000;
117
+ exports.default = OpenLitHelper;
118
+ //# sourceMappingURL=helpers.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"helpers.js","sourceRoot":"","sources":["../src/helpers.ts"],"names":[],"mappings":"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"}
@@ -0,0 +1,10 @@
1
+ import { Resource } from '@opentelemetry/resources';
2
+ import { NodeSDK } from '@opentelemetry/sdk-node';
3
+ import { OpenlitOptions } from './types';
4
+ import BaseOpenlit from './features/base';
5
+ export default class Openlit extends BaseOpenlit {
6
+ static resource: Resource;
7
+ static options: OpenlitOptions;
8
+ static _sdk: NodeSDK;
9
+ static init(options?: OpenlitOptions): void;
10
+ }
package/dist/index.js ADDED
@@ -0,0 +1,61 @@
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 resources_1 = require("@opentelemetry/resources");
7
+ const semantic_conventions_1 = require("@opentelemetry/semantic-conventions");
8
+ const sdk_node_1 = require("@opentelemetry/sdk-node");
9
+ const tracing_1 = __importDefault(require("./tracing"));
10
+ const constant_1 = require("./constant");
11
+ const base_1 = __importDefault(require("./features/base"));
12
+ class Openlit extends base_1.default {
13
+ static init(options) {
14
+ try {
15
+ const { environment = constant_1.DEFAULT_ENVIRONMENT, applicationName = constant_1.DEFAULT_APPLICATION_NAME } = options || {};
16
+ const otlpEndpoint = options?.otlpEndpoint || process.env.OTEL_EXPORTER_OTLP_ENDPOINT || undefined;
17
+ let otlpHeaders = options?.otlpHeaders;
18
+ if (!otlpHeaders) {
19
+ if (process.env.OTEL_EXPORTER_OTLP_HEADERS) {
20
+ otlpHeaders = process.env.OTEL_EXPORTER_OTLP_HEADERS.split(',').reduce((acc, items) => {
21
+ const keyVal = items.split('=');
22
+ acc[keyVal[0]] = keyVal[1];
23
+ return acc;
24
+ }, {});
25
+ }
26
+ else {
27
+ otlpHeaders = {};
28
+ }
29
+ }
30
+ this.options = options || {};
31
+ this.options.otlpEndpoint = otlpEndpoint;
32
+ this.options.otlpHeaders = otlpHeaders;
33
+ this.options.disableBatch =
34
+ options?.disableBatch === undefined ? true : !!options.disableBatch;
35
+ this.resource = new resources_1.Resource({
36
+ [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: applicationName,
37
+ [semantic_conventions_1.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment,
38
+ [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_NAME]: constant_1.SDK_NAME,
39
+ });
40
+ tracing_1.default.setup({
41
+ ...this.options,
42
+ environment,
43
+ applicationName,
44
+ otlpEndpoint,
45
+ otlpHeaders,
46
+ resource: this.resource,
47
+ });
48
+ this._sdk = new sdk_node_1.NodeSDK({
49
+ resource: this.resource,
50
+ traceExporter: tracing_1.default.traceExporter,
51
+ });
52
+ // This was causing the traceProvider initilization with multiple instances.
53
+ // this._sdk.start();
54
+ }
55
+ catch (e) {
56
+ console.log('Connection time out', e);
57
+ }
58
+ }
59
+ }
60
+ exports.default = Openlit;
61
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":";;;;;AAAA,wDAAoD;AACpD,8EAI6C;AAC7C,sDAAkD;AAElD,wDAAgC;AAChC,yCAAqF;AAErF,2DAA0C;AAE1C,MAAqB,OAAQ,SAAQ,cAAW;IAI9C,MAAM,CAAC,IAAI,CAAC,OAAwB;QAClC,IAAI,CAAC;YACH,MAAM,EAAE,WAAW,GAAG,8BAAmB,EAAE,eAAe,GAAG,mCAAwB,EAAE,GACrF,OAAO,IAAI,EAAE,CAAC;YAEhB,MAAM,YAAY,GAChB,OAAO,EAAE,YAAY,IAAI,OAAO,CAAC,GAAG,CAAC,2BAA2B,IAAI,SAAS,CAAC;YAChF,IAAI,WAAW,GAAG,OAAO,EAAE,WAAW,CAAC;YACvC,IAAI,CAAC,WAAW,EAAE,CAAC;gBACjB,IAAI,OAAO,CAAC,GAAG,CAAC,0BAA0B,EAAE,CAAC;oBAC3C,WAAW,GAAG,OAAO,CAAC,GAAG,CAAC,0BAA0B,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC,MAAM,CACpE,CAAC,GAAwB,EAAE,KAAa,EAAE,EAAE;wBAC1C,MAAM,MAAM,GAAa,KAAK,CAAC,KAAK,CAAC,GAAG,CAAC,CAAC;wBAC1C,GAAG,CAAC,MAAM,CAAC,CAAC,CAAC,CAAC,GAAG,MAAM,CAAC,CAAC,CAAC,CAAC;wBAC3B,OAAO,GAAG,CAAC;oBACb,CAAC,EACD,EAAE,CACH,CAAC;gBACJ,CAAC;qBAAM,CAAC;oBACN,WAAW,GAAG,EAAE,CAAC;gBACnB,CAAC;YACH,CAAC;YAED,IAAI,CAAC,OAAO,GAAG,OAAO,IAAI,EAAE,CAAC;YAC7B,IAAI,CAAC,OAAO,CAAC,YAAY,GAAG,YAAY,CAAC;YACzC,IAAI,CAAC,OAAO,CAAC,WAAW,GAAG,WAAW,CAAC;YACvC,IAAI,CAAC,OAAO,CAAC,YAAY;gBACvB,OAAO,EAAE,YAAY,KAAK,SAAS,CAAC,CAAC,CAAC,IAAI,CAAC,CAAC,CAAC,CAAC,CAAC,OAAO,CAAC,YAAY,CAAC;YAEtE,IAAI,CAAC,QAAQ,GAAG,IAAI,oBAAQ,CAAC;gBAC3B,CAAC,+CAAwB,CAAC,EAAE,eAAe;gBAC3C,CAAC,yDAAkC,CAAC,EAAE,WAAW;gBACjD,CAAC,qDAA8B,CAAC,EAAE,mBAAQ;aAC3C,CAAC,CAAC;YAEH,iBAAO,CAAC,KAAK,CAAC;gBACZ,GAAG,IAAI,CAAC,OAAO;gBACf,WAAW;gBACX,eAAe;gBACf,YAAY;gBACZ,WAAW;gBACX,QAAQ,EAAE,IAAI,CAAC,QAAQ;aACxB,CAAC,CAAC;YAEH,IAAI,CAAC,IAAI,GAAG,IAAI,kBAAO,CAAC;gBACtB,QAAQ,EAAE,IAAI,CAAC,QAAQ;gBACvB,aAAa,EAAE,iBAAO,CAAC,aAA6B;aACrD,CAAC,CAAC;YAEH,4EAA4E;YAC5E,qBAAqB;QACvB,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,GAAG,CAAC,qBAAqB,EAAE,CAAC,CAAC,CAAC;QACxC,CAAC;IACH,CAAC;CACF;AA3DD,0BA2DC"}
@@ -0,0 +1,12 @@
1
+ import { InstrumentationBase, InstrumentationModuleDefinition } from '@opentelemetry/instrumentation';
2
+ import { InstrumentationConfig } from '@opentelemetry/instrumentation';
3
+ import Anthropic from '@anthropic-ai/sdk';
4
+ export interface AnthropicInstrumentationConfig extends InstrumentationConfig {
5
+ }
6
+ export default class OpenlitAnthropicInstrumentation extends InstrumentationBase {
7
+ constructor(config?: AnthropicInstrumentationConfig);
8
+ protected init(): void | InstrumentationModuleDefinition | InstrumentationModuleDefinition[];
9
+ manualPatch(anthropic: any): void;
10
+ protected _patch(moduleExports: typeof Anthropic): void;
11
+ protected _unpatch(moduleExports: typeof Anthropic): void;
12
+ }
@@ -0,0 +1,43 @@
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 OpenlitAnthropicInstrumentation extends instrumentation_1.InstrumentationBase {
10
+ constructor(config = {}) {
11
+ super(`${constant_1.INSTRUMENTATION_PREFIX}/instrumentation-anthropic`, '1.0.0', config);
12
+ }
13
+ init() {
14
+ const module = new instrumentation_1.InstrumentationNodeModuleDefinition('@anthropic-ai/sdk', ['>= 0.21.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(anthropic) {
25
+ this._patch(anthropic);
26
+ }
27
+ _patch(moduleExports) {
28
+ try {
29
+ if ((0, instrumentation_1.isWrapped)(moduleExports.Anthropic.Messages.prototype.create)) {
30
+ this._unwrap(moduleExports.Anthropic.Messages.prototype, 'create');
31
+ }
32
+ this._wrap(moduleExports.Anthropic.Messages.prototype, 'create', wrapper_1.default._patchMessageCreate(this.tracer));
33
+ }
34
+ catch (e) {
35
+ console.error('Error in _patch method:', e);
36
+ }
37
+ }
38
+ _unpatch(moduleExports) {
39
+ this._unwrap(moduleExports.Anthropic.Messages.prototype, 'create');
40
+ }
41
+ }
42
+ exports.default = OpenlitAnthropicInstrumentation;
43
+ //# sourceMappingURL=index.js.map
@@ -0,0 +1 @@
1
+ {"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/instrumentation/anthropic/index.ts"],"names":[],"mappings":";;;;;AAAA,oEAKwC;AAExC,6CAAwD;AAExD,wDAAyC;AAIzC,MAAqB,+BAAgC,SAAQ,qCAAmB;IAC9E,YAAY,SAAyC,EAAE;QACrD,KAAK,CAAC,GAAG,iCAAsB,4BAA4B,EAAE,OAAO,EAAE,MAAM,CAAC,CAAC;IAChF,CAAC;IAES,IAAI;QACZ,MAAM,MAAM,GAAG,IAAI,qDAAmC,CACpD,mBAAmB,EACnB,CAAC,WAAW,CAAC,EACb,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,CAAC,MAAM,CAAC,aAAa,CAAC,CAAC;YAC3B,OAAO,aAAa,CAAC;QACvB,CAAC,EACD,CAAC,aAAa,EAAE,EAAE;YAChB,IAAI,aAAa,KAAK,SAAS,EAAE,CAAC;gBAChC,IAAI,CAAC,QAAQ,CAAC,aAAa,CAAC,CAAC;YAC/B,CAAC;QACH,CAAC,CACF,CAAC;QACF,OAAO,CAAC,MAAM,CAAC,CAAC;IAClB,CAAC;IAEM,WAAW,CAAC,SAAc;QAC/B,IAAI,CAAC,MAAM,CAAC,SAAS,CAAC,CAAC;IACzB,CAAC;IAES,MAAM,CAAC,aAA+B;QAC9C,IAAI,CAAC;YACH,IAAI,IAAA,2BAAS,EAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,CAAC,MAAM,CAAC,EAAE,CAAC;gBACjE,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;YACrE,CAAC;YAED,IAAI,CAAC,KAAK,CACR,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAC1C,QAAQ,EACR,iBAAgB,CAAC,mBAAmB,CAAC,IAAI,CAAC,MAAM,CAAC,CAClD,CAAC;QACJ,CAAC;QAAC,OAAO,CAAC,EAAE,CAAC;YACX,OAAO,CAAC,KAAK,CAAC,yBAAyB,EAAE,CAAC,CAAC,CAAC;QAC9C,CAAC;IACH,CAAC;IAES,QAAQ,CAAC,aAA+B;QAChD,IAAI,CAAC,OAAO,CAAC,aAAa,CAAC,SAAS,CAAC,QAAQ,CAAC,SAAS,EAAE,QAAQ,CAAC,CAAC;IACrE,CAAC;CACF;AA7CD,kDA6CC"}
@@ -0,0 +1,24 @@
1
+ import { Span, Tracer } from '@opentelemetry/api';
2
+ import BaseWrapper from '../base-wrapper';
3
+ export default class AnthropicWrapper extends BaseWrapper {
4
+ static aiSystem: string;
5
+ static _patchMessageCreate(tracer: Tracer): any;
6
+ static _messageCreate({ args, genAIEndpoint, response, span, }: {
7
+ args: any[];
8
+ genAIEndpoint: string;
9
+ response: any;
10
+ span: Span;
11
+ }): Promise<any>;
12
+ static _messageCreateGenerator({ args, genAIEndpoint, response, span, }: {
13
+ args: any[];
14
+ genAIEndpoint: string;
15
+ response: any;
16
+ span: Span;
17
+ }): AsyncGenerator<any, any, unknown>;
18
+ static _messageCreateCommonSetter({ args, genAIEndpoint, result, span, }: {
19
+ args: any[];
20
+ genAIEndpoint: string;
21
+ result: any;
22
+ span: Span;
23
+ }): Promise<void>;
24
+ }