@revenium/openai 1.0.12 → 1.0.14
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/.env.example +10 -15
- package/CHANGELOG.md +59 -0
- package/CODE_OF_CONDUCT.md +57 -0
- package/CONTRIBUTING.md +38 -0
- package/README.md +109 -515
- package/SECURITY.md +34 -0
- package/dist/cjs/core/client/index.js +14 -0
- package/dist/cjs/core/client/index.js.map +1 -0
- package/dist/cjs/core/client/manager.js +109 -0
- package/dist/cjs/core/client/manager.js.map +1 -0
- package/dist/cjs/core/config/azure-config.js +5 -17
- package/dist/cjs/core/config/azure-config.js.map +1 -1
- package/dist/cjs/core/config/index.js +2 -2
- package/dist/cjs/core/config/index.js.map +1 -1
- package/dist/cjs/core/config/loader.js +34 -14
- package/dist/cjs/core/config/loader.js.map +1 -1
- package/dist/cjs/core/config/manager.js +12 -5
- package/dist/cjs/core/config/manager.js.map +1 -1
- package/dist/cjs/core/config/validator.js +3 -45
- package/dist/cjs/core/config/validator.js.map +1 -1
- package/dist/cjs/core/middleware/index.js +17 -0
- package/dist/cjs/core/middleware/index.js.map +1 -0
- package/dist/cjs/core/middleware/interfaces.js +361 -0
- package/dist/cjs/core/middleware/interfaces.js.map +1 -0
- package/dist/cjs/core/middleware/revenium-client.js +142 -0
- package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
- package/dist/cjs/core/providers/detector.js +45 -23
- package/dist/cjs/core/providers/detector.js.map +1 -1
- package/dist/cjs/core/providers/index.js +2 -1
- package/dist/cjs/core/providers/index.js.map +1 -1
- package/dist/cjs/core/tracking/api-client.js +14 -13
- package/dist/cjs/core/tracking/api-client.js.map +1 -1
- package/dist/cjs/core/tracking/payload-builder.js +30 -35
- package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
- package/dist/cjs/core/tracking/usage-tracker.js +22 -18
- package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
- package/dist/cjs/index.js +26 -174
- package/dist/cjs/index.js.map +1 -1
- package/dist/cjs/types/index.js +0 -8
- package/dist/cjs/types/index.js.map +1 -1
- package/dist/cjs/types/openai-augmentation.js +0 -49
- package/dist/cjs/types/openai-augmentation.js.map +1 -1
- package/dist/cjs/utils/constants.js +17 -20
- package/dist/cjs/utils/constants.js.map +1 -1
- package/dist/cjs/utils/error-handler.js +18 -14
- package/dist/cjs/utils/error-handler.js.map +1 -1
- package/dist/cjs/utils/metadata-builder.js +27 -19
- package/dist/cjs/utils/metadata-builder.js.map +1 -1
- package/dist/cjs/utils/provider-detection.js +25 -28
- package/dist/cjs/utils/provider-detection.js.map +1 -1
- package/dist/cjs/utils/stop-reason-mapper.js +4 -0
- package/dist/cjs/utils/stop-reason-mapper.js.map +1 -1
- package/dist/cjs/utils/url-builder.js +3 -3
- package/dist/esm/core/client/index.js +6 -0
- package/dist/esm/core/client/index.js.map +1 -0
- package/dist/esm/core/client/manager.js +102 -0
- package/dist/esm/core/client/manager.js.map +1 -0
- package/dist/esm/core/config/azure-config.js +6 -18
- package/dist/esm/core/config/azure-config.js.map +1 -1
- package/dist/esm/core/config/index.js +5 -4
- package/dist/esm/core/config/index.js.map +1 -1
- package/dist/esm/core/config/loader.js +33 -13
- package/dist/esm/core/config/loader.js.map +1 -1
- package/dist/esm/core/config/manager.js +14 -7
- package/dist/esm/core/config/manager.js.map +1 -1
- package/dist/esm/core/config/validator.js +3 -44
- package/dist/esm/core/config/validator.js.map +1 -1
- package/dist/esm/core/middleware/index.js +8 -0
- package/dist/esm/core/middleware/index.js.map +1 -0
- package/dist/esm/core/middleware/interfaces.js +353 -0
- package/dist/esm/core/middleware/interfaces.js.map +1 -0
- package/dist/esm/core/middleware/revenium-client.js +105 -0
- package/dist/esm/core/middleware/revenium-client.js.map +1 -0
- package/dist/esm/core/providers/detector.js +43 -22
- package/dist/esm/core/providers/detector.js.map +1 -1
- package/dist/esm/core/providers/index.js +2 -2
- package/dist/esm/core/providers/index.js.map +1 -1
- package/dist/esm/core/tracking/api-client.js +13 -12
- package/dist/esm/core/tracking/api-client.js.map +1 -1
- package/dist/esm/core/tracking/payload-builder.js +31 -36
- package/dist/esm/core/tracking/payload-builder.js.map +1 -1
- package/dist/esm/core/tracking/usage-tracker.js +24 -20
- package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
- package/dist/esm/index.js +9 -157
- package/dist/esm/index.js.map +1 -1
- package/dist/esm/types/index.js +2 -10
- package/dist/esm/types/index.js.map +1 -1
- package/dist/esm/types/openai-augmentation.js +0 -49
- package/dist/esm/types/openai-augmentation.js.map +1 -1
- package/dist/esm/utils/constants.js +16 -19
- package/dist/esm/utils/constants.js.map +1 -1
- package/dist/esm/utils/error-handler.js +19 -15
- package/dist/esm/utils/error-handler.js.map +1 -1
- package/dist/esm/utils/metadata-builder.js +27 -19
- package/dist/esm/utils/metadata-builder.js.map +1 -1
- package/dist/esm/utils/provider-detection.js +26 -29
- package/dist/esm/utils/provider-detection.js.map +1 -1
- package/dist/esm/utils/stop-reason-mapper.js +4 -0
- package/dist/esm/utils/stop-reason-mapper.js.map +1 -1
- package/dist/esm/utils/url-builder.js +3 -3
- package/dist/types/core/client/index.d.ts +6 -0
- package/dist/types/core/client/index.d.ts.map +1 -0
- package/dist/types/core/client/manager.d.ts +32 -0
- package/dist/types/core/client/manager.d.ts.map +1 -0
- package/dist/types/core/config/azure-config.d.ts +2 -2
- package/dist/types/core/config/azure-config.d.ts.map +1 -1
- package/dist/types/core/config/index.d.ts +4 -4
- package/dist/types/core/config/index.d.ts.map +1 -1
- package/dist/types/core/config/loader.d.ts +3 -1
- package/dist/types/core/config/loader.d.ts.map +1 -1
- package/dist/types/core/config/manager.d.ts +1 -1
- package/dist/types/core/config/manager.d.ts.map +1 -1
- package/dist/types/core/config/validator.d.ts +1 -12
- package/dist/types/core/config/validator.d.ts.map +1 -1
- package/dist/types/core/middleware/index.d.ts +8 -0
- package/dist/types/core/middleware/index.d.ts.map +1 -0
- package/dist/types/core/middleware/interfaces.d.ts +74 -0
- package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
- package/dist/types/core/middleware/revenium-client.d.ts +58 -0
- package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
- package/dist/types/core/providers/detector.d.ts +9 -2
- package/dist/types/core/providers/detector.d.ts.map +1 -1
- package/dist/types/core/providers/index.d.ts +2 -2
- package/dist/types/core/providers/index.d.ts.map +1 -1
- package/dist/types/core/tracking/api-client.d.ts +1 -1
- package/dist/types/core/tracking/api-client.d.ts.map +1 -1
- package/dist/types/core/tracking/payload-builder.d.ts +3 -3
- package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
- package/dist/types/core/tracking/usage-tracker.d.ts +2 -2
- package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
- package/dist/types/index.d.ts +11 -114
- package/dist/types/index.d.ts.map +1 -1
- package/dist/types/types/function-parameters.d.ts +2 -23
- package/dist/types/types/function-parameters.d.ts.map +1 -1
- package/dist/types/types/index.d.ts +17 -115
- package/dist/types/types/index.d.ts.map +1 -1
- package/dist/types/types/openai-augmentation.d.ts +4 -139
- package/dist/types/types/openai-augmentation.d.ts.map +1 -1
- package/dist/types/utils/constants.d.ts +7 -1
- package/dist/types/utils/constants.d.ts.map +1 -1
- package/dist/types/utils/error-handler.d.ts +2 -2
- package/dist/types/utils/error-handler.d.ts.map +1 -1
- package/dist/types/utils/metadata-builder.d.ts +4 -3
- package/dist/types/utils/metadata-builder.d.ts.map +1 -1
- package/dist/types/utils/provider-detection.d.ts +3 -3
- package/dist/types/utils/provider-detection.d.ts.map +1 -1
- package/dist/types/utils/stop-reason-mapper.d.ts.map +1 -1
- package/dist/types/utils/url-builder.d.ts +3 -3
- package/examples/README.md +270 -224
- package/examples/azure/basic.ts +62 -0
- package/examples/azure/responses-basic.ts +45 -0
- package/examples/azure/responses-stream.ts +61 -0
- package/examples/azure/stream.ts +56 -0
- package/examples/getting_started.ts +31 -43
- package/examples/openai/basic.ts +45 -0
- package/examples/openai/metadata.ts +67 -0
- package/examples/openai/responses-basic.ts +44 -0
- package/examples/openai/responses-embed.ts +34 -0
- package/examples/openai/responses-streaming.ts +63 -0
- package/examples/openai/streaming.ts +59 -0
- package/package.json +20 -13
- package/dist/cjs/core/wrapper/index.js +0 -15
- package/dist/cjs/core/wrapper/index.js.map +0 -1
- package/dist/cjs/core/wrapper/instance-patcher.js +0 -202
- package/dist/cjs/core/wrapper/instance-patcher.js.map +0 -1
- package/dist/cjs/core/wrapper/request-handler.js +0 -317
- package/dist/cjs/core/wrapper/request-handler.js.map +0 -1
- package/dist/cjs/core/wrapper/stream-wrapper.js +0 -82
- package/dist/cjs/core/wrapper/stream-wrapper.js.map +0 -1
- package/dist/cjs/utils/azure-model-resolver.js +0 -211
- package/dist/cjs/utils/azure-model-resolver.js.map +0 -1
- package/dist/cjs/utils/request-handler-factory.js +0 -185
- package/dist/cjs/utils/request-handler-factory.js.map +0 -1
- package/dist/esm/core/wrapper/index.js +0 -9
- package/dist/esm/core/wrapper/index.js.map +0 -1
- package/dist/esm/core/wrapper/instance-patcher.js +0 -199
- package/dist/esm/core/wrapper/instance-patcher.js.map +0 -1
- package/dist/esm/core/wrapper/request-handler.js +0 -310
- package/dist/esm/core/wrapper/request-handler.js.map +0 -1
- package/dist/esm/core/wrapper/stream-wrapper.js +0 -79
- package/dist/esm/core/wrapper/stream-wrapper.js.map +0 -1
- package/dist/esm/utils/azure-model-resolver.js +0 -204
- package/dist/esm/utils/azure-model-resolver.js.map +0 -1
- package/dist/esm/utils/request-handler-factory.js +0 -146
- package/dist/esm/utils/request-handler-factory.js.map +0 -1
- package/dist/types/core/wrapper/index.d.ts +0 -8
- package/dist/types/core/wrapper/index.d.ts.map +0 -1
- package/dist/types/core/wrapper/instance-patcher.d.ts +0 -33
- package/dist/types/core/wrapper/instance-patcher.d.ts.map +0 -1
- package/dist/types/core/wrapper/request-handler.d.ts +0 -29
- package/dist/types/core/wrapper/request-handler.d.ts.map +0 -1
- package/dist/types/core/wrapper/stream-wrapper.d.ts +0 -13
- package/dist/types/core/wrapper/stream-wrapper.d.ts.map +0 -1
- package/dist/types/utils/azure-model-resolver.d.ts +0 -41
- package/dist/types/utils/azure-model-resolver.d.ts.map +0 -1
- package/dist/types/utils/request-handler-factory.d.ts +0 -81
- package/dist/types/utils/request-handler-factory.d.ts.map +0 -1
- package/examples/azure-basic.ts +0 -206
- package/examples/azure-responses-basic.ts +0 -233
- package/examples/azure-responses-streaming.ts +0 -255
- package/examples/azure-streaming.ts +0 -209
- package/examples/openai-basic.ts +0 -147
- package/examples/openai-function-calling.ts +0 -259
- package/examples/openai-responses-basic.ts +0 -212
- package/examples/openai-responses-streaming.ts +0 -232
- package/examples/openai-streaming.ts +0 -172
- package/examples/openai-vision.ts +0 -289
- package/src/core/config/azure-config.ts +0 -72
- package/src/core/config/index.ts +0 -23
- package/src/core/config/loader.ts +0 -66
- package/src/core/config/manager.ts +0 -94
- package/src/core/config/validator.ts +0 -89
- package/src/core/providers/detector.ts +0 -159
- package/src/core/providers/index.ts +0 -16
- package/src/core/tracking/api-client.ts +0 -78
- package/src/core/tracking/index.ts +0 -21
- package/src/core/tracking/payload-builder.ts +0 -132
- package/src/core/tracking/usage-tracker.ts +0 -189
- package/src/core/wrapper/index.ts +0 -9
- package/src/core/wrapper/instance-patcher.ts +0 -288
- package/src/core/wrapper/request-handler.ts +0 -423
- package/src/core/wrapper/stream-wrapper.ts +0 -100
- package/src/index.ts +0 -336
- package/src/types/function-parameters.ts +0 -251
- package/src/types/index.ts +0 -313
- package/src/types/openai-augmentation.ts +0 -233
- package/src/types/responses-api.ts +0 -308
- package/src/utils/azure-model-resolver.ts +0 -220
- package/src/utils/constants.ts +0 -21
- package/src/utils/error-handler.ts +0 -251
- package/src/utils/metadata-builder.ts +0 -219
- package/src/utils/provider-detection.ts +0 -257
- package/src/utils/request-handler-factory.ts +0 -285
- package/src/utils/stop-reason-mapper.ts +0 -74
- package/src/utils/type-guards.ts +0 -202
- package/src/utils/url-builder.ts +0 -68
|
@@ -1,146 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Request Handler Factory
|
|
3
|
-
*
|
|
4
|
-
* Eliminates dynamic require() calls and provides a clean factory pattern
|
|
5
|
-
* for creating request handlers with proper dependency injection.
|
|
6
|
-
*/
|
|
7
|
-
/**
|
|
8
|
-
* Request handler factory class
|
|
9
|
-
*
|
|
10
|
-
* This eliminates the need for dynamic require() calls and provides
|
|
11
|
-
* a clean dependency injection pattern.
|
|
12
|
-
*/
|
|
13
|
-
export class RequestHandlerFactory {
|
|
14
|
-
constructor() {
|
|
15
|
-
this.dependencies = null;
|
|
16
|
-
}
|
|
17
|
-
/**
|
|
18
|
-
* Initialize the factory with dependencies
|
|
19
|
-
*/
|
|
20
|
-
initialize(dependencies) {
|
|
21
|
-
this.dependencies = dependencies;
|
|
22
|
-
}
|
|
23
|
-
/**
|
|
24
|
-
* Get streaming request handler
|
|
25
|
-
*/
|
|
26
|
-
getStreamingHandler() {
|
|
27
|
-
if (!this.dependencies) {
|
|
28
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
29
|
-
}
|
|
30
|
-
return this.dependencies.handleStreamingRequest;
|
|
31
|
-
}
|
|
32
|
-
/**
|
|
33
|
-
* Get non-streaming request handler
|
|
34
|
-
*/
|
|
35
|
-
getNonStreamingHandler() {
|
|
36
|
-
if (!this.dependencies) {
|
|
37
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
38
|
-
}
|
|
39
|
-
return this.dependencies.handleNonStreamingRequest;
|
|
40
|
-
}
|
|
41
|
-
/**
|
|
42
|
-
* Get embeddings request handler
|
|
43
|
-
*/
|
|
44
|
-
getEmbeddingsHandler() {
|
|
45
|
-
if (!this.dependencies) {
|
|
46
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
47
|
-
}
|
|
48
|
-
return this.dependencies.handleEmbeddingsRequest;
|
|
49
|
-
}
|
|
50
|
-
/**
|
|
51
|
-
* Route chat request to appropriate handler
|
|
52
|
-
*/
|
|
53
|
-
routeChatRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance) {
|
|
54
|
-
if (!this.dependencies) {
|
|
55
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
56
|
-
}
|
|
57
|
-
// Pass clean params (without usageMetadata) to handlers
|
|
58
|
-
// The handlers will receive usageMetadata separately
|
|
59
|
-
if (params.stream) {
|
|
60
|
-
return this.dependencies.handleStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
61
|
-
}
|
|
62
|
-
else {
|
|
63
|
-
return this.dependencies.handleNonStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
64
|
-
}
|
|
65
|
-
}
|
|
66
|
-
/**
|
|
67
|
-
* Route embeddings request to appropriate handler
|
|
68
|
-
*/
|
|
69
|
-
routeEmbeddingsRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance) {
|
|
70
|
-
if (!this.dependencies) {
|
|
71
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
72
|
-
}
|
|
73
|
-
// Pass clean params (without usageMetadata) to handler
|
|
74
|
-
// The handler will receive usageMetadata separately
|
|
75
|
-
return this.dependencies.handleEmbeddingsRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
76
|
-
}
|
|
77
|
-
/**
|
|
78
|
-
* Route responses request to appropriate handler (new OpenAI Responses API)
|
|
79
|
-
*/
|
|
80
|
-
routeResponsesRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance) {
|
|
81
|
-
if (!this.dependencies) {
|
|
82
|
-
throw new Error('RequestHandlerFactory not initialized. Call initialize() first.');
|
|
83
|
-
}
|
|
84
|
-
// Route to appropriate handler based on streaming
|
|
85
|
-
if (params.stream) {
|
|
86
|
-
return this.dependencies.handleResponsesStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
87
|
-
}
|
|
88
|
-
else {
|
|
89
|
-
return this.dependencies.handleResponsesNonStreamingRequest(originalCreate, params, options, usageMetadata, requestStartTime, instance);
|
|
90
|
-
}
|
|
91
|
-
}
|
|
92
|
-
/**
|
|
93
|
-
* Check if factory is initialized
|
|
94
|
-
*/
|
|
95
|
-
isInitialized() {
|
|
96
|
-
return this.dependencies !== null;
|
|
97
|
-
}
|
|
98
|
-
}
|
|
99
|
-
/**
|
|
100
|
-
* Global factory instance
|
|
101
|
-
*/
|
|
102
|
-
export const requestHandlerFactory = new RequestHandlerFactory();
|
|
103
|
-
/**
|
|
104
|
-
* Initialize the global factory (called once during module setup)
|
|
105
|
-
* Uses dynamic import to avoid circular dependencies
|
|
106
|
-
*/
|
|
107
|
-
export async function initializeRequestHandlerFactory() {
|
|
108
|
-
// Use dynamic import instead of require for better TypeScript support
|
|
109
|
-
const handlerModule = await import('../core/wrapper/request-handler.js');
|
|
110
|
-
requestHandlerFactory.initialize({
|
|
111
|
-
handleStreamingRequest: handlerModule.handleStreamingRequest,
|
|
112
|
-
handleNonStreamingRequest: handlerModule.handleNonStreamingRequest,
|
|
113
|
-
handleEmbeddingsRequest: handlerModule.handleEmbeddingsRequest,
|
|
114
|
-
handleResponsesStreamingRequest: handlerModule.handleResponsesStreamingRequest,
|
|
115
|
-
handleResponsesNonStreamingRequest: handlerModule.handleResponsesNonStreamingRequest,
|
|
116
|
-
});
|
|
117
|
-
}
|
|
118
|
-
// Promise cache to prevent race conditions during initialization
|
|
119
|
-
let initializationPromise = null;
|
|
120
|
-
/**
|
|
121
|
-
* Utility function to ensure factory is initialized
|
|
122
|
-
*/
|
|
123
|
-
export async function ensureFactoryInitialized() {
|
|
124
|
-
if (!requestHandlerFactory.isInitialized()) {
|
|
125
|
-
if (!initializationPromise) {
|
|
126
|
-
initializationPromise = initializeRequestHandlerFactoryAsync();
|
|
127
|
-
}
|
|
128
|
-
await initializationPromise;
|
|
129
|
-
}
|
|
130
|
-
}
|
|
131
|
-
/**
|
|
132
|
-
* Async initialization for ES Module compatibility
|
|
133
|
-
* Uses dynamic import for ES Module compatibility
|
|
134
|
-
*/
|
|
135
|
-
async function initializeRequestHandlerFactoryAsync() {
|
|
136
|
-
// Use dynamic import for ES Module compatibility
|
|
137
|
-
const handlerModule = await import('../core/wrapper/request-handler.js');
|
|
138
|
-
requestHandlerFactory.initialize({
|
|
139
|
-
handleStreamingRequest: handlerModule.handleStreamingRequest,
|
|
140
|
-
handleNonStreamingRequest: handlerModule.handleNonStreamingRequest,
|
|
141
|
-
handleEmbeddingsRequest: handlerModule.handleEmbeddingsRequest,
|
|
142
|
-
handleResponsesStreamingRequest: handlerModule.handleResponsesStreamingRequest,
|
|
143
|
-
handleResponsesNonStreamingRequest: handlerModule.handleResponsesNonStreamingRequest,
|
|
144
|
-
});
|
|
145
|
-
}
|
|
146
|
-
//# sourceMappingURL=request-handler-factory.js.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-handler-factory.js","sourceRoot":"","sources":["../../../src/utils/request-handler-factory.ts"],"names":[],"mappings":"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"}
|
|
@@ -1,8 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Wrapper module - Main exports
|
|
3
|
-
*
|
|
4
|
-
* This module provides a clean interface for OpenAI client wrapping,
|
|
5
|
-
* separating concerns into focused sub-modules.
|
|
6
|
-
*/
|
|
7
|
-
export { patchOpenAI, patchOpenAIInstance, getProviderInfo } from './instance-patcher.js';
|
|
8
|
-
//# sourceMappingURL=index.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../../../../src/core/wrapper/index.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,WAAW,EAAE,mBAAmB,EAAE,eAAe,EAAE,MAAM,uBAAuB,CAAC"}
|
|
@@ -1,33 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Instance Patcher Module
|
|
3
|
-
*
|
|
4
|
-
* Handles patching of OpenAI client instances.
|
|
5
|
-
* Extracted from wrapper.ts for better organization.
|
|
6
|
-
*/
|
|
7
|
-
import OpenAI from 'openai';
|
|
8
|
-
import { ProviderInfo } from '../../types/index.js';
|
|
9
|
-
import { OpenAIClientInstance } from '../../types/function-parameters.js';
|
|
10
|
-
import '../../types/openai-augmentation.js';
|
|
11
|
-
/**
|
|
12
|
-
* WeakMap to store provider information for each client instance
|
|
13
|
-
*/
|
|
14
|
-
declare const instanceProviders: WeakMap<OpenAIClientInstance, ProviderInfo>;
|
|
15
|
-
/**
|
|
16
|
-
* Get provider information for a client instance
|
|
17
|
-
*/
|
|
18
|
-
export declare function getProviderInfo(instance: OpenAIClientInstance): ProviderInfo | undefined;
|
|
19
|
-
/**
|
|
20
|
-
* Simple approach: Only patch instances when users create them
|
|
21
|
-
* No global patching, no dummy keys - just clean instance patching
|
|
22
|
-
*/
|
|
23
|
-
export declare function patchOpenAI(): void;
|
|
24
|
-
/**
|
|
25
|
-
* Manually patch an existing OpenAI instance
|
|
26
|
-
* This is the main function users should call
|
|
27
|
-
*/
|
|
28
|
-
export declare function patchOpenAIInstance(instance: OpenAI): OpenAI;
|
|
29
|
-
/**
|
|
30
|
-
* Export instance providers for request handlers
|
|
31
|
-
*/
|
|
32
|
-
export { instanceProviders };
|
|
33
|
-
//# sourceMappingURL=instance-patcher.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"instance-patcher.d.ts","sourceRoot":"","sources":["../../../../src/core/wrapper/instance-patcher.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,MAAM,MAAM,QAAQ,CAAC;AAG5B,OAAO,EAAE,YAAY,EAAE,MAAM,sBAAsB,CAAC;AACpD,OAAO,EACL,oBAAoB,EAKrB,MAAM,oCAAoC,CAAC;AAY5C,OAAO,oCAAoC,CAAC;AAc5C;;GAEG;AACH,QAAA,MAAM,iBAAiB,6CAAoD,CAAC;AAK5E;;GAEG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,oBAAoB,GAAG,YAAY,GAAG,SAAS,CAExF;AAED;;;GAGG;AACH,wBAAgB,WAAW,IAAI,IAAI,CAGlC;AAED;;;GAGG;AACH,wBAAgB,mBAAmB,CAAC,QAAQ,EAAE,MAAM,GAAG,MAAM,CAyB5D;AA4LD;;GAEG;AACH,OAAO,EAAE,iBAAiB,EAAE,CAAC"}
|
|
@@ -1,29 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Request Handler Module
|
|
3
|
-
*
|
|
4
|
-
* Handles different types of OpenAI requests (streaming, non-streaming, embeddings).
|
|
5
|
-
* Extracted from wrapper.ts for better organization.
|
|
6
|
-
*/
|
|
7
|
-
import { UsageMetadata, OpenAIResponsesRequest } from '../../types/index.js';
|
|
8
|
-
import { OpenAIChatResponse, OpenAIEmbeddingResponse, OpenAIChatRequest, OpenAIEmbeddingRequest, OpenAIClientInstance, OpenAIRequestOptions, OpenAIOriginalFunction, OpenAIResponsesOriginalFunction } from '../../types/function-parameters.js';
|
|
9
|
-
/**
|
|
10
|
-
* Handle non-streaming OpenAI requests
|
|
11
|
-
*/
|
|
12
|
-
export declare function handleNonStreamingRequest(originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIChatRequest, 'usageMetadata'> | Omit<OpenAIEmbeddingRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<OpenAIChatResponse | OpenAIEmbeddingResponse>;
|
|
13
|
-
/**
|
|
14
|
-
* Handle streaming OpenAI requests
|
|
15
|
-
*/
|
|
16
|
-
export declare function handleStreamingRequest(originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIChatRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<AsyncIterable<unknown>>;
|
|
17
|
-
/**
|
|
18
|
-
* Handle embeddings requests
|
|
19
|
-
*/
|
|
20
|
-
export declare function handleEmbeddingsRequest(originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIEmbeddingRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<OpenAIEmbeddingResponse>;
|
|
21
|
-
/**
|
|
22
|
-
* Handle non-streaming OpenAI Responses API requests
|
|
23
|
-
*/
|
|
24
|
-
export declare function handleResponsesNonStreamingRequest(originalCreate: OpenAIResponsesOriginalFunction, params: Omit<OpenAIResponsesRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<unknown>;
|
|
25
|
-
/**
|
|
26
|
-
* Handle streaming OpenAI Responses API requests
|
|
27
|
-
*/
|
|
28
|
-
export declare function handleResponsesStreamingRequest(originalCreate: OpenAIResponsesOriginalFunction, params: Omit<OpenAIResponsesRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<AsyncIterable<unknown>>;
|
|
29
|
-
//# sourceMappingURL=request-handler.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-handler.d.ts","sourceRoot":"","sources":["../../../../src/core/wrapper/request-handler.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAGH,OAAO,EAAE,aAAa,EAAE,sBAAsB,EAAE,MAAM,sBAAsB,CAAC;AAC7E,OAAO,EACL,kBAAkB,EAClB,uBAAuB,EACvB,iBAAiB,EACjB,sBAAsB,EACtB,oBAAoB,EACpB,oBAAoB,EACpB,sBAAsB,EACtB,+BAA+B,EAChC,MAAM,oCAAoC,CAAC;AAgB5C;;GAEG;AACH,wBAAsB,yBAAyB,CAC7C,cAAc,EAAE,sBAAsB,EACtC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,GAAG,IAAI,CAAC,sBAAsB,EAAE,eAAe,CAAC,EAChG,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,kBAAkB,GAAG,uBAAuB,CAAC,CAuEvD;AAED;;GAEG;AACH,wBAAsB,sBAAsB,CAC1C,cAAc,EAAE,sBAAsB,EACtC,MAAM,EAAE,IAAI,CAAC,iBAAiB,EAAE,eAAe,CAAC,EAChD,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CAwCjC;AAED;;GAEG;AACH,wBAAsB,uBAAuB,CAC3C,cAAc,EAAE,sBAAsB,EACtC,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,eAAe,CAAC,EACrD,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,uBAAuB,CAAC,CA8ClC;AAED;;GAEG;AACH,wBAAsB,kCAAkC,CACtD,cAAc,EAAE,+BAA+B,EAC/C,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,eAAe,CAAC,EACrD,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,OAAO,CAAC,CAiElB;AAED;;GAEG;AACH,wBAAsB,+BAA+B,CACnD,cAAc,EAAE,+BAA+B,EAC/C,MAAM,EAAE,IAAI,CAAC,sBAAsB,EAAE,eAAe,CAAC,EACrD,OAAO,EAAE,oBAAoB,GAAG,SAAS,EACzC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,OAAO,CAAC,aAAa,CAAC,OAAO,CAAC,CAAC,CA2BjC"}
|
|
@@ -1,13 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Stream Wrapper Module
|
|
3
|
-
*
|
|
4
|
-
* Handles wrapping of streaming responses for usage tracking.
|
|
5
|
-
* Extracted from wrapper.ts for better organization.
|
|
6
|
-
*/
|
|
7
|
-
import { UsageMetadata } from '../../types/index.js';
|
|
8
|
-
import { OpenAIClientInstance } from '../../types/function-parameters.js';
|
|
9
|
-
/**
|
|
10
|
-
* Create a simple stream wrapper that tracks usage when complete
|
|
11
|
-
*/
|
|
12
|
-
export declare function createTrackingStreamWrapper(originalStream: AsyncIterable<unknown>, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): AsyncIterable<unknown>;
|
|
13
|
-
//# sourceMappingURL=stream-wrapper.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"stream-wrapper.d.ts","sourceRoot":"","sources":["../../../../src/core/wrapper/stream-wrapper.ts"],"names":[],"mappings":"AAAA;;;;;GAKG;AAEH,OAAO,EAAE,aAAa,EAAE,MAAM,sBAAsB,CAAC;AACrD,OAAO,EACL,oBAAoB,EAGrB,MAAM,oCAAoC,CAAC;AAS5C;;GAEG;AACH,wBAAgB,2BAA2B,CACzC,cAAc,EAAE,aAAa,CAAC,OAAO,CAAC,EACtC,aAAa,EAAE,aAAa,GAAG,SAAS,EACxC,gBAAgB,EAAE,MAAM,EACxB,QAAQ,EAAE,oBAAoB,GAC7B,aAAa,CAAC,OAAO,CAAC,CAsExB"}
|
|
@@ -1,41 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Resolve Azure deployment name to LiteLLM-compatible model name
|
|
3
|
-
*
|
|
4
|
-
* @param deploymentName - Azure deployment name
|
|
5
|
-
* @param useCache - Whether to use cached results (default: true)
|
|
6
|
-
* @returns LiteLLM-compatible model name
|
|
7
|
-
*/
|
|
8
|
-
export declare function resolveAzureModelName(deploymentName: string, useCache?: boolean): string;
|
|
9
|
-
/**
|
|
10
|
-
* Clear the model name cache
|
|
11
|
-
* Useful for testing or when deployment configurations change
|
|
12
|
-
*/
|
|
13
|
-
export declare function clearModelNameCache(): void;
|
|
14
|
-
/**
|
|
15
|
-
* Get cache statistics for monitoring
|
|
16
|
-
*/
|
|
17
|
-
export declare function getModelNameCacheStats(): {
|
|
18
|
-
cacheSize: number;
|
|
19
|
-
failedResolutionCount: number;
|
|
20
|
-
cacheEntries: Array<{
|
|
21
|
-
deployment: string;
|
|
22
|
-
resolved: string;
|
|
23
|
-
}>;
|
|
24
|
-
};
|
|
25
|
-
/**
|
|
26
|
-
* Batch resolve multiple deployment names
|
|
27
|
-
* Useful for pre-warming cache or bulk operations
|
|
28
|
-
*
|
|
29
|
-
* @param deploymentNames - Array of deployment names to resolve
|
|
30
|
-
* @returns Map of deployment name to resolved model name
|
|
31
|
-
*/
|
|
32
|
-
export declare function batchResolveModelNames(deploymentNames: string[]): Map<string, string>;
|
|
33
|
-
/**
|
|
34
|
-
* Check if a deployment name would be resolved to a different model name
|
|
35
|
-
* Useful for validation and testing
|
|
36
|
-
*
|
|
37
|
-
* @param deploymentName - Azure deployment name
|
|
38
|
-
* @returns true if the deployment name would be transformed
|
|
39
|
-
*/
|
|
40
|
-
export declare function wouldTransformDeploymentName(deploymentName: string): boolean;
|
|
41
|
-
//# sourceMappingURL=azure-model-resolver.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"azure-model-resolver.d.ts","sourceRoot":"","sources":["../../../src/utils/azure-model-resolver.ts"],"names":[],"mappings":"AAgCA;;;;;;GAMG;AACH,wBAAgB,qBAAqB,CAAC,cAAc,EAAE,MAAM,EAAE,QAAQ,GAAE,OAAc,GAAG,MAAM,CA0C9F;AAuED;;;GAGG;AACH,wBAAgB,mBAAmB,IAAI,IAAI,CAI1C;AAED;;GAEG;AACH,wBAAgB,sBAAsB,IAAI;IACxC,SAAS,EAAE,MAAM,CAAC;IAClB,qBAAqB,EAAE,MAAM,CAAC;IAC9B,YAAY,EAAE,KAAK,CAAC;QAAE,UAAU,EAAE,MAAM,CAAC;QAAC,QAAQ,EAAE,MAAM,CAAA;KAAE,CAAC,CAAC;CAC/D,CASA;AAED;;;;;;GAMG;AACH,wBAAgB,sBAAsB,CAAC,eAAe,EAAE,MAAM,EAAE,GAAG,GAAG,CAAC,MAAM,EAAE,MAAM,CAAC,CAoBrF;AAED;;;;;;GAMG;AACH,wBAAgB,4BAA4B,CAAC,cAAc,EAAE,MAAM,GAAG,OAAO,CAG5E"}
|
|
@@ -1,81 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Request Handler Factory
|
|
3
|
-
*
|
|
4
|
-
* Eliminates dynamic require() calls and provides a clean factory pattern
|
|
5
|
-
* for creating request handlers with proper dependency injection.
|
|
6
|
-
*/
|
|
7
|
-
import { OpenAIChatRequest, OpenAIEmbeddingRequest, OpenAIRequestOptions, OpenAIClientInstance, OpenAIOriginalFunction, OpenAIResponsesOriginalFunction } from '../types/function-parameters.js';
|
|
8
|
-
import { UsageMetadata, OpenAIResponsesRequest } from '../types/index.js';
|
|
9
|
-
/**
|
|
10
|
-
* Request handler function signatures
|
|
11
|
-
*/
|
|
12
|
-
export type StreamingRequestHandler = (originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIChatRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance) => Promise<AsyncIterable<unknown>>;
|
|
13
|
-
export type NonStreamingRequestHandler = (originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIChatRequest, 'usageMetadata'> | Omit<OpenAIEmbeddingRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance) => Promise<unknown>;
|
|
14
|
-
export type EmbeddingsRequestHandler = (originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIEmbeddingRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance) => Promise<unknown>;
|
|
15
|
-
export type ResponsesStreamingRequestHandler = (originalCreate: OpenAIResponsesOriginalFunction, params: Omit<OpenAIResponsesRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance) => Promise<AsyncIterable<unknown>>;
|
|
16
|
-
export type ResponsesNonStreamingRequestHandler = (originalCreate: OpenAIResponsesOriginalFunction, params: Omit<OpenAIResponsesRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance) => Promise<unknown>;
|
|
17
|
-
/**
|
|
18
|
-
* Request handler dependencies
|
|
19
|
-
*/
|
|
20
|
-
export interface RequestHandlerDependencies {
|
|
21
|
-
handleStreamingRequest: StreamingRequestHandler;
|
|
22
|
-
handleNonStreamingRequest: NonStreamingRequestHandler;
|
|
23
|
-
handleEmbeddingsRequest: EmbeddingsRequestHandler;
|
|
24
|
-
handleResponsesStreamingRequest: ResponsesStreamingRequestHandler;
|
|
25
|
-
handleResponsesNonStreamingRequest: ResponsesNonStreamingRequestHandler;
|
|
26
|
-
}
|
|
27
|
-
/**
|
|
28
|
-
* Request handler factory class
|
|
29
|
-
*
|
|
30
|
-
* This eliminates the need for dynamic require() calls and provides
|
|
31
|
-
* a clean dependency injection pattern.
|
|
32
|
-
*/
|
|
33
|
-
export declare class RequestHandlerFactory {
|
|
34
|
-
private dependencies;
|
|
35
|
-
/**
|
|
36
|
-
* Initialize the factory with dependencies
|
|
37
|
-
*/
|
|
38
|
-
initialize(dependencies: RequestHandlerDependencies): void;
|
|
39
|
-
/**
|
|
40
|
-
* Get streaming request handler
|
|
41
|
-
*/
|
|
42
|
-
getStreamingHandler(): StreamingRequestHandler;
|
|
43
|
-
/**
|
|
44
|
-
* Get non-streaming request handler
|
|
45
|
-
*/
|
|
46
|
-
getNonStreamingHandler(): NonStreamingRequestHandler;
|
|
47
|
-
/**
|
|
48
|
-
* Get embeddings request handler
|
|
49
|
-
*/
|
|
50
|
-
getEmbeddingsHandler(): EmbeddingsRequestHandler;
|
|
51
|
-
/**
|
|
52
|
-
* Route chat request to appropriate handler
|
|
53
|
-
*/
|
|
54
|
-
routeChatRequest(originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIChatRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<unknown>;
|
|
55
|
-
/**
|
|
56
|
-
* Route embeddings request to appropriate handler
|
|
57
|
-
*/
|
|
58
|
-
routeEmbeddingsRequest(originalCreate: OpenAIOriginalFunction, params: Omit<OpenAIEmbeddingRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<unknown>;
|
|
59
|
-
/**
|
|
60
|
-
* Route responses request to appropriate handler (new OpenAI Responses API)
|
|
61
|
-
*/
|
|
62
|
-
routeResponsesRequest(originalCreate: OpenAIResponsesOriginalFunction, params: Omit<OpenAIResponsesRequest, 'usageMetadata'>, options: OpenAIRequestOptions | undefined, usageMetadata: UsageMetadata | undefined, requestStartTime: number, instance: OpenAIClientInstance): Promise<unknown>;
|
|
63
|
-
/**
|
|
64
|
-
* Check if factory is initialized
|
|
65
|
-
*/
|
|
66
|
-
isInitialized(): boolean;
|
|
67
|
-
}
|
|
68
|
-
/**
|
|
69
|
-
* Global factory instance
|
|
70
|
-
*/
|
|
71
|
-
export declare const requestHandlerFactory: RequestHandlerFactory;
|
|
72
|
-
/**
|
|
73
|
-
* Initialize the global factory (called once during module setup)
|
|
74
|
-
* Uses dynamic import to avoid circular dependencies
|
|
75
|
-
*/
|
|
76
|
-
export declare function initializeRequestHandlerFactory(): Promise<void>;
|
|
77
|
-
/**
|
|
78
|
-
* Utility function to ensure factory is initialized
|
|
79
|
-
*/
|
|
80
|
-
export declare function ensureFactoryInitialized(): Promise<void>;
|
|
81
|
-
//# sourceMappingURL=request-handler-factory.d.ts.map
|
|
@@ -1 +0,0 @@
|
|
|
1
|
-
{"version":3,"file":"request-handler-factory.d.ts","sourceRoot":"","sources":["../../../src/utils/request-handler-factory.ts"],"names":[],"mappings":"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"}
|
package/examples/azure-basic.ts
DELETED
|
@@ -1,206 +0,0 @@
|
|
|
1
|
-
/**
|
|
2
|
-
* Azure OpenAI Basic Example
|
|
3
|
-
*
|
|
4
|
-
* Shows how to use Revenium middleware with Azure OpenAI chat completions and embeddings.
|
|
5
|
-
* Demonstrates seamless metadata integration with Azure - all metadata fields are optional!
|
|
6
|
-
*
|
|
7
|
-
* Metadata Options:
|
|
8
|
-
* - Start with basic usage (no metadata) - tracking works automatically
|
|
9
|
-
* - Add subscriber info for user tracking
|
|
10
|
-
* - Include organization/product IDs for business analytics
|
|
11
|
-
* - Use task type and trace ID for detailed analysis
|
|
12
|
-
*
|
|
13
|
-
* For complete metadata field reference, see:
|
|
14
|
-
* https://revenium.readme.io/reference/meter_ai_completion
|
|
15
|
-
*/
|
|
16
|
-
|
|
17
|
-
import 'dotenv/config';
|
|
18
|
-
import { initializeReveniumFromEnv, patchOpenAIInstance } from '@revenium/openai';
|
|
19
|
-
import { AzureOpenAI } from 'openai';
|
|
20
|
-
|
|
21
|
-
async function azureBasicExample() {
|
|
22
|
-
console.log('️ Azure OpenAI Basic Usage with Seamless Metadata Integration\n');
|
|
23
|
-
|
|
24
|
-
// Initialize Revenium middleware
|
|
25
|
-
const initResult = initializeReveniumFromEnv();
|
|
26
|
-
if (!initResult.success) {
|
|
27
|
-
console.error(' Failed to initialize Revenium:', initResult.message);
|
|
28
|
-
process.exit(1);
|
|
29
|
-
}
|
|
30
|
-
|
|
31
|
-
// Create Azure OpenAI instance and patch it
|
|
32
|
-
const azure = patchOpenAIInstance(
|
|
33
|
-
new AzureOpenAI({
|
|
34
|
-
endpoint: process.env.AZURE_OPENAI_ENDPOINT,
|
|
35
|
-
apiKey: process.env.AZURE_OPENAI_API_KEY,
|
|
36
|
-
apiVersion: process.env.AZURE_OPENAI_API_VERSION || '2024-12-01-preview',
|
|
37
|
-
})
|
|
38
|
-
);
|
|
39
|
-
|
|
40
|
-
console.log(' Azure OpenAI client configured and patched');
|
|
41
|
-
console.log(' Endpoint:', process.env.AZURE_OPENAI_ENDPOINT);
|
|
42
|
-
console.log(' API Version:', process.env.AZURE_OPENAI_API_VERSION || '2024-12-01-preview');
|
|
43
|
-
console.log();
|
|
44
|
-
|
|
45
|
-
// Check if we have a chat model configured
|
|
46
|
-
const deployment = process.env.AZURE_OPENAI_DEPLOYMENT;
|
|
47
|
-
const isChatModel = deployment && !deployment.includes('embedding');
|
|
48
|
-
|
|
49
|
-
if (!isChatModel) {
|
|
50
|
-
console.log('️ Note: Current Azure deployment appears to be for embeddings.');
|
|
51
|
-
console.log(' To test chat completions, update .env to use a chat model:');
|
|
52
|
-
console.log(' - Comment out the embeddings section');
|
|
53
|
-
console.log(' - Uncomment the chat testing section');
|
|
54
|
-
console.log(' - Set AZURE_OPENAI_DEPLOYMENT=gpt-4o');
|
|
55
|
-
console.log('\n Skipping chat examples and testing embeddings instead...\n');
|
|
56
|
-
} else {
|
|
57
|
-
// Example 1: Basic Azure chat completion (no metadata)
|
|
58
|
-
console.log(' Example 1: Basic Azure chat completion (automatic tracking)');
|
|
59
|
-
|
|
60
|
-
const basicResponse = await azure.chat.completions.create({
|
|
61
|
-
model: deployment,
|
|
62
|
-
messages: [{ role: 'user', content: 'What are the benefits of using Azure OpenAI?' }],
|
|
63
|
-
// No usageMetadata - still automatically tracked with Azure provider info!
|
|
64
|
-
// No max_tokens - let response complete naturally
|
|
65
|
-
});
|
|
66
|
-
|
|
67
|
-
console.log(' Response:', basicResponse.choices[0]?.message?.content);
|
|
68
|
-
console.log(' Usage:', basicResponse.usage);
|
|
69
|
-
console.log(' Automatically tracked to Revenium with Azure provider metadata\n');
|
|
70
|
-
}
|
|
71
|
-
|
|
72
|
-
if (isChatModel) {
|
|
73
|
-
// Example 2: Azure chat completion with rich metadata (all optional!)
|
|
74
|
-
console.log(' Example 2: Azure chat completion with rich metadata');
|
|
75
|
-
|
|
76
|
-
const metadataResponse = await azure.chat.completions.create({
|
|
77
|
-
model: deployment,
|
|
78
|
-
messages: [
|
|
79
|
-
{
|
|
80
|
-
role: 'user',
|
|
81
|
-
content: 'Explain how Azure OpenAI differs from standard OpenAI in 3 points.',
|
|
82
|
-
},
|
|
83
|
-
],
|
|
84
|
-
|
|
85
|
-
// Optional metadata for advanced reporting, lineage tracking, and cost allocation
|
|
86
|
-
usageMetadata: {
|
|
87
|
-
// User identification
|
|
88
|
-
subscriber: {
|
|
89
|
-
id: 'azure-user-789',
|
|
90
|
-
email: 'azure-dev@company.com',
|
|
91
|
-
credential: {
|
|
92
|
-
name: 'api-key-prod',
|
|
93
|
-
value: 'key-jkl-012',
|
|
94
|
-
},
|
|
95
|
-
},
|
|
96
|
-
|
|
97
|
-
// Organization & billing
|
|
98
|
-
organizationId: 'enterprise-corp',
|
|
99
|
-
subscriptionId: 'plan-azure-enterprise-2024',
|
|
100
|
-
|
|
101
|
-
// Product & task tracking
|
|
102
|
-
productId: 'azure-ai-platform',
|
|
103
|
-
taskType: 'azure-comparison',
|
|
104
|
-
agent: 'azure-basic-chat-node',
|
|
105
|
-
|
|
106
|
-
// Session tracking
|
|
107
|
-
traceId: 'azure-' + Date.now(),
|
|
108
|
-
|
|
109
|
-
// Quality metrics
|
|
110
|
-
responseQualityScore: 0.92,
|
|
111
|
-
},
|
|
112
|
-
});
|
|
113
|
-
|
|
114
|
-
console.log(' Response:', metadataResponse.choices[0]?.message?.content);
|
|
115
|
-
console.log(' Usage:', metadataResponse.usage);
|
|
116
|
-
console.log(' Tracked with Azure provider + rich metadata for enterprise analytics\n');
|
|
117
|
-
}
|
|
118
|
-
|
|
119
|
-
// Example 3: Azure embeddings (requires embeddings model)
|
|
120
|
-
console.log(' Example 3: Azure embeddings');
|
|
121
|
-
|
|
122
|
-
if (isChatModel) {
|
|
123
|
-
console.log('️ Note: Current deployment is a chat model (gpt-4o).');
|
|
124
|
-
console.log(' Embeddings require an embedding model like text-embedding-3-large.');
|
|
125
|
-
console.log(' To test embeddings, switch .env to embeddings configuration.');
|
|
126
|
-
console.log(' Skipping embeddings examples.\n');
|
|
127
|
-
} else {
|
|
128
|
-
console.log(' Example 3a: Basic Azure embeddings (automatic tracking)');
|
|
129
|
-
|
|
130
|
-
const basicEmbedding = await azure.embeddings.create({
|
|
131
|
-
model: deployment || 'text-embedding-3-large',
|
|
132
|
-
input:
|
|
133
|
-
'Azure OpenAI provides enterprise-grade AI capabilities with enhanced security and compliance',
|
|
134
|
-
// No usageMetadata - still automatically tracked with Azure provider info!
|
|
135
|
-
});
|
|
136
|
-
|
|
137
|
-
console.log(' Model:', basicEmbedding.model);
|
|
138
|
-
console.log(' Usage:', basicEmbedding.usage);
|
|
139
|
-
console.log(' Embedding dimensions:', basicEmbedding.data[0]?.embedding.length);
|
|
140
|
-
console.log(' Azure embeddings automatically tracked without metadata\n');
|
|
141
|
-
|
|
142
|
-
// Example 4: Azure embeddings with metadata (all optional!)
|
|
143
|
-
console.log(' Example 3b: Azure embeddings with rich metadata');
|
|
144
|
-
|
|
145
|
-
const metadataEmbedding = await azure.embeddings.create({
|
|
146
|
-
model: deployment || 'text-embedding-3-large',
|
|
147
|
-
input:
|
|
148
|
-
'Enterprise document processing with Azure OpenAI embeddings and comprehensive tracking',
|
|
149
|
-
|
|
150
|
-
// All metadata fields are optional - perfect for Azure enterprise use cases!
|
|
151
|
-
// Note: Nested subscriber structure matches Python middleware for consistency
|
|
152
|
-
usageMetadata: {
|
|
153
|
-
subscriber: {
|
|
154
|
-
id: 'azure-embed-user-456',
|
|
155
|
-
email: 'embeddings@enterprise-corp.com',
|
|
156
|
-
credential: {
|
|
157
|
-
name: 'azure-embed-key',
|
|
158
|
-
value: 'embed456',
|
|
159
|
-
},
|
|
160
|
-
},
|
|
161
|
-
organizationId: 'enterprise-corp',
|
|
162
|
-
productId: 'azure-search-platform',
|
|
163
|
-
subscriptionId: 'sub-azure-premium-999',
|
|
164
|
-
taskType: 'enterprise-document-embedding',
|
|
165
|
-
traceId: `azure-embed-${Date.now()}`,
|
|
166
|
-
agent: 'azure-basic-embeddings-node',
|
|
167
|
-
},
|
|
168
|
-
});
|
|
169
|
-
|
|
170
|
-
console.log(' Model:', metadataEmbedding.model);
|
|
171
|
-
console.log(' Usage:', metadataEmbedding.usage);
|
|
172
|
-
console.log(' Embedding dimensions:', metadataEmbedding.data[0]?.embedding.length);
|
|
173
|
-
console.log(' Azure embeddings tracked with metadata for enterprise analytics\n');
|
|
174
|
-
}
|
|
175
|
-
|
|
176
|
-
// Summary
|
|
177
|
-
console.log(' Azure OpenAI Summary:');
|
|
178
|
-
console.log(' Azure OpenAI automatically detected and tracked');
|
|
179
|
-
console.log(' Model name resolution for accurate pricing');
|
|
180
|
-
console.log(' Provider metadata includes "Azure" for analytics');
|
|
181
|
-
if (isChatModel) {
|
|
182
|
-
console.log(' Chat completions work with or without metadata');
|
|
183
|
-
} else {
|
|
184
|
-
console.log(' Embeddings work with or without metadata');
|
|
185
|
-
}
|
|
186
|
-
console.log(' All metadata fields are optional');
|
|
187
|
-
console.log(' No type casting required - native TypeScript support');
|
|
188
|
-
console.log(' Enterprise-grade tracking with Azure compliance');
|
|
189
|
-
|
|
190
|
-
if (!isChatModel) {
|
|
191
|
-
console.log('\n To test Azure chat completions:');
|
|
192
|
-
console.log(' 1. Edit .env file');
|
|
193
|
-
console.log(' 2. Comment out embeddings section');
|
|
194
|
-
console.log(' 3. Uncomment chat section');
|
|
195
|
-
console.log(' 4. Run this example again');
|
|
196
|
-
} else {
|
|
197
|
-
console.log('\n To test Azure embeddings:');
|
|
198
|
-
console.log(' 1. Edit .env file');
|
|
199
|
-
console.log(' 2. Comment out chat section');
|
|
200
|
-
console.log(' 3. Uncomment embeddings section');
|
|
201
|
-
console.log(' 4. Run this example again');
|
|
202
|
-
}
|
|
203
|
-
}
|
|
204
|
-
|
|
205
|
-
// Run the example
|
|
206
|
-
azureBasicExample().catch(console.error);
|