@revenium/openai 1.0.8
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.
- package/LICENSE +21 -0
- package/README.md +1095 -0
- package/dist/cjs/core/config/azure-config.js +64 -0
- package/dist/cjs/core/config/azure-config.js.map +1 -0
- package/dist/cjs/core/config/index.js +41 -0
- package/dist/cjs/core/config/index.js.map +1 -0
- package/dist/cjs/core/config/loader.js +63 -0
- package/dist/cjs/core/config/loader.js.map +1 -0
- package/dist/cjs/core/config/manager.js +93 -0
- package/dist/cjs/core/config/manager.js.map +1 -0
- package/dist/cjs/core/config/validator.js +73 -0
- package/dist/cjs/core/config/validator.js.map +1 -0
- package/dist/cjs/core/providers/detector.js +140 -0
- package/dist/cjs/core/providers/detector.js.map +1 -0
- package/dist/cjs/core/providers/index.js +18 -0
- package/dist/cjs/core/providers/index.js.map +1 -0
- package/dist/cjs/core/tracking/api-client.js +68 -0
- package/dist/cjs/core/tracking/api-client.js.map +1 -0
- package/dist/cjs/core/tracking/index.js +23 -0
- package/dist/cjs/core/tracking/index.js.map +1 -0
- package/dist/cjs/core/tracking/payload-builder.js +107 -0
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -0
- package/dist/cjs/core/tracking/usage-tracker.js +120 -0
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -0
- package/dist/cjs/core/wrapper/index.js +15 -0
- package/dist/cjs/core/wrapper/index.js.map +1 -0
- package/dist/cjs/core/wrapper/instance-patcher.js +202 -0
- package/dist/cjs/core/wrapper/instance-patcher.js.map +1 -0
- package/dist/cjs/core/wrapper/request-handler.js +317 -0
- package/dist/cjs/core/wrapper/request-handler.js.map +1 -0
- package/dist/cjs/core/wrapper/stream-wrapper.js +82 -0
- package/dist/cjs/core/wrapper/stream-wrapper.js.map +1 -0
- package/dist/cjs/index.js +195 -0
- package/dist/cjs/index.js.map +1 -0
- package/dist/cjs/types/function-parameters.js +14 -0
- package/dist/cjs/types/function-parameters.js.map +1 -0
- package/dist/cjs/types/index.js +49 -0
- package/dist/cjs/types/index.js.map +1 -0
- package/dist/cjs/types/openai-augmentation.js +55 -0
- package/dist/cjs/types/openai-augmentation.js.map +1 -0
- package/dist/cjs/types/responses-api.js +30 -0
- package/dist/cjs/types/responses-api.js.map +1 -0
- package/dist/cjs/utils/azure-model-resolver.js +211 -0
- package/dist/cjs/utils/azure-model-resolver.js.map +1 -0
- package/dist/cjs/utils/constants.js +24 -0
- package/dist/cjs/utils/constants.js.map +1 -0
- package/dist/cjs/utils/error-handler.js +194 -0
- package/dist/cjs/utils/error-handler.js.map +1 -0
- package/dist/cjs/utils/metadata-builder.js +184 -0
- package/dist/cjs/utils/metadata-builder.js.map +1 -0
- package/dist/cjs/utils/provider-detection.js +212 -0
- package/dist/cjs/utils/provider-detection.js.map +1 -0
- package/dist/cjs/utils/request-handler-factory.js +185 -0
- package/dist/cjs/utils/request-handler-factory.js.map +1 -0
- package/dist/cjs/utils/stop-reason-mapper.js +70 -0
- package/dist/cjs/utils/stop-reason-mapper.js.map +1 -0
- package/dist/cjs/utils/type-guards.js +175 -0
- package/dist/cjs/utils/type-guards.js.map +1 -0
- package/dist/cjs/utils/url-builder.js +43 -0
- package/dist/cjs/utils/url-builder.js.map +1 -0
- package/dist/esm/core/config/azure-config.js +61 -0
- package/dist/esm/core/config/azure-config.js.map +1 -0
- package/dist/esm/core/config/index.js +13 -0
- package/dist/esm/core/config/index.js.map +1 -0
- package/dist/esm/core/config/loader.js +58 -0
- package/dist/esm/core/config/loader.js.map +1 -0
- package/dist/esm/core/config/manager.js +85 -0
- package/dist/esm/core/config/manager.js.map +1 -0
- package/dist/esm/core/config/validator.js +69 -0
- package/dist/esm/core/config/validator.js.map +1 -0
- package/dist/esm/core/providers/detector.js +134 -0
- package/dist/esm/core/providers/detector.js.map +1 -0
- package/dist/esm/core/providers/index.js +10 -0
- package/dist/esm/core/providers/index.js.map +1 -0
- package/dist/esm/core/tracking/api-client.js +65 -0
- package/dist/esm/core/tracking/api-client.js.map +1 -0
- package/dist/esm/core/tracking/index.js +13 -0
- package/dist/esm/core/tracking/index.js.map +1 -0
- package/dist/esm/core/tracking/payload-builder.js +104 -0
- package/dist/esm/core/tracking/payload-builder.js.map +1 -0
- package/dist/esm/core/tracking/usage-tracker.js +114 -0
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -0
- package/dist/esm/core/wrapper/index.js +9 -0
- package/dist/esm/core/wrapper/index.js.map +1 -0
- package/dist/esm/core/wrapper/instance-patcher.js +199 -0
- package/dist/esm/core/wrapper/instance-patcher.js.map +1 -0
- package/dist/esm/core/wrapper/request-handler.js +310 -0
- package/dist/esm/core/wrapper/request-handler.js.map +1 -0
- package/dist/esm/core/wrapper/stream-wrapper.js +79 -0
- package/dist/esm/core/wrapper/stream-wrapper.js.map +1 -0
- package/dist/esm/index.js +175 -0
- package/dist/esm/index.js.map +1 -0
- package/dist/esm/types/function-parameters.js +13 -0
- package/dist/esm/types/function-parameters.js.map +1 -0
- package/dist/esm/types/index.js +32 -0
- package/dist/esm/types/index.js.map +1 -0
- package/dist/esm/types/openai-augmentation.js +54 -0
- package/dist/esm/types/openai-augmentation.js.map +1 -0
- package/dist/esm/types/responses-api.js +26 -0
- package/dist/esm/types/responses-api.js.map +1 -0
- package/dist/esm/utils/azure-model-resolver.js +204 -0
- package/dist/esm/utils/azure-model-resolver.js.map +1 -0
- package/dist/esm/utils/constants.js +21 -0
- package/dist/esm/utils/constants.js.map +1 -0
- package/dist/esm/utils/error-handler.js +182 -0
- package/dist/esm/utils/error-handler.js.map +1 -0
- package/dist/esm/utils/metadata-builder.js +176 -0
- package/dist/esm/utils/metadata-builder.js.map +1 -0
- package/dist/esm/utils/provider-detection.js +206 -0
- package/dist/esm/utils/provider-detection.js.map +1 -0
- package/dist/esm/utils/request-handler-factory.js +146 -0
- package/dist/esm/utils/request-handler-factory.js.map +1 -0
- package/dist/esm/utils/stop-reason-mapper.js +65 -0
- package/dist/esm/utils/stop-reason-mapper.js.map +1 -0
- package/dist/esm/utils/type-guards.js +158 -0
- package/dist/esm/utils/type-guards.js.map +1 -0
- package/dist/esm/utils/url-builder.js +39 -0
- package/dist/esm/utils/url-builder.js.map +1 -0
- package/dist/types/core/config/azure-config.d.ts +16 -0
- package/dist/types/core/config/azure-config.d.ts.map +1 -0
- package/dist/types/core/config/index.d.ts +11 -0
- package/dist/types/core/config/index.d.ts.map +1 -0
- package/dist/types/core/config/loader.d.ts +20 -0
- package/dist/types/core/config/loader.d.ts.map +1 -0
- package/dist/types/core/config/manager.d.ts +32 -0
- package/dist/types/core/config/manager.d.ts.map +1 -0
- package/dist/types/core/config/validator.d.ts +23 -0
- package/dist/types/core/config/validator.d.ts.map +1 -0
- package/dist/types/core/providers/detector.d.ts +44 -0
- package/dist/types/core/providers/detector.d.ts.map +1 -0
- package/dist/types/core/providers/index.d.ts +9 -0
- package/dist/types/core/providers/index.d.ts.map +1 -0
- package/dist/types/core/tracking/api-client.d.ts +17 -0
- package/dist/types/core/tracking/api-client.d.ts.map +1 -0
- package/dist/types/core/tracking/index.d.ts +11 -0
- package/dist/types/core/tracking/index.d.ts.map +1 -0
- package/dist/types/core/tracking/payload-builder.d.ts +24 -0
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -0
- package/dist/types/core/tracking/usage-tracker.d.ts +48 -0
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -0
- package/dist/types/core/wrapper/index.d.ts +8 -0
- package/dist/types/core/wrapper/index.d.ts.map +1 -0
- package/dist/types/core/wrapper/instance-patcher.d.ts +33 -0
- package/dist/types/core/wrapper/instance-patcher.d.ts.map +1 -0
- package/dist/types/core/wrapper/request-handler.d.ts +29 -0
- package/dist/types/core/wrapper/request-handler.d.ts.map +1 -0
- package/dist/types/core/wrapper/stream-wrapper.d.ts +13 -0
- package/dist/types/core/wrapper/stream-wrapper.d.ts.map +1 -0
- package/dist/types/index.d.ts +179 -0
- package/dist/types/index.d.ts.map +1 -0
- package/dist/types/types/function-parameters.d.ts +229 -0
- package/dist/types/types/function-parameters.d.ts.map +1 -0
- package/dist/types/types/index.d.ts +283 -0
- package/dist/types/types/index.d.ts.map +1 -0
- package/dist/types/types/openai-augmentation.d.ts +226 -0
- package/dist/types/types/openai-augmentation.d.ts.map +1 -0
- package/dist/types/types/responses-api.d.ts +247 -0
- package/dist/types/types/responses-api.d.ts.map +1 -0
- package/dist/types/utils/azure-model-resolver.d.ts +41 -0
- package/dist/types/utils/azure-model-resolver.d.ts.map +1 -0
- package/dist/types/utils/constants.d.ts +4 -0
- package/dist/types/utils/constants.d.ts.map +1 -0
- package/dist/types/utils/error-handler.d.ts +95 -0
- package/dist/types/utils/error-handler.d.ts.map +1 -0
- package/dist/types/utils/metadata-builder.d.ts +64 -0
- package/dist/types/utils/metadata-builder.d.ts.map +1 -0
- package/dist/types/utils/provider-detection.d.ts +51 -0
- package/dist/types/utils/provider-detection.d.ts.map +1 -0
- package/dist/types/utils/request-handler-factory.d.ts +81 -0
- package/dist/types/utils/request-handler-factory.d.ts.map +1 -0
- package/dist/types/utils/stop-reason-mapper.d.ts +29 -0
- package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -0
- package/dist/types/utils/type-guards.d.ts +73 -0
- package/dist/types/utils/type-guards.d.ts.map +1 -0
- package/dist/types/utils/url-builder.d.ts +25 -0
- package/dist/types/utils/url-builder.d.ts.map +1 -0
- package/package.json +84 -0
|
@@ -0,0 +1,175 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Revenium OpenAI Middleware for TypeScript
|
|
3
|
+
*
|
|
4
|
+
* This middleware tracks OpenAI usage and sends metrics to Revenium.
|
|
5
|
+
* Uses hybrid initialization: auto-initializes on import with graceful fallback to manual init.
|
|
6
|
+
*
|
|
7
|
+
* Environment Variables:
|
|
8
|
+
* REVENIUM_METERING_API_KEY=hak_your_api_key
|
|
9
|
+
* REVENIUM_METERING_BASE_URL=https://api.revenium.io/meter (optional)
|
|
10
|
+
* OPENAI_API_KEY=sk_your_openai_key
|
|
11
|
+
*
|
|
12
|
+
* Simple Usage (auto-initialization):
|
|
13
|
+
* import { patchOpenAIInstance } from 'revenium-middleware-openai-node';
|
|
14
|
+
* import OpenAI from 'openai';
|
|
15
|
+
*
|
|
16
|
+
* const openai = patchOpenAIInstance(new OpenAI());
|
|
17
|
+
* // Auto-initializes from environment variables
|
|
18
|
+
*
|
|
19
|
+
* Advanced Usage (explicit initialization):
|
|
20
|
+
* import { initializeReveniumFromEnv, patchOpenAIInstance } from 'revenium-middleware-openai-node';
|
|
21
|
+
* import OpenAI from 'openai';
|
|
22
|
+
*
|
|
23
|
+
* const result = initializeReveniumFromEnv();
|
|
24
|
+
* if (!result.success) {
|
|
25
|
+
* throw new Error(result.message);
|
|
26
|
+
* }
|
|
27
|
+
* const openai = patchOpenAIInstance(new OpenAI());
|
|
28
|
+
*
|
|
29
|
+
* const response = await openai.chat.completions.create({
|
|
30
|
+
* model: 'gpt-4',
|
|
31
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
32
|
+
* usageMetadata: {
|
|
33
|
+
* subscriber: {
|
|
34
|
+
* id: 'user-123',
|
|
35
|
+
* email: 'user@my-org.com'
|
|
36
|
+
* },
|
|
37
|
+
* organizationId: 'my-org',
|
|
38
|
+
* productId: 'my-app'
|
|
39
|
+
* }
|
|
40
|
+
* });
|
|
41
|
+
*/
|
|
42
|
+
// Import type augmentations to extend OpenAI types with usageMetadata
|
|
43
|
+
import './types/openai-augmentation.js';
|
|
44
|
+
// Import from new modular structure
|
|
45
|
+
import { setConfig, validateConfig, initializeConfig, getConfig, getLogger, } from './core/config/index.js';
|
|
46
|
+
import { patchOpenAI } from './core/wrapper/index.js';
|
|
47
|
+
// Track initialization state
|
|
48
|
+
let isInitialized = false;
|
|
49
|
+
let autoInitAttempted = false;
|
|
50
|
+
// Note: ExtendedChatCompletionCreateParams and ExtendedEmbeddingCreateParams are no longer exported
|
|
51
|
+
// as they have been replaced with seamless TypeScript module augmentation. The usageMetadata field
|
|
52
|
+
// is now natively available on OpenAI's types without requiring additional imports.
|
|
53
|
+
// Export tracking functions
|
|
54
|
+
export { trackUsageAsync, trackEmbeddingsUsageAsync } from './core/tracking/index.js';
|
|
55
|
+
// Export provider detection functions
|
|
56
|
+
export { detectProvider, hasAzureConfig, validateAzureConfig, getProviderMetadata, } from './core/providers/index.js';
|
|
57
|
+
export { getProviderInfo } from './core/wrapper/index.js';
|
|
58
|
+
// Export Azure model resolution functions
|
|
59
|
+
export { resolveAzureModelName, clearModelNameCache, getModelNameCacheStats, batchResolveModelNames, wouldTransformDeploymentName, } from './utils/azure-model-resolver.js';
|
|
60
|
+
// Global logger
|
|
61
|
+
const logger = getLogger();
|
|
62
|
+
/**
|
|
63
|
+
* Initialize Revenium middleware with configuration
|
|
64
|
+
*/
|
|
65
|
+
export function initializeRevenium(config) {
|
|
66
|
+
// Check if already initialized to prevent duplicate initialization
|
|
67
|
+
if (isInitialized) {
|
|
68
|
+
return {
|
|
69
|
+
success: true,
|
|
70
|
+
message: 'Revenium middleware already initialized',
|
|
71
|
+
};
|
|
72
|
+
}
|
|
73
|
+
try {
|
|
74
|
+
// Apply default base URL if not provided
|
|
75
|
+
const configWithDefaults = {
|
|
76
|
+
...config,
|
|
77
|
+
reveniumBaseUrl: config.reveniumBaseUrl || 'https://api.revenium.io/meter',
|
|
78
|
+
};
|
|
79
|
+
validateConfig(configWithDefaults);
|
|
80
|
+
setConfig(configWithDefaults);
|
|
81
|
+
// Mark as initialized
|
|
82
|
+
isInitialized = true;
|
|
83
|
+
// Patch OpenAI prototype methods
|
|
84
|
+
patchOpenAI();
|
|
85
|
+
return {
|
|
86
|
+
success: true,
|
|
87
|
+
message: 'Revenium middleware initialized successfully',
|
|
88
|
+
};
|
|
89
|
+
}
|
|
90
|
+
catch (error) {
|
|
91
|
+
isInitialized = false;
|
|
92
|
+
return {
|
|
93
|
+
success: false,
|
|
94
|
+
message: error instanceof Error ? error.message : 'Unknown initialization error',
|
|
95
|
+
};
|
|
96
|
+
}
|
|
97
|
+
}
|
|
98
|
+
/**
|
|
99
|
+
* Initialize Revenium middleware from environment variables
|
|
100
|
+
*/
|
|
101
|
+
export function initializeReveniumFromEnv() {
|
|
102
|
+
// Check if already initialized to prevent duplicate initialization
|
|
103
|
+
if (isInitialized) {
|
|
104
|
+
return {
|
|
105
|
+
success: true,
|
|
106
|
+
message: 'Revenium middleware already initialized',
|
|
107
|
+
};
|
|
108
|
+
}
|
|
109
|
+
const envSuccess = initializeConfig();
|
|
110
|
+
if (!envSuccess) {
|
|
111
|
+
isInitialized = false;
|
|
112
|
+
return {
|
|
113
|
+
success: false,
|
|
114
|
+
message: 'Failed to load configuration from environment variables. Check REVENIUM_METERING_API_KEY and REVENIUM_METERING_BASE_URL.',
|
|
115
|
+
};
|
|
116
|
+
}
|
|
117
|
+
// Mark as initialized
|
|
118
|
+
isInitialized = true;
|
|
119
|
+
// Patch OpenAI prototype methods
|
|
120
|
+
patchOpenAI();
|
|
121
|
+
return {
|
|
122
|
+
success: true,
|
|
123
|
+
message: 'Revenium middleware initialized from environment',
|
|
124
|
+
};
|
|
125
|
+
}
|
|
126
|
+
/**
|
|
127
|
+
* Manually patch an OpenAI instance (for advanced use cases)
|
|
128
|
+
*/
|
|
129
|
+
export { patchOpenAIInstance } from './core/wrapper/index.js';
|
|
130
|
+
/**
|
|
131
|
+
* Auto-initialization with graceful fallback
|
|
132
|
+
* Attempts to initialize from environment variables on module load.
|
|
133
|
+
* If it fails, logs a debug message but doesn't throw - allows manual configuration later.
|
|
134
|
+
*/
|
|
135
|
+
function attemptAutoInitialization() {
|
|
136
|
+
if (autoInitAttempted || isInitialized)
|
|
137
|
+
return;
|
|
138
|
+
autoInitAttempted = true;
|
|
139
|
+
try {
|
|
140
|
+
const result = initializeReveniumFromEnv();
|
|
141
|
+
if (result.success) {
|
|
142
|
+
// Auto-init succeeded - log debug message
|
|
143
|
+
logger.debug('Revenium middleware auto-initialized from environment variables');
|
|
144
|
+
}
|
|
145
|
+
else {
|
|
146
|
+
// Auto-init failed - log debug message but don't throw
|
|
147
|
+
logger.debug('Auto-initialization failed, manual initialization required:', result.message);
|
|
148
|
+
}
|
|
149
|
+
}
|
|
150
|
+
catch (error) {
|
|
151
|
+
// Unexpected error during auto-init - log but don't throw
|
|
152
|
+
logger.debug('Auto-initialization encountered error:', error instanceof Error ? error.message : String(error));
|
|
153
|
+
}
|
|
154
|
+
}
|
|
155
|
+
/**
|
|
156
|
+
* Check if middleware has been initialized
|
|
157
|
+
*/
|
|
158
|
+
export function isReveniumInitialized() {
|
|
159
|
+
return isInitialized;
|
|
160
|
+
}
|
|
161
|
+
/**
|
|
162
|
+
* Get detailed initialization status
|
|
163
|
+
*/
|
|
164
|
+
export function getInitializationStatus() {
|
|
165
|
+
const config = getConfig();
|
|
166
|
+
return {
|
|
167
|
+
initialized: isInitialized,
|
|
168
|
+
hasConfig: !!config,
|
|
169
|
+
hasApiKey: !!config?.reveniumApiKey,
|
|
170
|
+
autoInitAttempted,
|
|
171
|
+
};
|
|
172
|
+
}
|
|
173
|
+
// Perform auto-initialization when module is imported
|
|
174
|
+
attemptAutoInitialization();
|
|
175
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../src/index.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,13 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Function Parameter Types
|
|
3
|
+
*
|
|
4
|
+
* Comprehensive type definitions for function parameters throughout the middleware.
|
|
5
|
+
* These interfaces provide type safety by replacing 'any' types with proper,
|
|
6
|
+
* well-documented interfaces that match OpenAI API structures and internal requirements.
|
|
7
|
+
*
|
|
8
|
+
* @fileoverview Type-safe function parameter definitions
|
|
9
|
+
* @author Revenium
|
|
10
|
+
* @since 1.0.0
|
|
11
|
+
*/
|
|
12
|
+
export {};
|
|
13
|
+
//# sourceMappingURL=function-parameters.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"function-parameters.js","sourceRoot":"","sources":["../../../src/types/function-parameters.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;GAUG"}
|
|
@@ -0,0 +1,32 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Core Types Module
|
|
3
|
+
*
|
|
4
|
+
* Central type definitions for the Revenium OpenAI middleware.
|
|
5
|
+
* This module exports all core types used throughout the application.
|
|
6
|
+
*/
|
|
7
|
+
// Re-export function parameter types
|
|
8
|
+
export * from './function-parameters.js';
|
|
9
|
+
// Re-export Responses API types
|
|
10
|
+
export * from './responses-api.js';
|
|
11
|
+
/**
|
|
12
|
+
* Supported AI providers
|
|
13
|
+
*
|
|
14
|
+
* Enumeration of AI providers supported by the Revenium middleware.
|
|
15
|
+
* Used for automatic detection, routing, and provider-specific handling.
|
|
16
|
+
*
|
|
17
|
+
* @public
|
|
18
|
+
* @example
|
|
19
|
+
* ```typescript
|
|
20
|
+
* if (providerInfo.provider === Provider.AZURE_OPENAI) {
|
|
21
|
+
* console.log('Using Azure OpenAI');
|
|
22
|
+
* }
|
|
23
|
+
* ```
|
|
24
|
+
*/
|
|
25
|
+
export var Provider;
|
|
26
|
+
(function (Provider) {
|
|
27
|
+
/** Standard OpenAI API */
|
|
28
|
+
Provider["OPENAI"] = "OPENAI";
|
|
29
|
+
/** Azure OpenAI Service */
|
|
30
|
+
Provider["AZURE_OPENAI"] = "AZURE_OPENAI";
|
|
31
|
+
})(Provider || (Provider = {}));
|
|
32
|
+
//# sourceMappingURL=index.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../../../src/types/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,qCAAqC;AACrC,cAAc,0BAA0B,CAAC;AAEzC,gCAAgC;AAChC,cAAc,oBAAoB,CAAC;AA0InC;;;;;;;;;;;;;GAaG;AACH,MAAM,CAAN,IAAY,QAKX;AALD,WAAY,QAAQ;IAClB,0BAA0B;IAC1B,6BAAiB,CAAA;IACjB,2BAA2B;IAC3B,yCAA6B,CAAA;AAC/B,CAAC,EALW,QAAQ,KAAR,QAAQ,QAKnB"}
|
|
@@ -0,0 +1,54 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* TypeScript module augmentation for OpenAI SDK
|
|
3
|
+
*
|
|
4
|
+
* This file extends OpenAI's existing types to include the usageMetadata field
|
|
5
|
+
* through TypeScript's declaration merging feature. This provides seamless
|
|
6
|
+
* integration with the OpenAI SDK, allowing developers to use usageMetadata
|
|
7
|
+
* directly in OpenAI API calls without type casting or additional imports.
|
|
8
|
+
*
|
|
9
|
+
* The augmentation covers all major OpenAI API endpoints including:
|
|
10
|
+
* - Chat completions (streaming and non-streaming)
|
|
11
|
+
* - Embeddings
|
|
12
|
+
* - Future API endpoints as they become available
|
|
13
|
+
*
|
|
14
|
+
* @fileoverview OpenAI SDK type augmentation for Revenium middleware
|
|
15
|
+
* @author Revenium
|
|
16
|
+
* @since 1.0.0
|
|
17
|
+
*
|
|
18
|
+
* @example Basic usage with chat completions
|
|
19
|
+
* ```typescript
|
|
20
|
+
* import 'revenium-middleware-openai-node';
|
|
21
|
+
* import OpenAI from 'openai';
|
|
22
|
+
*
|
|
23
|
+
* const openai = new OpenAI();
|
|
24
|
+
*
|
|
25
|
+
* const response = await openai.chat.completions.create({
|
|
26
|
+
* model: 'gpt-4o-mini',
|
|
27
|
+
* messages: [{ role: 'user', content: 'Hello!' }],
|
|
28
|
+
* usageMetadata: { // TypeScript recognizes this natively
|
|
29
|
+
* subscriber: {
|
|
30
|
+
* id: 'user-123',
|
|
31
|
+
* email: 'user@my-company.com'
|
|
32
|
+
* },
|
|
33
|
+
* organizationId: 'my-company',
|
|
34
|
+
* productId: 'chat-app',
|
|
35
|
+
* taskType: 'customer-support'
|
|
36
|
+
* }
|
|
37
|
+
* });
|
|
38
|
+
* ```
|
|
39
|
+
*
|
|
40
|
+
* @example Usage with embeddings
|
|
41
|
+
* ```typescript
|
|
42
|
+
* const embedding = await openai.embeddings.create({
|
|
43
|
+
* model: 'text-embedding-ada-002',
|
|
44
|
+
* input: 'Text to embed',
|
|
45
|
+
* usageMetadata: {
|
|
46
|
+
* subscriber: { id: 'user-456' },
|
|
47
|
+
* productId: 'search-engine',
|
|
48
|
+
* taskType: 'document-indexing'
|
|
49
|
+
* }
|
|
50
|
+
* });
|
|
51
|
+
* ```
|
|
52
|
+
*/
|
|
53
|
+
export {};
|
|
54
|
+
//# sourceMappingURL=openai-augmentation.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"openai-augmentation.js","sourceRoot":"","sources":["../../../src/types/openai-augmentation.ts"],"names":[],"mappings":"AAAA;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;;GAmDG"}
|
|
@@ -0,0 +1,26 @@
|
|
|
1
|
+
/**
|
|
2
|
+
* Types for OpenAI Responses API support
|
|
3
|
+
*
|
|
4
|
+
* This module defines types for the new OpenAI Responses API that replaces
|
|
5
|
+
* the traditional Chat Completions API. The Responses API provides a unified
|
|
6
|
+
* interface for building agent-like applications with built-in tools and capabilities.
|
|
7
|
+
*
|
|
8
|
+
* Reference: https://platform.openai.com/docs/guides/migrate-to-responses
|
|
9
|
+
*/
|
|
10
|
+
/**
|
|
11
|
+
* Type guard to check if a request is for Responses API
|
|
12
|
+
*/
|
|
13
|
+
export function isResponsesRequest(params) {
|
|
14
|
+
return typeof params === 'object' && params !== null && 'input' in params && 'model' in params;
|
|
15
|
+
}
|
|
16
|
+
/**
|
|
17
|
+
* Type guard to check if a response is from Responses API
|
|
18
|
+
*/
|
|
19
|
+
export function isResponsesResponse(response) {
|
|
20
|
+
return (typeof response === 'object' &&
|
|
21
|
+
response !== null &&
|
|
22
|
+
'id' in response &&
|
|
23
|
+
'model' in response &&
|
|
24
|
+
('output' in response || 'usage' in response));
|
|
25
|
+
}
|
|
26
|
+
//# sourceMappingURL=responses-api.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"responses-api.js","sourceRoot":"","sources":["../../../src/types/responses-api.ts"],"names":[],"mappings":"AAAA;;;;;;;;GAQG;AAwOH;;GAEG;AACH,MAAM,UAAU,kBAAkB,CAAC,MAAe;IAChD,OAAO,OAAO,MAAM,KAAK,QAAQ,IAAI,MAAM,KAAK,IAAI,IAAI,OAAO,IAAI,MAAM,IAAI,OAAO,IAAI,MAAM,CAAC;AACjG,CAAC;AAED;;GAEG;AACH,MAAM,UAAU,mBAAmB,CAAC,QAAiB;IACnD,OAAO,CACL,OAAO,QAAQ,KAAK,QAAQ;QAC5B,QAAQ,KAAK,IAAI;QACjB,IAAI,IAAI,QAAQ;QAChB,OAAO,IAAI,QAAQ;QACnB,CAAC,QAAQ,IAAI,QAAQ,IAAI,OAAO,IAAI,QAAQ,CAAC,CAC9C,CAAC;AACJ,CAAC"}
|
|
@@ -0,0 +1,204 @@
|
|
|
1
|
+
import { getLogger } from '../core/config/index.js';
|
|
2
|
+
import { knownModels } from './constants.js';
|
|
3
|
+
/**
|
|
4
|
+
* Azure Model Name Resolution Module
|
|
5
|
+
*
|
|
6
|
+
* This module maps Azure deployment names to LiteLLM-compatible model names for accurate pricing.
|
|
7
|
+
* Based on learnings from the Python implementation, it uses heuristic pattern matching
|
|
8
|
+
* with fallback strategies to ensure reliable model name resolution.
|
|
9
|
+
*
|
|
10
|
+
* Key patterns observed in real Azure deployments:
|
|
11
|
+
* - "gpt-4o-2024-11-20" → "gpt-4o"
|
|
12
|
+
* - "text-embedding-3-large" → "text-embedding-3-large" (exact match)
|
|
13
|
+
* - "o4-mini" → "gpt-4o-mini"
|
|
14
|
+
* - "gpt4o-prod" → "gpt-4o"
|
|
15
|
+
* - "gpt-35-turbo-dev" → "gpt-3.5-turbo"
|
|
16
|
+
*/
|
|
17
|
+
/**
|
|
18
|
+
* In-memory cache for resolved model names
|
|
19
|
+
* Using Map for thread-safe operations in Node.js
|
|
20
|
+
*/
|
|
21
|
+
const modelNameCache = new Map();
|
|
22
|
+
/**
|
|
23
|
+
* Cache for failed resolution attempts to avoid repeated warnings
|
|
24
|
+
*/
|
|
25
|
+
const failedResolutionCache = new Set();
|
|
26
|
+
// Global logger
|
|
27
|
+
const logger = getLogger();
|
|
28
|
+
/**
|
|
29
|
+
* Resolve Azure deployment name to LiteLLM-compatible model name
|
|
30
|
+
*
|
|
31
|
+
* @param deploymentName - Azure deployment name
|
|
32
|
+
* @param useCache - Whether to use cached results (default: true)
|
|
33
|
+
* @returns LiteLLM-compatible model name
|
|
34
|
+
*/
|
|
35
|
+
export function resolveAzureModelName(deploymentName, useCache = true) {
|
|
36
|
+
if (!deploymentName) {
|
|
37
|
+
logger.warn('Empty deployment name provided to model resolver');
|
|
38
|
+
return deploymentName;
|
|
39
|
+
}
|
|
40
|
+
// Check cache first
|
|
41
|
+
if (useCache && modelNameCache.has(deploymentName)) {
|
|
42
|
+
const cachedResult = modelNameCache.get(deploymentName);
|
|
43
|
+
logger.debug('Model name resolved from cache', {
|
|
44
|
+
deployment: deploymentName,
|
|
45
|
+
resolved: cachedResult,
|
|
46
|
+
});
|
|
47
|
+
return cachedResult;
|
|
48
|
+
}
|
|
49
|
+
try {
|
|
50
|
+
const resolved = resolveModelNameHeuristic(deploymentName);
|
|
51
|
+
// Cache the result
|
|
52
|
+
if (useCache) {
|
|
53
|
+
modelNameCache.set(deploymentName, resolved);
|
|
54
|
+
}
|
|
55
|
+
// Log successful resolution
|
|
56
|
+
if (resolved !== deploymentName) {
|
|
57
|
+
logger.debug('Model name resolved via heuristics', {
|
|
58
|
+
deployment: deploymentName,
|
|
59
|
+
resolved,
|
|
60
|
+
});
|
|
61
|
+
}
|
|
62
|
+
return resolved;
|
|
63
|
+
}
|
|
64
|
+
catch (error) {
|
|
65
|
+
logger.error('Error during model name resolution', {
|
|
66
|
+
deployment: deploymentName,
|
|
67
|
+
error: error instanceof Error ? error.message : String(error),
|
|
68
|
+
});
|
|
69
|
+
// Fallback to deployment name
|
|
70
|
+
return deploymentName;
|
|
71
|
+
}
|
|
72
|
+
}
|
|
73
|
+
/**
|
|
74
|
+
* Heuristic pattern matching for Azure deployment names
|
|
75
|
+
* Based on real-world patterns observed in the Python implementation
|
|
76
|
+
*
|
|
77
|
+
* @param deploymentName - Azure deployment name
|
|
78
|
+
* @returns LiteLLM-compatible model name
|
|
79
|
+
*/
|
|
80
|
+
function resolveModelNameHeuristic(deploymentName) {
|
|
81
|
+
const nameLower = deploymentName.toLowerCase();
|
|
82
|
+
// GPT-4o family - handle both "gpt-4o" and "o4" patterns
|
|
83
|
+
if (/gpt-?4o/.test(nameLower) || /o4/.test(nameLower)) {
|
|
84
|
+
if (/mini/.test(nameLower))
|
|
85
|
+
return 'gpt-4o-mini';
|
|
86
|
+
return 'gpt-4o';
|
|
87
|
+
}
|
|
88
|
+
// GPT-4 family (non-omni)
|
|
89
|
+
if (/gpt-?4(?!o)/.test(nameLower)) {
|
|
90
|
+
if (/turbo/.test(nameLower))
|
|
91
|
+
return 'gpt-4-turbo';
|
|
92
|
+
if (/vision/.test(nameLower) || /v/.test(nameLower))
|
|
93
|
+
return 'gpt-4-vision-preview';
|
|
94
|
+
return 'gpt-4';
|
|
95
|
+
}
|
|
96
|
+
// GPT-3.5 family
|
|
97
|
+
if (/gpt-?3\.?5/.test(nameLower) || /35-turbo/.test(nameLower) || /gpt-35/.test(nameLower)) {
|
|
98
|
+
if (/instruct/.test(nameLower))
|
|
99
|
+
return 'gpt-3.5-turbo-instruct';
|
|
100
|
+
return 'gpt-3.5-turbo';
|
|
101
|
+
}
|
|
102
|
+
// Embedding models - exact matches work well
|
|
103
|
+
if (/embed/.test(nameLower)) {
|
|
104
|
+
if (/text-embedding-3-large/.test(nameLower))
|
|
105
|
+
return 'text-embedding-3-large';
|
|
106
|
+
if (/text-embedding-3-small/.test(nameLower))
|
|
107
|
+
return 'text-embedding-3-small';
|
|
108
|
+
if (/text-embedding-ada-002/.test(nameLower) || /ada-002/.test(nameLower))
|
|
109
|
+
return 'text-embedding-ada-002';
|
|
110
|
+
if (/3-large/.test(nameLower))
|
|
111
|
+
return 'text-embedding-3-large';
|
|
112
|
+
if (/3-small/.test(nameLower))
|
|
113
|
+
return 'text-embedding-3-small';
|
|
114
|
+
}
|
|
115
|
+
// Ada-002 pattern (can appear without "embed" in deployment name)
|
|
116
|
+
if (/ada-002/.test(nameLower))
|
|
117
|
+
return 'text-embedding-ada-002';
|
|
118
|
+
// DALL-E models
|
|
119
|
+
if (/dall-?e/.test(nameLower)) {
|
|
120
|
+
if (/3/.test(nameLower))
|
|
121
|
+
return 'dall-e-3';
|
|
122
|
+
if (/2/.test(nameLower))
|
|
123
|
+
return 'dall-e-2';
|
|
124
|
+
}
|
|
125
|
+
// Whisper models
|
|
126
|
+
if (/whisper/.test(nameLower))
|
|
127
|
+
return 'whisper-1';
|
|
128
|
+
// TTS models
|
|
129
|
+
if (/tts/.test(nameLower)) {
|
|
130
|
+
if (/hd/.test(nameLower))
|
|
131
|
+
return 'tts-1-hd';
|
|
132
|
+
return 'tts-1';
|
|
133
|
+
}
|
|
134
|
+
if (knownModels.includes(nameLower))
|
|
135
|
+
return nameLower;
|
|
136
|
+
// No heuristic match found - log warning and use deployment name
|
|
137
|
+
if (!failedResolutionCache.has(deploymentName)) {
|
|
138
|
+
logger.warn(`⚠️ No heuristic match for Azure deployment: ${deploymentName}. Using deployment name for pricing. Consider adding pattern to azure-model-resolver.ts`);
|
|
139
|
+
failedResolutionCache.add(deploymentName);
|
|
140
|
+
}
|
|
141
|
+
return deploymentName;
|
|
142
|
+
}
|
|
143
|
+
/**
|
|
144
|
+
* Clear the model name cache
|
|
145
|
+
* Useful for testing or when deployment configurations change
|
|
146
|
+
*/
|
|
147
|
+
export function clearModelNameCache() {
|
|
148
|
+
modelNameCache.clear();
|
|
149
|
+
failedResolutionCache.clear();
|
|
150
|
+
getLogger().debug('Model name cache cleared');
|
|
151
|
+
}
|
|
152
|
+
/**
|
|
153
|
+
* Get cache statistics for monitoring
|
|
154
|
+
*/
|
|
155
|
+
export function getModelNameCacheStats() {
|
|
156
|
+
return {
|
|
157
|
+
cacheSize: modelNameCache.size,
|
|
158
|
+
failedResolutionCount: failedResolutionCache.size,
|
|
159
|
+
cacheEntries: Array.from(modelNameCache.entries()).map(([deployment, resolved]) => ({
|
|
160
|
+
deployment,
|
|
161
|
+
resolved,
|
|
162
|
+
})),
|
|
163
|
+
};
|
|
164
|
+
}
|
|
165
|
+
/**
|
|
166
|
+
* Batch resolve multiple deployment names
|
|
167
|
+
* Useful for pre-warming cache or bulk operations
|
|
168
|
+
*
|
|
169
|
+
* @param deploymentNames - Array of deployment names to resolve
|
|
170
|
+
* @returns Map of deployment name to resolved model name
|
|
171
|
+
*/
|
|
172
|
+
export function batchResolveModelNames(deploymentNames) {
|
|
173
|
+
const results = new Map();
|
|
174
|
+
logger.debug('Batch resolving model names', {
|
|
175
|
+
count: deploymentNames.length,
|
|
176
|
+
deployments: deploymentNames,
|
|
177
|
+
});
|
|
178
|
+
for (const deployment of deploymentNames) {
|
|
179
|
+
try {
|
|
180
|
+
const resolved = resolveAzureModelName(deployment);
|
|
181
|
+
results.set(deployment, resolved);
|
|
182
|
+
}
|
|
183
|
+
catch (error) {
|
|
184
|
+
logger.error('Error in batch resolution', {
|
|
185
|
+
deployment,
|
|
186
|
+
error: error instanceof Error ? error.message : String(error),
|
|
187
|
+
});
|
|
188
|
+
results.set(deployment, deployment); // Fallback to original name
|
|
189
|
+
}
|
|
190
|
+
}
|
|
191
|
+
return results;
|
|
192
|
+
}
|
|
193
|
+
/**
|
|
194
|
+
* Check if a deployment name would be resolved to a different model name
|
|
195
|
+
* Useful for validation and testing
|
|
196
|
+
*
|
|
197
|
+
* @param deploymentName - Azure deployment name
|
|
198
|
+
* @returns true if the deployment name would be transformed
|
|
199
|
+
*/
|
|
200
|
+
export function wouldTransformDeploymentName(deploymentName) {
|
|
201
|
+
const resolved = resolveAzureModelName(deploymentName, false); // Don't use cache for this check
|
|
202
|
+
return resolved !== deploymentName;
|
|
203
|
+
}
|
|
204
|
+
//# sourceMappingURL=azure-model-resolver.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"azure-model-resolver.js","sourceRoot":"","sources":["../../../src/utils/azure-model-resolver.ts"],"names":[],"mappings":"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"}
|
|
@@ -0,0 +1,21 @@
|
|
|
1
|
+
// Direct match check for known LiteLLM model names
|
|
2
|
+
export const knownModels = [
|
|
3
|
+
'gpt-4o',
|
|
4
|
+
'gpt-4o-mini',
|
|
5
|
+
'gpt-4',
|
|
6
|
+
'gpt-4-turbo',
|
|
7
|
+
'gpt-4-vision-preview',
|
|
8
|
+
'gpt-3.5-turbo',
|
|
9
|
+
'gpt-3.5-turbo-instruct',
|
|
10
|
+
'text-embedding-3-large',
|
|
11
|
+
'text-embedding-3-small',
|
|
12
|
+
'text-embedding-ada-002',
|
|
13
|
+
'dall-e-3',
|
|
14
|
+
'dall-e-2',
|
|
15
|
+
'whisper-1',
|
|
16
|
+
'tts-1',
|
|
17
|
+
'tts-1-hd'
|
|
18
|
+
];
|
|
19
|
+
export const MESSAGE_PATTERNS_TYPE_NETWORK = ["network", "timeout", "ECONNRESET"];
|
|
20
|
+
export const ERROR_MESSAGE_PATTERNS_TYPE_CONFIG = ["config", "key", "unauthorized"];
|
|
21
|
+
//# sourceMappingURL=constants.js.map
|
|
@@ -0,0 +1 @@
|
|
|
1
|
+
{"version":3,"file":"constants.js","sourceRoot":"","sources":["../../../src/utils/constants.ts"],"names":[],"mappings":"AAAA,mDAAmD;AACnD,MAAM,CAAC,MAAM,WAAW,GAAG;IAC3B,QAAQ;IACR,aAAa;IACb,OAAO;IACP,aAAa;IACb,sBAAsB;IACtB,eAAe;IACf,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,wBAAwB;IACxB,UAAU;IACV,UAAU;IACV,WAAW;IACX,OAAO;IACP,UAAU;CACT,CAAC;AAEF,MAAM,CAAC,MAAM,6BAA6B,GAAG,CAAC,SAAS,EAAE,SAAS,EAAE,YAAY,CAAC,CAAC;AAClF,MAAM,CAAC,MAAM,kCAAkC,GAAG,CAAC,QAAQ,EAAE,KAAK,EAAE,cAAc,CAAC,CAAC"}
|