openai 4.28.4 → 4.29.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 +35 -0
- package/README.md +7 -10
- package/index.d.mts +1 -0
- package/index.d.ts +1 -0
- package/index.d.ts.map +1 -1
- package/index.js.map +1 -1
- package/index.mjs.map +1 -1
- package/lib/AbstractAssistantStreamRunner.d.ts +74 -0
- package/lib/AbstractAssistantStreamRunner.d.ts.map +1 -0
- package/lib/AbstractAssistantStreamRunner.js +246 -0
- package/lib/AbstractAssistantStreamRunner.js.map +1 -0
- package/lib/AbstractAssistantStreamRunner.mjs +242 -0
- package/lib/AbstractAssistantStreamRunner.mjs.map +1 -0
- package/lib/AssistantStream.d.ts +56 -0
- package/lib/AssistantStream.d.ts.map +1 -0
- package/lib/AssistantStream.js +526 -0
- package/lib/AssistantStream.js.map +1 -0
- package/lib/AssistantStream.mjs +499 -0
- package/lib/AssistantStream.mjs.map +1 -0
- package/lib/ChatCompletionRunFunctions.test.js +35 -0
- package/lib/ChatCompletionRunFunctions.test.js.map +1 -1
- package/lib/ChatCompletionRunFunctions.test.mjs +35 -0
- package/lib/ChatCompletionRunFunctions.test.mjs.map +1 -1
- package/lib/ChatCompletionStream.d.ts.map +1 -1
- package/lib/ChatCompletionStream.js +21 -3
- package/lib/ChatCompletionStream.js.map +1 -1
- package/lib/ChatCompletionStream.mjs +21 -3
- package/lib/ChatCompletionStream.mjs.map +1 -1
- package/package.json +1 -1
- package/resources/audio/speech.d.ts +3 -6
- package/resources/audio/speech.d.ts.map +1 -1
- package/resources/audio/speech.js.map +1 -1
- package/resources/audio/speech.mjs.map +1 -1
- package/resources/audio/transcriptions.d.ts +14 -4
- package/resources/audio/transcriptions.d.ts.map +1 -1
- package/resources/audio/transcriptions.js.map +1 -1
- package/resources/audio/transcriptions.mjs.map +1 -1
- package/resources/audio/translations.d.ts +2 -1
- package/resources/audio/translations.d.ts.map +1 -1
- package/resources/audio/translations.js.map +1 -1
- package/resources/audio/translations.mjs.map +1 -1
- package/resources/beta/assistants/assistants.d.ts +629 -60
- package/resources/beta/assistants/assistants.d.ts.map +1 -1
- package/resources/beta/assistants/assistants.js.map +1 -1
- package/resources/beta/assistants/assistants.mjs.map +1 -1
- package/resources/beta/assistants/index.d.ts +1 -1
- package/resources/beta/assistants/index.d.ts.map +1 -1
- package/resources/beta/assistants/index.js.map +1 -1
- package/resources/beta/assistants/index.mjs.map +1 -1
- package/resources/beta/beta.d.ts +12 -0
- package/resources/beta/beta.d.ts.map +1 -1
- package/resources/beta/beta.js.map +1 -1
- package/resources/beta/beta.mjs.map +1 -1
- package/resources/beta/index.d.ts +2 -2
- package/resources/beta/index.d.ts.map +1 -1
- package/resources/beta/index.js.map +1 -1
- package/resources/beta/index.mjs.map +1 -1
- package/resources/beta/threads/index.d.ts +3 -3
- package/resources/beta/threads/index.d.ts.map +1 -1
- package/resources/beta/threads/index.js +2 -2
- package/resources/beta/threads/index.js.map +1 -1
- package/resources/beta/threads/index.mjs +1 -1
- package/resources/beta/threads/index.mjs.map +1 -1
- package/resources/beta/threads/messages/index.d.ts +1 -1
- package/resources/beta/threads/messages/index.d.ts.map +1 -1
- package/resources/beta/threads/messages/index.js +2 -2
- package/resources/beta/threads/messages/index.js.map +1 -1
- package/resources/beta/threads/messages/index.mjs +1 -1
- package/resources/beta/threads/messages/index.mjs.map +1 -1
- package/resources/beta/threads/messages/messages.d.ts +289 -86
- package/resources/beta/threads/messages/messages.d.ts.map +1 -1
- package/resources/beta/threads/messages/messages.js +5 -5
- package/resources/beta/threads/messages/messages.js.map +1 -1
- package/resources/beta/threads/messages/messages.mjs +3 -3
- package/resources/beta/threads/messages/messages.mjs.map +1 -1
- package/resources/beta/threads/runs/index.d.ts +2 -2
- package/resources/beta/threads/runs/index.d.ts.map +1 -1
- package/resources/beta/threads/runs/index.js.map +1 -1
- package/resources/beta/threads/runs/index.mjs.map +1 -1
- package/resources/beta/threads/runs/runs.d.ts +153 -49
- package/resources/beta/threads/runs/runs.d.ts.map +1 -1
- package/resources/beta/threads/runs/runs.js +14 -7
- package/resources/beta/threads/runs/runs.js.map +1 -1
- package/resources/beta/threads/runs/runs.mjs +14 -7
- package/resources/beta/threads/runs/runs.mjs.map +1 -1
- package/resources/beta/threads/runs/steps.d.ts +219 -5
- package/resources/beta/threads/runs/steps.d.ts.map +1 -1
- package/resources/beta/threads/runs/steps.js.map +1 -1
- package/resources/beta/threads/runs/steps.mjs.map +1 -1
- package/resources/beta/threads/threads.d.ts +144 -22
- package/resources/beta/threads/threads.d.ts.map +1 -1
- package/resources/beta/threads/threads.js +9 -4
- package/resources/beta/threads/threads.js.map +1 -1
- package/resources/beta/threads/threads.mjs +9 -4
- package/resources/beta/threads/threads.mjs.map +1 -1
- package/resources/chat/completions.d.ts +28 -18
- package/resources/chat/completions.d.ts.map +1 -1
- package/resources/chat/completions.js.map +1 -1
- package/resources/chat/completions.mjs.map +1 -1
- package/resources/completions.d.ts +2 -0
- package/resources/completions.d.ts.map +1 -1
- package/resources/completions.js.map +1 -1
- package/resources/completions.mjs.map +1 -1
- package/resources/files.d.ts +4 -4
- package/resources/images.d.ts +6 -3
- package/resources/images.d.ts.map +1 -1
- package/resources/images.js.map +1 -1
- package/resources/images.mjs.map +1 -1
- package/resources/moderations.d.ts +3 -5
- package/resources/moderations.d.ts.map +1 -1
- package/resources/moderations.js +1 -1
- package/resources/moderations.js.map +1 -1
- package/resources/moderations.mjs +1 -1
- package/resources/moderations.mjs.map +1 -1
- package/resources/shared.d.ts +6 -0
- package/resources/shared.d.ts.map +1 -1
- package/src/index.ts +1 -0
- package/src/lib/AbstractAssistantStreamRunner.ts +340 -0
- package/src/lib/AssistantStream.ts +698 -0
- package/src/lib/ChatCompletionRunFunctions.test.ts +52 -1
- package/src/lib/ChatCompletionStream.ts +29 -6
- package/src/resources/audio/speech.ts +3 -6
- package/src/resources/audio/transcriptions.ts +14 -4
- package/src/resources/audio/translations.ts +2 -1
- package/src/resources/beta/assistants/assistants.ts +768 -76
- package/src/resources/beta/assistants/index.ts +9 -0
- package/src/resources/beta/beta.ts +12 -0
- package/src/resources/beta/index.ts +12 -0
- package/src/resources/beta/threads/index.ts +30 -5
- package/src/resources/beta/threads/messages/index.ts +21 -5
- package/src/resources/beta/threads/messages/messages.ts +332 -94
- package/src/resources/beta/threads/runs/index.ts +18 -1
- package/src/resources/beta/threads/runs/runs.ts +225 -60
- package/src/resources/beta/threads/runs/steps.ts +254 -5
- package/src/resources/beta/threads/threads.ts +182 -25
- package/src/resources/chat/completions.ts +28 -18
- package/src/resources/completions.ts +2 -0
- package/src/resources/files.ts +4 -4
- package/src/resources/images.ts +6 -3
- package/src/resources/moderations.ts +3 -5
- package/src/resources/shared.ts +10 -0
- package/src/streaming.ts +31 -0
- package/src/version.ts +1 -1
- package/streaming.d.ts +2 -0
- package/streaming.d.ts.map +1 -1
- package/streaming.js +32 -1
- package/streaming.js.map +1 -1
- package/streaming.mjs +30 -0
- package/streaming.mjs.map +1 -1
- package/version.d.ts +1 -1
- package/version.js +1 -1
- package/version.mjs +1 -1
|
@@ -1,5 +1,5 @@
|
|
|
1
1
|
import OpenAI from 'openai';
|
|
2
|
-
import { OpenAIError } from "../error";
|
|
2
|
+
import { OpenAIError, APIConnectionError } from "../error";
|
|
3
3
|
import { PassThrough } from 'stream';
|
|
4
4
|
import {
|
|
5
5
|
ParsingToolFunction,
|
|
@@ -2207,6 +2207,7 @@ describe('resource completions', () => {
|
|
|
2207
2207
|
await listener.sanityCheck();
|
|
2208
2208
|
});
|
|
2209
2209
|
});
|
|
2210
|
+
|
|
2210
2211
|
describe('stream', () => {
|
|
2211
2212
|
test('successful flow', async () => {
|
|
2212
2213
|
const { fetch, handleRequest } = mockStreamingChatCompletionFetch();
|
|
@@ -2273,5 +2274,55 @@ describe('resource completions', () => {
|
|
|
2273
2274
|
expect(listener.finalMessage).toEqual({ role: 'assistant', content: 'The weather is great today!' });
|
|
2274
2275
|
await listener.sanityCheck();
|
|
2275
2276
|
});
|
|
2277
|
+
test('handles network errors', async () => {
|
|
2278
|
+
const { fetch, handleRequest } = mockFetch();
|
|
2279
|
+
|
|
2280
|
+
const openai = new OpenAI({ apiKey: '...', fetch });
|
|
2281
|
+
|
|
2282
|
+
const stream = openai.beta.chat.completions.stream(
|
|
2283
|
+
{
|
|
2284
|
+
max_tokens: 1024,
|
|
2285
|
+
model: 'gpt-3.5-turbo',
|
|
2286
|
+
messages: [{ role: 'user', content: 'Say hello there!' }],
|
|
2287
|
+
},
|
|
2288
|
+
{ maxRetries: 0 },
|
|
2289
|
+
);
|
|
2290
|
+
|
|
2291
|
+
handleRequest(async () => {
|
|
2292
|
+
throw new Error('mock request error');
|
|
2293
|
+
}).catch(() => {});
|
|
2294
|
+
|
|
2295
|
+
async function runStream() {
|
|
2296
|
+
await stream.done();
|
|
2297
|
+
}
|
|
2298
|
+
|
|
2299
|
+
await expect(runStream).rejects.toThrow(APIConnectionError);
|
|
2300
|
+
});
|
|
2301
|
+
test('handles network errors on async iterator', async () => {
|
|
2302
|
+
const { fetch, handleRequest } = mockFetch();
|
|
2303
|
+
|
|
2304
|
+
const openai = new OpenAI({ apiKey: '...', fetch });
|
|
2305
|
+
|
|
2306
|
+
const stream = openai.beta.chat.completions.stream(
|
|
2307
|
+
{
|
|
2308
|
+
max_tokens: 1024,
|
|
2309
|
+
model: 'gpt-3.5-turbo',
|
|
2310
|
+
messages: [{ role: 'user', content: 'Say hello there!' }],
|
|
2311
|
+
},
|
|
2312
|
+
{ maxRetries: 0 },
|
|
2313
|
+
);
|
|
2314
|
+
|
|
2315
|
+
handleRequest(async () => {
|
|
2316
|
+
throw new Error('mock request error');
|
|
2317
|
+
}).catch(() => {});
|
|
2318
|
+
|
|
2319
|
+
async function runStream() {
|
|
2320
|
+
for await (const _event of stream) {
|
|
2321
|
+
continue;
|
|
2322
|
+
}
|
|
2323
|
+
}
|
|
2324
|
+
|
|
2325
|
+
await expect(runStream).rejects.toThrow(APIConnectionError);
|
|
2326
|
+
});
|
|
2276
2327
|
});
|
|
2277
2328
|
});
|
|
@@ -210,13 +210,16 @@ export class ChatCompletionStream
|
|
|
210
210
|
|
|
211
211
|
[Symbol.asyncIterator](): AsyncIterator<ChatCompletionChunk> {
|
|
212
212
|
const pushQueue: ChatCompletionChunk[] = [];
|
|
213
|
-
const readQueue:
|
|
213
|
+
const readQueue: {
|
|
214
|
+
resolve: (chunk: ChatCompletionChunk | undefined) => void;
|
|
215
|
+
reject: (err: unknown) => void;
|
|
216
|
+
}[] = [];
|
|
214
217
|
let done = false;
|
|
215
218
|
|
|
216
219
|
this.on('chunk', (chunk) => {
|
|
217
220
|
const reader = readQueue.shift();
|
|
218
221
|
if (reader) {
|
|
219
|
-
reader(chunk);
|
|
222
|
+
reader.resolve(chunk);
|
|
220
223
|
} else {
|
|
221
224
|
pushQueue.push(chunk);
|
|
222
225
|
}
|
|
@@ -225,7 +228,23 @@ export class ChatCompletionStream
|
|
|
225
228
|
this.on('end', () => {
|
|
226
229
|
done = true;
|
|
227
230
|
for (const reader of readQueue) {
|
|
228
|
-
reader(undefined);
|
|
231
|
+
reader.resolve(undefined);
|
|
232
|
+
}
|
|
233
|
+
readQueue.length = 0;
|
|
234
|
+
});
|
|
235
|
+
|
|
236
|
+
this.on('abort', (err) => {
|
|
237
|
+
done = true;
|
|
238
|
+
for (const reader of readQueue) {
|
|
239
|
+
reader.reject(err);
|
|
240
|
+
}
|
|
241
|
+
readQueue.length = 0;
|
|
242
|
+
});
|
|
243
|
+
|
|
244
|
+
this.on('error', (err) => {
|
|
245
|
+
done = true;
|
|
246
|
+
for (const reader of readQueue) {
|
|
247
|
+
reader.reject(err);
|
|
229
248
|
}
|
|
230
249
|
readQueue.length = 0;
|
|
231
250
|
});
|
|
@@ -236,13 +255,17 @@ export class ChatCompletionStream
|
|
|
236
255
|
if (done) {
|
|
237
256
|
return { value: undefined, done: true };
|
|
238
257
|
}
|
|
239
|
-
return new Promise<ChatCompletionChunk | undefined>((resolve) =>
|
|
240
|
-
(
|
|
241
|
-
);
|
|
258
|
+
return new Promise<ChatCompletionChunk | undefined>((resolve, reject) =>
|
|
259
|
+
readQueue.push({ resolve, reject }),
|
|
260
|
+
).then((chunk) => (chunk ? { value: chunk, done: false } : { value: undefined, done: true }));
|
|
242
261
|
}
|
|
243
262
|
const chunk = pushQueue.shift()!;
|
|
244
263
|
return { value: chunk, done: false };
|
|
245
264
|
},
|
|
265
|
+
return: async () => {
|
|
266
|
+
this.abort();
|
|
267
|
+
return { value: undefined, done: true };
|
|
268
|
+
},
|
|
246
269
|
};
|
|
247
270
|
}
|
|
248
271
|
|
|
@@ -35,13 +35,10 @@ export interface SpeechCreateParams {
|
|
|
35
35
|
voice: 'alloy' | 'echo' | 'fable' | 'onyx' | 'nova' | 'shimmer';
|
|
36
36
|
|
|
37
37
|
/**
|
|
38
|
-
* The format to
|
|
39
|
-
* `
|
|
40
|
-
*
|
|
41
|
-
* The `pcm` audio format, similar to `wav` but without a header, utilizes a 24kHz
|
|
42
|
-
* sample rate, mono channel, and 16-bit depth in signed little-endian format.
|
|
38
|
+
* The format to audio in. Supported formats are `mp3`, `opus`, `aac`, `flac`,
|
|
39
|
+
* `wav`, and `pcm`.
|
|
43
40
|
*/
|
|
44
|
-
response_format?: 'mp3' | 'opus' | 'aac' | 'flac' | '
|
|
41
|
+
response_format?: 'mp3' | 'opus' | 'aac' | 'flac' | 'wav' | 'pcm';
|
|
45
42
|
|
|
46
43
|
/**
|
|
47
44
|
* The speed of the generated audio. Select a value from `0.25` to `4.0`. `1.0` is
|
|
@@ -14,7 +14,14 @@ export class Transcriptions extends APIResource {
|
|
|
14
14
|
}
|
|
15
15
|
}
|
|
16
16
|
|
|
17
|
+
/**
|
|
18
|
+
* Represents a transcription response returned by model, based on the provided
|
|
19
|
+
* input.
|
|
20
|
+
*/
|
|
17
21
|
export interface Transcription {
|
|
22
|
+
/**
|
|
23
|
+
* The transcribed text.
|
|
24
|
+
*/
|
|
18
25
|
text: string;
|
|
19
26
|
}
|
|
20
27
|
|
|
@@ -26,7 +33,8 @@ export interface TranscriptionCreateParams {
|
|
|
26
33
|
file: Uploadable;
|
|
27
34
|
|
|
28
35
|
/**
|
|
29
|
-
* ID of the model to use. Only `whisper-1` is
|
|
36
|
+
* ID of the model to use. Only `whisper-1` (which is powered by our open source
|
|
37
|
+
* Whisper V2 model) is currently available.
|
|
30
38
|
*/
|
|
31
39
|
model: (string & {}) | 'whisper-1';
|
|
32
40
|
|
|
@@ -61,9 +69,11 @@ export interface TranscriptionCreateParams {
|
|
|
61
69
|
temperature?: number;
|
|
62
70
|
|
|
63
71
|
/**
|
|
64
|
-
* The timestamp granularities to populate for this transcription.
|
|
65
|
-
*
|
|
66
|
-
*
|
|
72
|
+
* The timestamp granularities to populate for this transcription.
|
|
73
|
+
* `response_format` must be set `verbose_json` to use timestamp granularities.
|
|
74
|
+
* Either or both of these options are supported: `word`, or `segment`. Note: There
|
|
75
|
+
* is no additional latency for segment timestamps, but generating word timestamps
|
|
76
|
+
* incurs additional latency.
|
|
67
77
|
*/
|
|
68
78
|
timestamp_granularities?: Array<'word' | 'segment'>;
|
|
69
79
|
}
|
|
@@ -26,7 +26,8 @@ export interface TranslationCreateParams {
|
|
|
26
26
|
file: Uploadable;
|
|
27
27
|
|
|
28
28
|
/**
|
|
29
|
-
* ID of the model to use. Only `whisper-1` is
|
|
29
|
+
* ID of the model to use. Only `whisper-1` (which is powered by our open source
|
|
30
|
+
* Whisper V2 model) is currently available.
|
|
30
31
|
*/
|
|
31
32
|
model: (string & {}) | 'whisper-1';
|
|
32
33
|
|