openai 5.17.0 → 5.18.0
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/CHANGELOG.md +13 -0
- package/azure.d.mts +0 -5
- package/azure.d.mts.map +1 -1
- package/azure.d.ts +0 -5
- package/azure.d.ts.map +1 -1
- package/azure.js +1 -42
- package/azure.js.map +1 -1
- package/azure.mjs +1 -42
- package/azure.mjs.map +1 -1
- package/beta/realtime/websocket.d.mts +7 -1
- package/beta/realtime/websocket.d.mts.map +1 -1
- package/beta/realtime/websocket.d.ts +7 -1
- package/beta/realtime/websocket.d.ts.map +1 -1
- package/beta/realtime/websocket.js +17 -10
- package/beta/realtime/websocket.js.map +1 -1
- package/beta/realtime/websocket.mjs +17 -10
- package/beta/realtime/websocket.mjs.map +1 -1
- package/beta/realtime/ws.d.mts +6 -1
- package/beta/realtime/ws.d.mts.map +1 -1
- package/beta/realtime/ws.d.ts +6 -1
- package/beta/realtime/ws.d.ts.map +1 -1
- package/beta/realtime/ws.js +26 -18
- package/beta/realtime/ws.js.map +1 -1
- package/beta/realtime/ws.mjs +26 -18
- package/beta/realtime/ws.mjs.map +1 -1
- package/client.d.mts +12 -2
- package/client.d.mts.map +1 -1
- package/client.d.ts +12 -2
- package/client.d.ts.map +1 -1
- package/client.js +26 -3
- package/client.js.map +1 -1
- package/client.mjs +26 -3
- package/client.mjs.map +1 -1
- package/package.json +1 -1
- package/realtime/websocket.d.mts +7 -1
- package/realtime/websocket.d.mts.map +1 -1
- package/realtime/websocket.d.ts +7 -1
- package/realtime/websocket.d.ts.map +1 -1
- package/realtime/websocket.js +18 -10
- package/realtime/websocket.js.map +1 -1
- package/realtime/websocket.mjs +18 -10
- package/realtime/websocket.mjs.map +1 -1
- package/realtime/ws.d.mts +6 -1
- package/realtime/ws.d.mts.map +1 -1
- package/realtime/ws.d.ts +6 -1
- package/realtime/ws.d.ts.map +1 -1
- package/realtime/ws.js +27 -18
- package/realtime/ws.js.map +1 -1
- package/realtime/ws.mjs +27 -18
- package/realtime/ws.mjs.map +1 -1
- package/src/azure.ts +1 -50
- package/src/beta/realtime/websocket.ts +27 -12
- package/src/beta/realtime/ws.ts +38 -20
- package/src/client.ts +42 -6
- package/src/realtime/websocket.ts +28 -12
- package/src/realtime/ws.ts +39 -20
- package/src/version.ts +1 -1
- package/version.d.mts +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,18 @@
|
|
|
1
1
|
# Changelog
|
|
2
2
|
|
|
3
|
+
## 5.18.0 (2025-09-02)
|
|
4
|
+
|
|
5
|
+
Full Changelog: [v5.17.0...v5.18.0](https://github.com/openai/openai-node/compare/v5.17.0...v5.18.0)
|
|
6
|
+
|
|
7
|
+
### Features
|
|
8
|
+
|
|
9
|
+
* **client:** support api key provider functions ([#1587](https://github.com/openai/openai-node/issues/1587)) ([c3a92c7](https://github.com/openai/openai-node/commit/c3a92c7ee6f5f7c26c9297be04343326c9854bfd))
|
|
10
|
+
|
|
11
|
+
|
|
12
|
+
### Bug Fixes
|
|
13
|
+
|
|
14
|
+
* update non beta realtime websockets helpers ([265a42f](https://github.com/openai/openai-node/commit/265a42f9101b0479b7d8dcbf05d45ce29539a7f3))
|
|
15
|
+
|
|
3
16
|
## 5.17.0 (2025-09-02)
|
|
4
17
|
|
|
5
18
|
Full Changelog: [v5.16.0...v5.17.0](https://github.com/openai/openai-node/compare/v5.16.0...v5.17.0)
|
package/azure.d.mts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { RequestInit } from "./internal/builtin-types.mjs";
|
|
2
2
|
import { FinalRequestOptions } from "./internal/request-options.mjs";
|
|
3
3
|
import { ClientOptions, OpenAI } from "./client.mjs";
|
|
4
|
-
import { NullableHeaders } from "./internal/headers.mjs";
|
|
5
4
|
/** API Client for interfacing with the Azure OpenAI API. */
|
|
6
5
|
export interface AzureClientOptions extends ClientOptions {
|
|
7
6
|
/**
|
|
@@ -29,7 +28,6 @@ export interface AzureClientOptions extends ClientOptions {
|
|
|
29
28
|
}
|
|
30
29
|
/** API Client for interfacing with the Azure OpenAI API. */
|
|
31
30
|
export declare class AzureOpenAI extends OpenAI {
|
|
32
|
-
private _azureADTokenProvider;
|
|
33
31
|
deploymentName: string | undefined;
|
|
34
32
|
apiVersion: string;
|
|
35
33
|
/**
|
|
@@ -59,8 +57,5 @@ export declare class AzureOpenAI extends OpenAI {
|
|
|
59
57
|
url: string;
|
|
60
58
|
timeout: number;
|
|
61
59
|
}>;
|
|
62
|
-
_getAzureADToken(): Promise<string | undefined>;
|
|
63
|
-
protected authHeaders(opts: FinalRequestOptions): Promise<NullableHeaders | undefined>;
|
|
64
|
-
protected prepareOptions(opts: FinalRequestOptions): Promise<void>;
|
|
65
60
|
}
|
|
66
61
|
//# sourceMappingURL=azure.d.mts.map
|
package/azure.d.mts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure.d.mts","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,WAAW,EAAE;OAEpB,EAAE,mBAAmB,EAAE;OAEvB,EAAE,aAAa,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"azure.d.mts","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,WAAW,EAAE;OAEpB,EAAE,mBAAmB,EAAE;OAEvB,EAAE,aAAa,EAAE,MAAM,EAAE;AAEhC,4DAA4D;AAC5D,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CAC5D;AAED,4DAA4D;AAC5D,qBAAa,WAAY,SAAQ,MAAM;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,MAAM,CAAM;IAExB;;;;;;;;;;;;;;;;OAgBG;gBACS,EACV,OAAoC,EACpC,MAAwC,EACxC,UAA0C,EAC1C,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,GAAG,IAAI,EACR,GAAE,kBAAuB;IAsDX,YAAY,CACzB,OAAO,EAAE,mBAAmB,EAC5B,KAAK,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAClC,OAAO,CAAC;QAAE,GAAG,EAAE,WAAW,GAAG;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAYtF"}
|
package/azure.d.ts
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import type { RequestInit } from "./internal/builtin-types.js";
|
|
2
2
|
import { FinalRequestOptions } from "./internal/request-options.js";
|
|
3
3
|
import { ClientOptions, OpenAI } from "./client.js";
|
|
4
|
-
import { NullableHeaders } from "./internal/headers.js";
|
|
5
4
|
/** API Client for interfacing with the Azure OpenAI API. */
|
|
6
5
|
export interface AzureClientOptions extends ClientOptions {
|
|
7
6
|
/**
|
|
@@ -29,7 +28,6 @@ export interface AzureClientOptions extends ClientOptions {
|
|
|
29
28
|
}
|
|
30
29
|
/** API Client for interfacing with the Azure OpenAI API. */
|
|
31
30
|
export declare class AzureOpenAI extends OpenAI {
|
|
32
|
-
private _azureADTokenProvider;
|
|
33
31
|
deploymentName: string | undefined;
|
|
34
32
|
apiVersion: string;
|
|
35
33
|
/**
|
|
@@ -59,8 +57,5 @@ export declare class AzureOpenAI extends OpenAI {
|
|
|
59
57
|
url: string;
|
|
60
58
|
timeout: number;
|
|
61
59
|
}>;
|
|
62
|
-
_getAzureADToken(): Promise<string | undefined>;
|
|
63
|
-
protected authHeaders(opts: FinalRequestOptions): Promise<NullableHeaders | undefined>;
|
|
64
|
-
protected prepareOptions(opts: FinalRequestOptions): Promise<void>;
|
|
65
60
|
}
|
|
66
61
|
//# sourceMappingURL=azure.d.ts.map
|
package/azure.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure.d.ts","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,WAAW,EAAE;OAEpB,EAAE,mBAAmB,EAAE;OAEvB,EAAE,aAAa,EAAE,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"azure.d.ts","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,WAAW,EAAE;OAEpB,EAAE,mBAAmB,EAAE;OAEvB,EAAE,aAAa,EAAE,MAAM,EAAE;AAEhC,4DAA4D;AAC5D,MAAM,WAAW,kBAAmB,SAAQ,aAAa;IACvD;;OAEG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,QAAQ,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE9B;;;OAGG;IACH,UAAU,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAEhC;;OAEG;IACH,MAAM,CAAC,EAAE,MAAM,GAAG,SAAS,CAAC;IAE5B;;;OAGG;IACH,oBAAoB,CAAC,EAAE,CAAC,MAAM,OAAO,CAAC,MAAM,CAAC,CAAC,GAAG,SAAS,CAAC;CAC5D;AAED,4DAA4D;AAC5D,qBAAa,WAAY,SAAQ,MAAM;IACrC,cAAc,EAAE,MAAM,GAAG,SAAS,CAAC;IACnC,UAAU,EAAE,MAAM,CAAM;IAExB;;;;;;;;;;;;;;;;OAgBG;gBACS,EACV,OAAoC,EACpC,MAAwC,EACxC,UAA0C,EAC1C,QAAQ,EACR,UAAU,EACV,oBAAoB,EACpB,uBAAuB,EACvB,GAAG,IAAI,EACR,GAAE,kBAAuB;IAsDX,YAAY,CACzB,OAAO,EAAE,mBAAmB,EAC5B,KAAK,GAAE;QAAE,UAAU,CAAC,EAAE,MAAM,CAAA;KAAO,GAClC,OAAO,CAAC;QAAE,GAAG,EAAE,WAAW,GAAG;YAAE,OAAO,EAAE,OAAO,CAAA;SAAE,CAAC;QAAC,GAAG,EAAE,MAAM,CAAC;QAAC,OAAO,EAAE,MAAM,CAAA;KAAE,CAAC;CAYtF"}
|
package/azure.js
CHANGED
|
@@ -5,7 +5,6 @@ const tslib_1 = require("./internal/tslib.js");
|
|
|
5
5
|
const Errors = tslib_1.__importStar(require("./error.js"));
|
|
6
6
|
const utils_1 = require("./internal/utils.js");
|
|
7
7
|
const client_1 = require("./client.js");
|
|
8
|
-
const headers_1 = require("./internal/headers.js");
|
|
9
8
|
/** API Client for interfacing with the Azure OpenAI API. */
|
|
10
9
|
class AzureOpenAI extends client_1.OpenAI {
|
|
11
10
|
/**
|
|
@@ -38,8 +37,6 @@ class AzureOpenAI extends client_1.OpenAI {
|
|
|
38
37
|
if (azureADTokenProvider && apiKey) {
|
|
39
38
|
throw new Errors.OpenAIError('The `apiKey` and `azureADTokenProvider` arguments are mutually exclusive; only one can be passed at a time.');
|
|
40
39
|
}
|
|
41
|
-
// define a sentinel value to avoid any typing issues
|
|
42
|
-
apiKey ?? (apiKey = API_KEY_SENTINEL);
|
|
43
40
|
opts.defaultQuery = { ...opts.defaultQuery, 'api-version': apiVersion };
|
|
44
41
|
if (!baseURL) {
|
|
45
42
|
if (!endpoint) {
|
|
@@ -56,13 +53,12 @@ class AzureOpenAI extends client_1.OpenAI {
|
|
|
56
53
|
}
|
|
57
54
|
}
|
|
58
55
|
super({
|
|
59
|
-
apiKey,
|
|
56
|
+
apiKey: azureADTokenProvider ?? apiKey,
|
|
60
57
|
baseURL,
|
|
61
58
|
...opts,
|
|
62
59
|
...(dangerouslyAllowBrowser !== undefined ? { dangerouslyAllowBrowser } : {}),
|
|
63
60
|
});
|
|
64
61
|
this.apiVersion = '';
|
|
65
|
-
this._azureADTokenProvider = azureADTokenProvider;
|
|
66
62
|
this.apiVersion = apiVersion;
|
|
67
63
|
this.deploymentName = deployment;
|
|
68
64
|
}
|
|
@@ -78,42 +74,6 @@ class AzureOpenAI extends client_1.OpenAI {
|
|
|
78
74
|
}
|
|
79
75
|
return super.buildRequest(options, props);
|
|
80
76
|
}
|
|
81
|
-
async _getAzureADToken() {
|
|
82
|
-
if (typeof this._azureADTokenProvider === 'function') {
|
|
83
|
-
const token = await this._azureADTokenProvider();
|
|
84
|
-
if (!token || typeof token !== 'string') {
|
|
85
|
-
throw new Errors.OpenAIError(`Expected 'azureADTokenProvider' argument to return a string but it returned ${token}`);
|
|
86
|
-
}
|
|
87
|
-
return token;
|
|
88
|
-
}
|
|
89
|
-
return undefined;
|
|
90
|
-
}
|
|
91
|
-
async authHeaders(opts) {
|
|
92
|
-
return;
|
|
93
|
-
}
|
|
94
|
-
async prepareOptions(opts) {
|
|
95
|
-
opts.headers = (0, headers_1.buildHeaders)([opts.headers]);
|
|
96
|
-
/**
|
|
97
|
-
* The user should provide a bearer token provider if they want
|
|
98
|
-
* to use Azure AD authentication. The user shouldn't set the
|
|
99
|
-
* Authorization header manually because the header is overwritten
|
|
100
|
-
* with the Azure AD token if a bearer token provider is provided.
|
|
101
|
-
*/
|
|
102
|
-
if (opts.headers.values.get('Authorization') || opts.headers.values.get('api-key')) {
|
|
103
|
-
return super.prepareOptions(opts);
|
|
104
|
-
}
|
|
105
|
-
const token = await this._getAzureADToken();
|
|
106
|
-
if (token) {
|
|
107
|
-
opts.headers.values.set('Authorization', `Bearer ${token}`);
|
|
108
|
-
}
|
|
109
|
-
else if (this.apiKey !== API_KEY_SENTINEL) {
|
|
110
|
-
opts.headers.values.set('api-key', this.apiKey);
|
|
111
|
-
}
|
|
112
|
-
else {
|
|
113
|
-
throw new Errors.OpenAIError('Unable to handle auth');
|
|
114
|
-
}
|
|
115
|
-
return super.prepareOptions(opts);
|
|
116
|
-
}
|
|
117
77
|
}
|
|
118
78
|
exports.AzureOpenAI = AzureOpenAI;
|
|
119
79
|
const _deployments_endpoints = new Set([
|
|
@@ -127,5 +87,4 @@ const _deployments_endpoints = new Set([
|
|
|
127
87
|
'/batches',
|
|
128
88
|
'/images/edits',
|
|
129
89
|
]);
|
|
130
|
-
const API_KEY_SENTINEL = '<Missing Key>';
|
|
131
90
|
//# sourceMappingURL=azure.js.map
|
package/azure.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure.js","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":";;;;AACA,2DAAkC;AAElC,+CAAkD;AAClD,wCAAiD;
|
|
1
|
+
{"version":3,"file":"azure.js","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":"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"}
|
package/azure.mjs
CHANGED
|
@@ -1,7 +1,6 @@
|
|
|
1
1
|
import * as Errors from "./error.mjs";
|
|
2
2
|
import { isObj, readEnv } from "./internal/utils.mjs";
|
|
3
3
|
import { OpenAI } from "./client.mjs";
|
|
4
|
-
import { buildHeaders } from "./internal/headers.mjs";
|
|
5
4
|
/** API Client for interfacing with the Azure OpenAI API. */
|
|
6
5
|
export class AzureOpenAI extends OpenAI {
|
|
7
6
|
/**
|
|
@@ -34,8 +33,6 @@ export class AzureOpenAI extends OpenAI {
|
|
|
34
33
|
if (azureADTokenProvider && apiKey) {
|
|
35
34
|
throw new Errors.OpenAIError('The `apiKey` and `azureADTokenProvider` arguments are mutually exclusive; only one can be passed at a time.');
|
|
36
35
|
}
|
|
37
|
-
// define a sentinel value to avoid any typing issues
|
|
38
|
-
apiKey ?? (apiKey = API_KEY_SENTINEL);
|
|
39
36
|
opts.defaultQuery = { ...opts.defaultQuery, 'api-version': apiVersion };
|
|
40
37
|
if (!baseURL) {
|
|
41
38
|
if (!endpoint) {
|
|
@@ -52,13 +49,12 @@ export class AzureOpenAI extends OpenAI {
|
|
|
52
49
|
}
|
|
53
50
|
}
|
|
54
51
|
super({
|
|
55
|
-
apiKey,
|
|
52
|
+
apiKey: azureADTokenProvider ?? apiKey,
|
|
56
53
|
baseURL,
|
|
57
54
|
...opts,
|
|
58
55
|
...(dangerouslyAllowBrowser !== undefined ? { dangerouslyAllowBrowser } : {}),
|
|
59
56
|
});
|
|
60
57
|
this.apiVersion = '';
|
|
61
|
-
this._azureADTokenProvider = azureADTokenProvider;
|
|
62
58
|
this.apiVersion = apiVersion;
|
|
63
59
|
this.deploymentName = deployment;
|
|
64
60
|
}
|
|
@@ -74,42 +70,6 @@ export class AzureOpenAI extends OpenAI {
|
|
|
74
70
|
}
|
|
75
71
|
return super.buildRequest(options, props);
|
|
76
72
|
}
|
|
77
|
-
async _getAzureADToken() {
|
|
78
|
-
if (typeof this._azureADTokenProvider === 'function') {
|
|
79
|
-
const token = await this._azureADTokenProvider();
|
|
80
|
-
if (!token || typeof token !== 'string') {
|
|
81
|
-
throw new Errors.OpenAIError(`Expected 'azureADTokenProvider' argument to return a string but it returned ${token}`);
|
|
82
|
-
}
|
|
83
|
-
return token;
|
|
84
|
-
}
|
|
85
|
-
return undefined;
|
|
86
|
-
}
|
|
87
|
-
async authHeaders(opts) {
|
|
88
|
-
return;
|
|
89
|
-
}
|
|
90
|
-
async prepareOptions(opts) {
|
|
91
|
-
opts.headers = buildHeaders([opts.headers]);
|
|
92
|
-
/**
|
|
93
|
-
* The user should provide a bearer token provider if they want
|
|
94
|
-
* to use Azure AD authentication. The user shouldn't set the
|
|
95
|
-
* Authorization header manually because the header is overwritten
|
|
96
|
-
* with the Azure AD token if a bearer token provider is provided.
|
|
97
|
-
*/
|
|
98
|
-
if (opts.headers.values.get('Authorization') || opts.headers.values.get('api-key')) {
|
|
99
|
-
return super.prepareOptions(opts);
|
|
100
|
-
}
|
|
101
|
-
const token = await this._getAzureADToken();
|
|
102
|
-
if (token) {
|
|
103
|
-
opts.headers.values.set('Authorization', `Bearer ${token}`);
|
|
104
|
-
}
|
|
105
|
-
else if (this.apiKey !== API_KEY_SENTINEL) {
|
|
106
|
-
opts.headers.values.set('api-key', this.apiKey);
|
|
107
|
-
}
|
|
108
|
-
else {
|
|
109
|
-
throw new Errors.OpenAIError('Unable to handle auth');
|
|
110
|
-
}
|
|
111
|
-
return super.prepareOptions(opts);
|
|
112
|
-
}
|
|
113
73
|
}
|
|
114
74
|
const _deployments_endpoints = new Set([
|
|
115
75
|
'/completions',
|
|
@@ -122,5 +82,4 @@ const _deployments_endpoints = new Set([
|
|
|
122
82
|
'/batches',
|
|
123
83
|
'/images/edits',
|
|
124
84
|
]);
|
|
125
|
-
const API_KEY_SENTINEL = '<Missing Key>';
|
|
126
85
|
//# sourceMappingURL=azure.mjs.map
|
package/azure.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"azure.mjs","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":"OACO,KAAK,MAAM;OAEX,EAAE,KAAK,EAAE,OAAO,EAAE;OAClB,EAAiB,MAAM,EAAE;
|
|
1
|
+
{"version":3,"file":"azure.mjs","sourceRoot":"","sources":["src/azure.ts"],"names":[],"mappings":"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"}
|
|
@@ -15,8 +15,14 @@ export declare class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
15
15
|
* @internal
|
|
16
16
|
*/
|
|
17
17
|
onURL?: (url: URL) => void;
|
|
18
|
+
/** Indicates the token was resolved by the factory just before connecting. @internal */
|
|
19
|
+
__resolvedApiKey?: boolean;
|
|
18
20
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
19
|
-
static
|
|
21
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
22
|
+
model: string;
|
|
23
|
+
dangerouslyAllowBrowser?: boolean;
|
|
24
|
+
}): Promise<OpenAIRealtimeWebSocket>;
|
|
25
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, options?: {
|
|
20
26
|
deploymentName?: string;
|
|
21
27
|
dangerouslyAllowBrowser?: boolean;
|
|
22
28
|
}): Promise<OpenAIRealtimeWebSocket>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.mts","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;OAEvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAO3D,KAAK,UAAU,GACb,OAAO,UAAU,SAAS,CACxB;IACE,SAAS,EAAE,MAAM,EAAE,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;CAChE,CACF,GAEC,YAAY,CAAC,EAAE,CAAC,GAChB,GAAG,CAAC;AAER,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;gBAGjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5B,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.d.mts","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;OAEvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAO3D,KAAK,UAAU,GACb,OAAO,UAAU,SAAS,CACxB;IACE,SAAS,EAAE,MAAM,EAAE,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;CAChE,CACF,GAEC,YAAY,CAAC,EAAE,CAAC,GAChB,GAAG,CAAC;AAER,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;gBAGjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3B,wFAAwF;QACxF,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAuEhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1D,OAAO,CAAC,uBAAuB,CAAC;WAItB,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC3E,OAAO,CAAC,uBAAuB,CAAC;IAyBnC,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
|
@@ -15,8 +15,14 @@ export declare class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
15
15
|
* @internal
|
|
16
16
|
*/
|
|
17
17
|
onURL?: (url: URL) => void;
|
|
18
|
+
/** Indicates the token was resolved by the factory just before connecting. @internal */
|
|
19
|
+
__resolvedApiKey?: boolean;
|
|
18
20
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
19
|
-
static
|
|
21
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
22
|
+
model: string;
|
|
23
|
+
dangerouslyAllowBrowser?: boolean;
|
|
24
|
+
}): Promise<OpenAIRealtimeWebSocket>;
|
|
25
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, options?: {
|
|
20
26
|
deploymentName?: string;
|
|
21
27
|
dangerouslyAllowBrowser?: boolean;
|
|
22
28
|
}): Promise<OpenAIRealtimeWebSocket>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;OAEvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAO3D,KAAK,UAAU,GACb,OAAO,UAAU,SAAS,CACxB;IACE,SAAS,EAAE,MAAM,EAAE,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;CAChE,CACF,GAEC,YAAY,CAAC,EAAE,CAAC,GAChB,GAAG,CAAC;AAER,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;gBAGjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;KAC5B,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;
|
|
1
|
+
{"version":3,"file":"websocket.d.ts","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":"OAAO,EAAE,WAAW,EAAE,MAAM,EAAE;OAEvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAO3D,KAAK,UAAU,GACb,OAAO,UAAU,SAAS,CACxB;IACE,SAAS,EAAE,MAAM,EAAE,SAAS,QAAQ,MAAM,GAAG,IAAI,EAAE,GAAG,KAAK,GAAG,CAAC;CAChE,CACF,GAEC,YAAY,CAAC,EAAE,CAAC,GAChB,GAAG,CAAC;AAER,qBAAa,uBAAwB,SAAQ,qBAAqB;IAChE,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,UAAU,CAAC;gBAGjB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,uBAAuB,CAAC,EAAE,OAAO,CAAC;QAClC;;;WAGG;QACH,KAAK,CAAC,EAAE,CAAC,GAAG,EAAE,GAAG,KAAK,IAAI,CAAC;QAC3B,wFAAwF;QACxF,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC5B,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAuEhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAE,GAC1D,OAAO,CAAC,uBAAuB,CAAC;WAItB,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,OAAO,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,uBAAuB,CAAC,EAAE,OAAO,CAAA;KAAO,GAC3E,OAAO,CAAC,uBAAuB,CAAC;IAyBnC,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
|
@@ -8,13 +8,21 @@ const detect_platform_1 = require("../../internal/detect-platform.js");
|
|
|
8
8
|
class OpenAIRealtimeWebSocket extends internal_base_1.OpenAIRealtimeEmitter {
|
|
9
9
|
constructor(props, client) {
|
|
10
10
|
super();
|
|
11
|
+
const hasProvider = typeof client?._options?.apiKey === 'function';
|
|
11
12
|
const dangerouslyAllowBrowser = props.dangerouslyAllowBrowser ??
|
|
12
13
|
client?._options?.dangerouslyAllowBrowser ??
|
|
13
|
-
(client?.apiKey
|
|
14
|
+
(client?.apiKey?.startsWith('ek_') ? true : null);
|
|
14
15
|
if (!dangerouslyAllowBrowser && (0, detect_platform_1.isRunningInBrowser)()) {
|
|
15
16
|
throw new error_1.OpenAIError("It looks like you're running in a browser-like environment.\n\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\n\nYou can avoid this error by creating an ephemeral session token:\nhttps://platform.openai.com/docs/api-reference/realtime-sessions\n");
|
|
16
17
|
}
|
|
17
18
|
client ?? (client = new index_1.OpenAI({ dangerouslyAllowBrowser }));
|
|
19
|
+
if (hasProvider && !props?.__resolvedApiKey) {
|
|
20
|
+
throw new Error([
|
|
21
|
+
'Cannot open Realtime WebSocket with a function-based apiKey.',
|
|
22
|
+
'Use the .create() method so that the key is resolved before connecting:',
|
|
23
|
+
'await OpenAIRealtimeWebSocket.create(client, { model })',
|
|
24
|
+
].join('\n'));
|
|
25
|
+
}
|
|
18
26
|
this.url = (0, internal_base_1.buildRealtimeURL)(client, props.model);
|
|
19
27
|
props.onURL?.(this.url);
|
|
20
28
|
// @ts-ignore
|
|
@@ -56,19 +64,17 @@ class OpenAIRealtimeWebSocket extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
56
64
|
}
|
|
57
65
|
}
|
|
58
66
|
}
|
|
67
|
+
static async create(client, props) {
|
|
68
|
+
return new OpenAIRealtimeWebSocket({ ...props, __resolvedApiKey: await client._callApiKey() }, client);
|
|
69
|
+
}
|
|
59
70
|
static async azure(client, options = {}) {
|
|
60
|
-
const
|
|
71
|
+
const isApiKeyProvider = await client._callApiKey();
|
|
61
72
|
function onURL(url) {
|
|
62
|
-
if (
|
|
63
|
-
url.searchParams.set('
|
|
73
|
+
if (isApiKeyProvider) {
|
|
74
|
+
url.searchParams.set('Authorization', `Bearer ${client.apiKey}`);
|
|
64
75
|
}
|
|
65
76
|
else {
|
|
66
|
-
|
|
67
|
-
url.searchParams.set('Authorization', `Bearer ${token}`);
|
|
68
|
-
}
|
|
69
|
-
else {
|
|
70
|
-
throw new Error('AzureOpenAI is not instantiated correctly. No API key or token provided.');
|
|
71
|
-
}
|
|
77
|
+
url.searchParams.set('api-key', client.apiKey);
|
|
72
78
|
}
|
|
73
79
|
}
|
|
74
80
|
const deploymentName = options.deploymentName ?? client.deploymentName;
|
|
@@ -80,6 +86,7 @@ class OpenAIRealtimeWebSocket extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
80
86
|
model: deploymentName,
|
|
81
87
|
onURL,
|
|
82
88
|
...(dangerouslyAllowBrowser ? { dangerouslyAllowBrowser } : {}),
|
|
89
|
+
__resolvedApiKey: isApiKeyProvider,
|
|
83
90
|
}, client);
|
|
84
91
|
}
|
|
85
92
|
send(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":";;;AAAA,0CAAkD;AAClD,0CAA0C;AAE1C,sDAAmF;AACnF,uEAAoE;AAgBpE,MAAa,uBAAwB,SAAQ,qCAAqB;IAIhE,YACE,
|
|
1
|
+
{"version":3,"file":"websocket.js","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":"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"}
|
|
@@ -5,13 +5,21 @@ import { isRunningInBrowser } from "../../internal/detect-platform.mjs";
|
|
|
5
5
|
export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
6
6
|
constructor(props, client) {
|
|
7
7
|
super();
|
|
8
|
+
const hasProvider = typeof client?._options?.apiKey === 'function';
|
|
8
9
|
const dangerouslyAllowBrowser = props.dangerouslyAllowBrowser ??
|
|
9
10
|
client?._options?.dangerouslyAllowBrowser ??
|
|
10
|
-
(client?.apiKey
|
|
11
|
+
(client?.apiKey?.startsWith('ek_') ? true : null);
|
|
11
12
|
if (!dangerouslyAllowBrowser && isRunningInBrowser()) {
|
|
12
13
|
throw new OpenAIError("It looks like you're running in a browser-like environment.\n\nThis is disabled by default, as it risks exposing your secret API credentials to attackers.\n\nYou can avoid this error by creating an ephemeral session token:\nhttps://platform.openai.com/docs/api-reference/realtime-sessions\n");
|
|
13
14
|
}
|
|
14
15
|
client ?? (client = new OpenAI({ dangerouslyAllowBrowser }));
|
|
16
|
+
if (hasProvider && !props?.__resolvedApiKey) {
|
|
17
|
+
throw new Error([
|
|
18
|
+
'Cannot open Realtime WebSocket with a function-based apiKey.',
|
|
19
|
+
'Use the .create() method so that the key is resolved before connecting:',
|
|
20
|
+
'await OpenAIRealtimeWebSocket.create(client, { model })',
|
|
21
|
+
].join('\n'));
|
|
22
|
+
}
|
|
15
23
|
this.url = buildRealtimeURL(client, props.model);
|
|
16
24
|
props.onURL?.(this.url);
|
|
17
25
|
// @ts-ignore
|
|
@@ -53,19 +61,17 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
53
61
|
}
|
|
54
62
|
}
|
|
55
63
|
}
|
|
64
|
+
static async create(client, props) {
|
|
65
|
+
return new OpenAIRealtimeWebSocket({ ...props, __resolvedApiKey: await client._callApiKey() }, client);
|
|
66
|
+
}
|
|
56
67
|
static async azure(client, options = {}) {
|
|
57
|
-
const
|
|
68
|
+
const isApiKeyProvider = await client._callApiKey();
|
|
58
69
|
function onURL(url) {
|
|
59
|
-
if (
|
|
60
|
-
url.searchParams.set('
|
|
70
|
+
if (isApiKeyProvider) {
|
|
71
|
+
url.searchParams.set('Authorization', `Bearer ${client.apiKey}`);
|
|
61
72
|
}
|
|
62
73
|
else {
|
|
63
|
-
|
|
64
|
-
url.searchParams.set('Authorization', `Bearer ${token}`);
|
|
65
|
-
}
|
|
66
|
-
else {
|
|
67
|
-
throw new Error('AzureOpenAI is not instantiated correctly. No API key or token provided.');
|
|
68
|
-
}
|
|
74
|
+
url.searchParams.set('api-key', client.apiKey);
|
|
69
75
|
}
|
|
70
76
|
}
|
|
71
77
|
const deploymentName = options.deploymentName ?? client.deploymentName;
|
|
@@ -77,6 +83,7 @@ export class OpenAIRealtimeWebSocket extends OpenAIRealtimeEmitter {
|
|
|
77
83
|
model: deploymentName,
|
|
78
84
|
onURL,
|
|
79
85
|
...(dangerouslyAllowBrowser ? { dangerouslyAllowBrowser } : {}),
|
|
86
|
+
__resolvedApiKey: isApiKeyProvider,
|
|
80
87
|
}, client);
|
|
81
88
|
}
|
|
82
89
|
send(event) {
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"websocket.mjs","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":"OAAO,EAAe,MAAM,EAAE;OACvB,EAAE,WAAW,EAAE;OAEf,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,OAAO,EAAE;OACpD,EAAE,kBAAkB,EAAE;AAgB7B,MAAM,OAAO,uBAAwB,SAAQ,qBAAqB;IAIhE,YACE,
|
|
1
|
+
{"version":3,"file":"websocket.mjs","sourceRoot":"","sources":["../../src/beta/realtime/websocket.ts"],"names":[],"mappings":"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"}
|
package/beta/realtime/ws.d.mts
CHANGED
|
@@ -8,8 +8,13 @@ export declare class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
|
|
|
8
8
|
constructor(props: {
|
|
9
9
|
model: string;
|
|
10
10
|
options?: WS.ClientOptions | undefined;
|
|
11
|
+
/** @internal */ __resolvedApiKey?: boolean;
|
|
11
12
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
12
|
-
static
|
|
13
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
14
|
+
model: string;
|
|
15
|
+
options?: WS.ClientOptions | undefined;
|
|
16
|
+
}): Promise<OpenAIRealtimeWS>;
|
|
17
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, props?: {
|
|
13
18
|
deploymentName?: string;
|
|
14
19
|
options?: WS.ClientOptions | undefined;
|
|
15
20
|
}): Promise<OpenAIRealtimeWS>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.mts","sourceRoot":"","sources":["../../src/beta/realtime/ws.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,WAAW,EAAE,MAAM,EAAE;OACvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAE3D,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;gBAGnB,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"ws.d.mts","sourceRoot":"","sources":["../../src/beta/realtime/ws.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,WAAW,EAAE,MAAM,EAAE;OACvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAE3D,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;gBAGnB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC;QACvC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC7C,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAmDhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAE,GAC/D,OAAO,CAAC,gBAAgB,CAAC;WAIf,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,KAAK,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAO,GAC9E,OAAO,CAAC,gBAAgB,CAAC;IAsB5B,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
package/beta/realtime/ws.d.ts
CHANGED
|
@@ -8,8 +8,13 @@ export declare class OpenAIRealtimeWS extends OpenAIRealtimeEmitter {
|
|
|
8
8
|
constructor(props: {
|
|
9
9
|
model: string;
|
|
10
10
|
options?: WS.ClientOptions | undefined;
|
|
11
|
+
/** @internal */ __resolvedApiKey?: boolean;
|
|
11
12
|
}, client?: Pick<OpenAI, 'apiKey' | 'baseURL'>);
|
|
12
|
-
static
|
|
13
|
+
static create(client: Pick<OpenAI, 'apiKey' | 'baseURL' | '_callApiKey'>, props: {
|
|
14
|
+
model: string;
|
|
15
|
+
options?: WS.ClientOptions | undefined;
|
|
16
|
+
}): Promise<OpenAIRealtimeWS>;
|
|
17
|
+
static azure(client: Pick<AzureOpenAI, '_callApiKey' | 'apiVersion' | 'apiKey' | 'baseURL' | 'deploymentName'>, props?: {
|
|
13
18
|
deploymentName?: string;
|
|
14
19
|
options?: WS.ClientOptions | undefined;
|
|
15
20
|
}): Promise<OpenAIRealtimeWS>;
|
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/beta/realtime/ws.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,WAAW,EAAE,MAAM,EAAE;OACvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAE3D,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;gBAGnB,KAAK,EAAE;
|
|
1
|
+
{"version":3,"file":"ws.d.ts","sourceRoot":"","sources":["../../src/beta/realtime/ws.ts"],"names":[],"mappings":"OAAO,KAAK,EAAE,MAAM,IAAI;OACjB,EAAE,WAAW,EAAE,MAAM,EAAE;OACvB,KAAK,EAAE,mBAAmB,EAAuB;OACjD,EAAE,qBAAqB,EAA6B;AAE3D,qBAAa,gBAAiB,SAAQ,qBAAqB;IACzD,GAAG,EAAE,GAAG,CAAC;IACT,MAAM,EAAE,EAAE,CAAC,SAAS,CAAC;gBAGnB,KAAK,EAAE;QACL,KAAK,EAAE,MAAM,CAAC;QACd,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAC;QACvC,gBAAgB,CAAC,gBAAgB,CAAC,EAAE,OAAO,CAAC;KAC7C,EACD,MAAM,CAAC,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,CAAC;WAmDhC,MAAM,CACjB,MAAM,EAAE,IAAI,CAAC,MAAM,EAAE,QAAQ,GAAG,SAAS,GAAG,aAAa,CAAC,EAC1D,KAAK,EAAE;QAAE,KAAK,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAE,GAC/D,OAAO,CAAC,gBAAgB,CAAC;WAIf,KAAK,CAChB,MAAM,EAAE,IAAI,CAAC,WAAW,EAAE,aAAa,GAAG,YAAY,GAAG,QAAQ,GAAG,SAAS,GAAG,gBAAgB,CAAC,EACjG,KAAK,GAAE;QAAE,cAAc,CAAC,EAAE,MAAM,CAAC;QAAC,OAAO,CAAC,EAAE,EAAE,CAAC,aAAa,GAAG,SAAS,CAAA;KAAO,GAC9E,OAAO,CAAC,gBAAgB,CAAC;IAsB5B,IAAI,CAAC,KAAK,EAAE,mBAAmB;IAQ/B,KAAK,CAAC,KAAK,CAAC,EAAE;QAAE,IAAI,EAAE,MAAM,CAAC;QAAC,MAAM,EAAE,MAAM,CAAA;KAAE;CAO/C"}
|
package/beta/realtime/ws.js
CHANGED
|
@@ -9,12 +9,20 @@ class OpenAIRealtimeWS extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
9
9
|
constructor(props, client) {
|
|
10
10
|
super();
|
|
11
11
|
client ?? (client = new index_1.OpenAI());
|
|
12
|
+
const hasProvider = typeof client?._options?.apiKey === 'function';
|
|
13
|
+
if (hasProvider && !props.__resolvedApiKey) {
|
|
14
|
+
throw new Error([
|
|
15
|
+
'Cannot open Realtime WebSocket with a function-based apiKey.',
|
|
16
|
+
'Use the .create() method so that the key is resolved before connecting:',
|
|
17
|
+
'await OpenAIRealtimeWS.create(client, { model })',
|
|
18
|
+
].join('\n'));
|
|
19
|
+
}
|
|
12
20
|
this.url = (0, internal_base_1.buildRealtimeURL)(client, props.model);
|
|
13
21
|
this.socket = new WS.WebSocket(this.url, {
|
|
14
22
|
...props.options,
|
|
15
23
|
headers: {
|
|
16
24
|
...props.options?.headers,
|
|
17
|
-
...((0, internal_base_1.isAzure)(client) ? {} : { Authorization: `Bearer ${client.apiKey}` }),
|
|
25
|
+
...((0, internal_base_1.isAzure)(client) && !props.__resolvedApiKey ? {} : { Authorization: `Bearer ${client.apiKey}` }),
|
|
18
26
|
'OpenAI-Beta': 'realtime=v1',
|
|
19
27
|
},
|
|
20
28
|
});
|
|
@@ -43,12 +51,26 @@ class OpenAIRealtimeWS extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
43
51
|
this._onError(null, err.message, err);
|
|
44
52
|
});
|
|
45
53
|
}
|
|
46
|
-
static async
|
|
47
|
-
|
|
54
|
+
static async create(client, props) {
|
|
55
|
+
return new OpenAIRealtimeWS({ ...props, __resolvedApiKey: await client._callApiKey() }, client);
|
|
56
|
+
}
|
|
57
|
+
static async azure(client, props = {}) {
|
|
58
|
+
const isApiKeyProvider = await client._callApiKey();
|
|
59
|
+
const deploymentName = props.deploymentName ?? client.deploymentName;
|
|
48
60
|
if (!deploymentName) {
|
|
49
61
|
throw new Error('No deployment name provided');
|
|
50
62
|
}
|
|
51
|
-
return new OpenAIRealtimeWS({
|
|
63
|
+
return new OpenAIRealtimeWS({
|
|
64
|
+
model: deploymentName,
|
|
65
|
+
options: {
|
|
66
|
+
...props.options,
|
|
67
|
+
headers: {
|
|
68
|
+
...props.options?.headers,
|
|
69
|
+
...(isApiKeyProvider ? {} : { 'api-key': client.apiKey }),
|
|
70
|
+
},
|
|
71
|
+
},
|
|
72
|
+
__resolvedApiKey: isApiKeyProvider,
|
|
73
|
+
}, client);
|
|
52
74
|
}
|
|
53
75
|
send(event) {
|
|
54
76
|
try {
|
|
@@ -68,18 +90,4 @@ class OpenAIRealtimeWS extends internal_base_1.OpenAIRealtimeEmitter {
|
|
|
68
90
|
}
|
|
69
91
|
}
|
|
70
92
|
exports.OpenAIRealtimeWS = OpenAIRealtimeWS;
|
|
71
|
-
async function getAzureHeaders(client) {
|
|
72
|
-
if (client.apiKey !== '<Missing Key>') {
|
|
73
|
-
return { 'api-key': client.apiKey };
|
|
74
|
-
}
|
|
75
|
-
else {
|
|
76
|
-
const token = await client._getAzureADToken();
|
|
77
|
-
if (token) {
|
|
78
|
-
return { Authorization: `Bearer ${token}` };
|
|
79
|
-
}
|
|
80
|
-
else {
|
|
81
|
-
throw new Error('AzureOpenAI is not instantiated correctly. No API key or token provided.');
|
|
82
|
-
}
|
|
83
|
-
}
|
|
84
|
-
}
|
|
85
93
|
//# sourceMappingURL=ws.js.map
|