@revenium/openai 1.0.13 → 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.
Files changed (228) hide show
  1. package/.env.example +10 -15
  2. package/CHANGELOG.md +44 -11
  3. package/CODE_OF_CONDUCT.md +57 -0
  4. package/CONTRIBUTING.md +38 -0
  5. package/README.md +104 -216
  6. package/SECURITY.md +34 -0
  7. package/dist/cjs/core/client/index.js +14 -0
  8. package/dist/cjs/core/client/index.js.map +1 -0
  9. package/dist/cjs/core/client/manager.js +109 -0
  10. package/dist/cjs/core/client/manager.js.map +1 -0
  11. package/dist/cjs/core/config/azure-config.js +5 -17
  12. package/dist/cjs/core/config/azure-config.js.map +1 -1
  13. package/dist/cjs/core/config/index.js +2 -2
  14. package/dist/cjs/core/config/index.js.map +1 -1
  15. package/dist/cjs/core/config/loader.js +34 -14
  16. package/dist/cjs/core/config/loader.js.map +1 -1
  17. package/dist/cjs/core/config/manager.js +11 -5
  18. package/dist/cjs/core/config/manager.js.map +1 -1
  19. package/dist/cjs/core/config/validator.js +3 -45
  20. package/dist/cjs/core/config/validator.js.map +1 -1
  21. package/dist/cjs/core/middleware/index.js +17 -0
  22. package/dist/cjs/core/middleware/index.js.map +1 -0
  23. package/dist/cjs/core/middleware/interfaces.js +361 -0
  24. package/dist/cjs/core/middleware/interfaces.js.map +1 -0
  25. package/dist/cjs/core/middleware/revenium-client.js +142 -0
  26. package/dist/cjs/core/middleware/revenium-client.js.map +1 -0
  27. package/dist/cjs/core/providers/detector.js +45 -23
  28. package/dist/cjs/core/providers/detector.js.map +1 -1
  29. package/dist/cjs/core/providers/index.js +2 -1
  30. package/dist/cjs/core/providers/index.js.map +1 -1
  31. package/dist/cjs/core/tracking/api-client.js +14 -13
  32. package/dist/cjs/core/tracking/api-client.js.map +1 -1
  33. package/dist/cjs/core/tracking/payload-builder.js +15 -25
  34. package/dist/cjs/core/tracking/payload-builder.js.map +1 -1
  35. package/dist/cjs/core/tracking/usage-tracker.js +22 -18
  36. package/dist/cjs/core/tracking/usage-tracker.js.map +1 -1
  37. package/dist/cjs/index.js +26 -195
  38. package/dist/cjs/index.js.map +1 -1
  39. package/dist/cjs/types/index.js +0 -8
  40. package/dist/cjs/types/index.js.map +1 -1
  41. package/dist/cjs/types/openai-augmentation.js +0 -49
  42. package/dist/cjs/types/openai-augmentation.js.map +1 -1
  43. package/dist/cjs/utils/constants.js +17 -20
  44. package/dist/cjs/utils/constants.js.map +1 -1
  45. package/dist/cjs/utils/error-handler.js +18 -14
  46. package/dist/cjs/utils/error-handler.js.map +1 -1
  47. package/dist/cjs/utils/metadata-builder.js +17 -16
  48. package/dist/cjs/utils/metadata-builder.js.map +1 -1
  49. package/dist/cjs/utils/provider-detection.js +25 -28
  50. package/dist/cjs/utils/provider-detection.js.map +1 -1
  51. package/dist/esm/core/client/index.js +6 -0
  52. package/dist/esm/core/client/index.js.map +1 -0
  53. package/dist/esm/core/client/manager.js +102 -0
  54. package/dist/esm/core/client/manager.js.map +1 -0
  55. package/dist/esm/core/config/azure-config.js +6 -18
  56. package/dist/esm/core/config/azure-config.js.map +1 -1
  57. package/dist/esm/core/config/index.js +5 -4
  58. package/dist/esm/core/config/index.js.map +1 -1
  59. package/dist/esm/core/config/loader.js +33 -13
  60. package/dist/esm/core/config/loader.js.map +1 -1
  61. package/dist/esm/core/config/manager.js +13 -7
  62. package/dist/esm/core/config/manager.js.map +1 -1
  63. package/dist/esm/core/config/validator.js +3 -44
  64. package/dist/esm/core/config/validator.js.map +1 -1
  65. package/dist/esm/core/middleware/index.js +8 -0
  66. package/dist/esm/core/middleware/index.js.map +1 -0
  67. package/dist/esm/core/middleware/interfaces.js +353 -0
  68. package/dist/esm/core/middleware/interfaces.js.map +1 -0
  69. package/dist/esm/core/middleware/revenium-client.js +105 -0
  70. package/dist/esm/core/middleware/revenium-client.js.map +1 -0
  71. package/dist/esm/core/providers/detector.js +43 -22
  72. package/dist/esm/core/providers/detector.js.map +1 -1
  73. package/dist/esm/core/providers/index.js +2 -2
  74. package/dist/esm/core/providers/index.js.map +1 -1
  75. package/dist/esm/core/tracking/api-client.js +13 -12
  76. package/dist/esm/core/tracking/api-client.js.map +1 -1
  77. package/dist/esm/core/tracking/payload-builder.js +16 -26
  78. package/dist/esm/core/tracking/payload-builder.js.map +1 -1
  79. package/dist/esm/core/tracking/usage-tracker.js +24 -20
  80. package/dist/esm/core/tracking/usage-tracker.js.map +1 -1
  81. package/dist/esm/index.js +9 -177
  82. package/dist/esm/index.js.map +1 -1
  83. package/dist/esm/types/index.js +2 -10
  84. package/dist/esm/types/index.js.map +1 -1
  85. package/dist/esm/types/openai-augmentation.js +0 -49
  86. package/dist/esm/types/openai-augmentation.js.map +1 -1
  87. package/dist/esm/utils/constants.js +16 -19
  88. package/dist/esm/utils/constants.js.map +1 -1
  89. package/dist/esm/utils/error-handler.js +19 -15
  90. package/dist/esm/utils/error-handler.js.map +1 -1
  91. package/dist/esm/utils/metadata-builder.js +17 -16
  92. package/dist/esm/utils/metadata-builder.js.map +1 -1
  93. package/dist/esm/utils/provider-detection.js +26 -29
  94. package/dist/esm/utils/provider-detection.js.map +1 -1
  95. package/dist/types/core/client/index.d.ts +6 -0
  96. package/dist/types/core/client/index.d.ts.map +1 -0
  97. package/dist/types/core/client/manager.d.ts +32 -0
  98. package/dist/types/core/client/manager.d.ts.map +1 -0
  99. package/dist/types/core/config/azure-config.d.ts +2 -2
  100. package/dist/types/core/config/azure-config.d.ts.map +1 -1
  101. package/dist/types/core/config/index.d.ts +4 -4
  102. package/dist/types/core/config/index.d.ts.map +1 -1
  103. package/dist/types/core/config/loader.d.ts +3 -1
  104. package/dist/types/core/config/loader.d.ts.map +1 -1
  105. package/dist/types/core/config/manager.d.ts +1 -1
  106. package/dist/types/core/config/manager.d.ts.map +1 -1
  107. package/dist/types/core/config/validator.d.ts +1 -12
  108. package/dist/types/core/config/validator.d.ts.map +1 -1
  109. package/dist/types/core/middleware/index.d.ts +8 -0
  110. package/dist/types/core/middleware/index.d.ts.map +1 -0
  111. package/dist/types/core/middleware/interfaces.d.ts +74 -0
  112. package/dist/types/core/middleware/interfaces.d.ts.map +1 -0
  113. package/dist/types/core/middleware/revenium-client.d.ts +58 -0
  114. package/dist/types/core/middleware/revenium-client.d.ts.map +1 -0
  115. package/dist/types/core/providers/detector.d.ts +9 -2
  116. package/dist/types/core/providers/detector.d.ts.map +1 -1
  117. package/dist/types/core/providers/index.d.ts +2 -2
  118. package/dist/types/core/providers/index.d.ts.map +1 -1
  119. package/dist/types/core/tracking/api-client.d.ts +1 -1
  120. package/dist/types/core/tracking/api-client.d.ts.map +1 -1
  121. package/dist/types/core/tracking/payload-builder.d.ts +3 -3
  122. package/dist/types/core/tracking/payload-builder.d.ts.map +1 -1
  123. package/dist/types/core/tracking/usage-tracker.d.ts +2 -2
  124. package/dist/types/core/tracking/usage-tracker.d.ts.map +1 -1
  125. package/dist/types/index.d.ts +11 -135
  126. package/dist/types/index.d.ts.map +1 -1
  127. package/dist/types/types/function-parameters.d.ts +2 -23
  128. package/dist/types/types/function-parameters.d.ts.map +1 -1
  129. package/dist/types/types/index.d.ts +11 -105
  130. package/dist/types/types/index.d.ts.map +1 -1
  131. package/dist/types/types/openai-augmentation.d.ts +4 -138
  132. package/dist/types/types/openai-augmentation.d.ts.map +1 -1
  133. package/dist/types/utils/constants.d.ts +7 -1
  134. package/dist/types/utils/constants.d.ts.map +1 -1
  135. package/dist/types/utils/error-handler.d.ts +2 -2
  136. package/dist/types/utils/error-handler.d.ts.map +1 -1
  137. package/dist/types/utils/metadata-builder.d.ts +2 -2
  138. package/dist/types/utils/metadata-builder.d.ts.map +1 -1
  139. package/dist/types/utils/provider-detection.d.ts +3 -3
  140. package/dist/types/utils/provider-detection.d.ts.map +1 -1
  141. package/examples/README.md +282 -198
  142. package/examples/azure/basic.ts +62 -0
  143. package/examples/azure/responses-basic.ts +45 -0
  144. package/examples/azure/responses-stream.ts +61 -0
  145. package/examples/azure/stream.ts +56 -0
  146. package/examples/getting_started.ts +31 -43
  147. package/examples/openai/basic.ts +45 -0
  148. package/examples/openai/metadata.ts +67 -0
  149. package/examples/openai/responses-basic.ts +44 -0
  150. package/examples/openai/responses-embed.ts +34 -0
  151. package/examples/openai/responses-streaming.ts +63 -0
  152. package/examples/openai/streaming.ts +59 -0
  153. package/package.json +20 -13
  154. package/dist/cjs/core/wrapper/index.js +0 -15
  155. package/dist/cjs/core/wrapper/index.js.map +0 -1
  156. package/dist/cjs/core/wrapper/instance-patcher.js +0 -202
  157. package/dist/cjs/core/wrapper/instance-patcher.js.map +0 -1
  158. package/dist/cjs/core/wrapper/request-handler.js +0 -317
  159. package/dist/cjs/core/wrapper/request-handler.js.map +0 -1
  160. package/dist/cjs/core/wrapper/stream-wrapper.js +0 -82
  161. package/dist/cjs/core/wrapper/stream-wrapper.js.map +0 -1
  162. package/dist/cjs/utils/azure-model-resolver.js +0 -211
  163. package/dist/cjs/utils/azure-model-resolver.js.map +0 -1
  164. package/dist/cjs/utils/request-handler-factory.js +0 -185
  165. package/dist/cjs/utils/request-handler-factory.js.map +0 -1
  166. package/dist/esm/core/wrapper/index.js +0 -9
  167. package/dist/esm/core/wrapper/index.js.map +0 -1
  168. package/dist/esm/core/wrapper/instance-patcher.js +0 -199
  169. package/dist/esm/core/wrapper/instance-patcher.js.map +0 -1
  170. package/dist/esm/core/wrapper/request-handler.js +0 -310
  171. package/dist/esm/core/wrapper/request-handler.js.map +0 -1
  172. package/dist/esm/core/wrapper/stream-wrapper.js +0 -79
  173. package/dist/esm/core/wrapper/stream-wrapper.js.map +0 -1
  174. package/dist/esm/utils/azure-model-resolver.js +0 -204
  175. package/dist/esm/utils/azure-model-resolver.js.map +0 -1
  176. package/dist/esm/utils/request-handler-factory.js +0 -146
  177. package/dist/esm/utils/request-handler-factory.js.map +0 -1
  178. package/dist/types/core/wrapper/index.d.ts +0 -8
  179. package/dist/types/core/wrapper/index.d.ts.map +0 -1
  180. package/dist/types/core/wrapper/instance-patcher.d.ts +0 -33
  181. package/dist/types/core/wrapper/instance-patcher.d.ts.map +0 -1
  182. package/dist/types/core/wrapper/request-handler.d.ts +0 -29
  183. package/dist/types/core/wrapper/request-handler.d.ts.map +0 -1
  184. package/dist/types/core/wrapper/stream-wrapper.d.ts +0 -13
  185. package/dist/types/core/wrapper/stream-wrapper.d.ts.map +0 -1
  186. package/dist/types/utils/azure-model-resolver.d.ts +0 -41
  187. package/dist/types/utils/azure-model-resolver.d.ts.map +0 -1
  188. package/dist/types/utils/request-handler-factory.d.ts +0 -81
  189. package/dist/types/utils/request-handler-factory.d.ts.map +0 -1
  190. package/examples/azure-basic.ts +0 -206
  191. package/examples/azure-responses-basic.ts +0 -233
  192. package/examples/azure-responses-streaming.ts +0 -255
  193. package/examples/azure-streaming.ts +0 -209
  194. package/examples/openai-basic.ts +0 -147
  195. package/examples/openai-function-calling.ts +0 -259
  196. package/examples/openai-responses-basic.ts +0 -212
  197. package/examples/openai-responses-streaming.ts +0 -232
  198. package/examples/openai-streaming.ts +0 -172
  199. package/examples/openai-vision.ts +0 -289
  200. package/src/core/config/azure-config.ts +0 -72
  201. package/src/core/config/index.ts +0 -23
  202. package/src/core/config/loader.ts +0 -66
  203. package/src/core/config/manager.ts +0 -95
  204. package/src/core/config/validator.ts +0 -89
  205. package/src/core/providers/detector.ts +0 -159
  206. package/src/core/providers/index.ts +0 -16
  207. package/src/core/tracking/api-client.ts +0 -78
  208. package/src/core/tracking/index.ts +0 -21
  209. package/src/core/tracking/payload-builder.ts +0 -137
  210. package/src/core/tracking/usage-tracker.ts +0 -189
  211. package/src/core/wrapper/index.ts +0 -9
  212. package/src/core/wrapper/instance-patcher.ts +0 -288
  213. package/src/core/wrapper/request-handler.ts +0 -423
  214. package/src/core/wrapper/stream-wrapper.ts +0 -100
  215. package/src/index.ts +0 -360
  216. package/src/types/function-parameters.ts +0 -251
  217. package/src/types/index.ts +0 -310
  218. package/src/types/openai-augmentation.ts +0 -232
  219. package/src/types/responses-api.ts +0 -308
  220. package/src/utils/azure-model-resolver.ts +0 -220
  221. package/src/utils/constants.ts +0 -21
  222. package/src/utils/error-handler.ts +0 -251
  223. package/src/utils/metadata-builder.ts +0 -228
  224. package/src/utils/provider-detection.ts +0 -257
  225. package/src/utils/request-handler-factory.ts +0 -285
  226. package/src/utils/stop-reason-mapper.ts +0 -78
  227. package/src/utils/type-guards.ts +0 -202
  228. 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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"}
@@ -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, // 0.0-1.0 scale
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);