UNPKG

openlit

Version:

OpenTelemetry-native Auto instrumentation library for monitoring LLM Applications, facilitating the integration of observability into your GenAI-driven projects

85 lines 3.76 kB
"use strict"; var __importDefault = (this && this.__importDefault) || function (mod) { return (mod && mod.__esModule) ? mod : { "default": mod }; }; Object.defineProperty(exports, "__esModule", { value: true }); exports.Openlit = void 0; const resources_1 = require("@opentelemetry/resources"); const semantic_conventions_1 = require("@opentelemetry/semantic-conventions"); const sdk_node_1 = require("@opentelemetry/sdk-node"); const tracing_1 = __importDefault(require("./tracing")); const constant_1 = require("./constant"); const base_1 = __importDefault(require("./features/base")); const evals_1 = require("./evals"); const prompt_injection_1 = require("./guard/prompt-injection"); const sensitive_topic_1 = require("./guard/sensitive-topic"); const topic_restriction_1 = require("./guard/topic-restriction"); const all_1 = require("./guard/all"); // Factory functions for evals const evals = { Hallucination: (options) => new evals_1.Hallucination(options), Bias: (options) => new evals_1.Bias(options), Toxicity: (options) => new evals_1.Toxicity(options), All: (options) => new evals_1.All(options), }; // Factory functions for guards const guard = { PromptInjection: (options) => new prompt_injection_1.PromptInjection(options), SensitiveTopic: (options) => new sensitive_topic_1.SensitiveTopic(options), TopicRestriction: (options) => new topic_restriction_1.TopicRestriction(options), All: (options) => new all_1.All(options), }; class Openlit extends base_1.default { static init(options) { try { const { environment = constant_1.DEFAULT_ENVIRONMENT, applicationName = constant_1.DEFAULT_APPLICATION_NAME } = options || {}; const otlpEndpoint = options?.otlpEndpoint || process.env.OTEL_EXPORTER_OTLP_ENDPOINT || undefined; let otlpHeaders = options?.otlpHeaders; if (!otlpHeaders) { if (process.env.OTEL_EXPORTER_OTLP_HEADERS) { otlpHeaders = process.env.OTEL_EXPORTER_OTLP_HEADERS.split(',').reduce((acc, items) => { const keyVal = items.split('='); acc[keyVal[0]] = keyVal[1]; return acc; }, {}); } else { otlpHeaders = {}; } } this.options = options || {}; this.options.otlpEndpoint = otlpEndpoint; this.options.otlpHeaders = otlpHeaders; this.options.disableBatch = options?.disableBatch === undefined ? true : !!options.disableBatch; this.resource = new resources_1.Resource({ [semantic_conventions_1.SEMRESATTRS_SERVICE_NAME]: applicationName, [semantic_conventions_1.SEMRESATTRS_DEPLOYMENT_ENVIRONMENT]: environment, [semantic_conventions_1.SEMRESATTRS_TELEMETRY_SDK_NAME]: constant_1.SDK_NAME, }); tracing_1.default.setup({ ...this.options, environment, applicationName, otlpEndpoint, otlpHeaders, resource: this.resource, }); this._sdk = new sdk_node_1.NodeSDK({ resource: this.resource, traceExporter: tracing_1.default.traceExporter, }); // This was causing the traceProvider initilization with multiple instances. // this._sdk.start(); } catch (e) { console.log('Connection time out', e); } } } exports.Openlit = Openlit; Openlit.evals = evals; Openlit.guard = guard; const openlit = Openlit; exports.default = openlit; //# sourceMappingURL=index.js.map