@revenium/openai 1.0.13 → 1.0.15

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