@ai-sdk/openai 4.0.32 → 4.0.34

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.
@@ -1858,6 +1858,44 @@ The metadata includes the following fields:
1858
1858
  - **itemId** _string_ — The ID of the compaction item in the Responses API
1859
1859
  - **encryptedContent** _string_ (optional) — The encrypted compaction state. This is automatically sent back to the API when the message is included in subsequent requests.
1860
1860
 
1861
+ ### Text Batches
1862
+
1863
+ <Note type="warning">
1864
+ Text batch APIs are experimental and may change in future releases.
1865
+ </Note>
1866
+
1867
+ The OpenAI provider supports the [Batch API](https://developers.openai.com/api/docs/guides/batch) for text generation.
1868
+
1869
+ ```ts
1870
+ import { openai } from '@ai-sdk/openai';
1871
+ import {
1872
+ experimental_startTextBatch as startTextBatch,
1873
+ experimental_getBatchResults as getBatchResults,
1874
+ experimental_getBatchStatus as getBatchStatus,
1875
+ } from 'ai';
1876
+
1877
+ const model = openai('gpt-4.1-nano');
1878
+
1879
+ const batch = await startTextBatch({
1880
+ model,
1881
+ requests: [
1882
+ { id: 'france', prompt: 'What is the capital of France?' },
1883
+ { id: 'germany', prompt: 'What is the capital of Germany?' },
1884
+ ],
1885
+ });
1886
+
1887
+ // Persist `batch` and check its status later, or poll for status updates.
1888
+ const { status } = await getBatchStatus({ model, batch });
1889
+
1890
+ if (status !== 'pending') {
1891
+ for await (const result of getBatchResults({ model, batch })) {
1892
+ console.log(result);
1893
+ }
1894
+ }
1895
+ ```
1896
+
1897
+ Starting a batch returns a serializable reference that can be persisted and used to retrieve the batch results later, or poll for status updates.
1898
+
1861
1899
  ### Chat Models
1862
1900
 
1863
1901
  You can create models that call the [OpenAI chat API](https://platform.openai.com/docs/api-reference/chat) using the `.chat()` factory method.
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@ai-sdk/openai",
3
- "version": "4.0.32",
3
+ "version": "4.0.34",
4
4
  "type": "module",
5
5
  "license": "Apache-2.0",
6
6
  "sideEffects": false,
package/src/index.ts CHANGED
@@ -22,11 +22,19 @@ export type { OpenAILanguageModelCompletionOptions } from './completion/openai-c
22
22
  export type { OpenAIEmbeddingModelOptions } from './embedding/openai-embedding-model-options';
23
23
  export type { OpenAISpeechModelOptions } from './speech/openai-speech-model-options';
24
24
  export type { OpenAITranscriptionModelOptions } from './transcription/openai-transcription-model-options';
25
- export { OpenAITranslationModel as Experimental_OpenAITranslationModel } from './translation/openai-translation-model';
25
+ export {
26
+ OpenAISpeechTranslationModel as Experimental_OpenAISpeechTranslationModel,
27
+ /** @deprecated Use `Experimental_OpenAISpeechTranslationModel` instead. */
28
+ OpenAISpeechTranslationModel as Experimental_OpenAITranslationModel,
29
+ } from './speech-translation/openai-speech-translation-model';
26
30
  export type {
27
- OpenAITranslationModelId as Experimental_OpenAITranslationModelId,
28
- OpenAITranslationModelOptions as Experimental_OpenAITranslationModelOptions,
29
- } from './translation/openai-translation-model-options';
31
+ OpenAISpeechTranslationModelId as Experimental_OpenAISpeechTranslationModelId,
32
+ /** @deprecated Use `Experimental_OpenAISpeechTranslationModelId` instead. */
33
+ OpenAISpeechTranslationModelId as Experimental_OpenAITranslationModelId,
34
+ OpenAISpeechTranslationModelOptions as Experimental_OpenAISpeechTranslationModelOptions,
35
+ /** @deprecated Use `Experimental_OpenAISpeechTranslationModelOptions` instead. */
36
+ OpenAISpeechTranslationModelOptions as Experimental_OpenAITranslationModelOptions,
37
+ } from './speech-translation/openai-speech-translation-model-options';
30
38
  export type { OpenAIFilesOptions } from './files/openai-files-options';
31
39
  export type {
32
40
  OpenAIComputerAction,
@@ -1,5 +1,6 @@
1
1
  import type {
2
2
  EmbeddingModelV4,
3
+ Experimental_BatchLanguageModelV4 as BatchLanguageModelV4,
3
4
  FilesV4,
4
5
  ImageModelV4,
5
6
  LanguageModelV4,
@@ -30,25 +31,25 @@ import type { OpenAIEmbeddingModelId } from './embedding/openai-embedding-model-
30
31
  import { OpenAIImageModel } from './image/openai-image-model';
31
32
  import type { OpenAIImageModelId } from './image/openai-image-model-options';
32
33
  import { openaiTools } from './openai-tools';
34
+ import { OpenAIResponsesBatchLanguageModel } from './openai-responses-batch';
33
35
  import { OpenAIRealtimeModel } from './realtime/openai-realtime-model';
34
- import { OpenAIResponsesLanguageModel } from './responses/openai-responses-language-model';
35
36
  import type { OpenAIResponsesModelId } from './responses/openai-responses-language-model-options';
36
37
  import { OpenAISpeechModel } from './speech/openai-speech-model';
37
38
  import type { OpenAISpeechModelId } from './speech/openai-speech-model-options';
38
39
  import { OpenAITranscriptionModel } from './transcription/openai-transcription-model';
39
40
  import type { OpenAITranscriptionModelId } from './transcription/openai-transcription-model-options';
40
- import { OpenAITranslationModel } from './translation/openai-translation-model';
41
- import type { OpenAITranslationModelId } from './translation/openai-translation-model-options';
41
+ import { OpenAISpeechTranslationModel } from './speech-translation/openai-speech-translation-model';
42
+ import type { OpenAISpeechTranslationModelId } from './speech-translation/openai-speech-translation-model-options';
42
43
  import { OpenAISkills } from './skills/openai-skills';
43
44
  import { VERSION } from './version';
44
45
 
45
46
  export interface OpenAIProvider extends ProviderV4 {
46
- (modelId: OpenAIResponsesModelId): LanguageModelV4;
47
+ (modelId: OpenAIResponsesModelId): BatchLanguageModelV4;
47
48
 
48
49
  /**
49
50
  * Creates an OpenAI model for text generation.
50
51
  */
51
- languageModel(modelId: OpenAIResponsesModelId): LanguageModelV4;
52
+ languageModel(modelId: OpenAIResponsesModelId): BatchLanguageModelV4;
52
53
 
53
54
  /**
54
55
  * Creates an OpenAI chat model for text generation.
@@ -58,7 +59,7 @@ export interface OpenAIProvider extends ProviderV4 {
58
59
  /**
59
60
  * Creates an OpenAI responses API model for text generation.
60
61
  */
61
- responses(modelId: OpenAIResponsesModelId): LanguageModelV4;
62
+ responses(modelId: OpenAIResponsesModelId): BatchLanguageModelV4;
62
63
 
63
64
  /**
64
65
  * Creates an OpenAI completion model for text generation.
@@ -103,13 +104,15 @@ export interface OpenAIProvider extends ProviderV4 {
103
104
  /**
104
105
  * Creates an experimental model for streaming speech translation.
105
106
  */
106
- translation(modelId: OpenAITranslationModelId): SpeechTranslationModelV4;
107
+ translation(
108
+ modelId: OpenAISpeechTranslationModelId,
109
+ ): SpeechTranslationModelV4;
107
110
 
108
111
  /**
109
112
  * Creates an experimental model for streaming speech translation.
110
113
  */
111
114
  speechTranslationModel(
112
- modelId: OpenAITranslationModelId,
115
+ modelId: OpenAISpeechTranslationModelId,
113
116
  ): SpeechTranslationModelV4;
114
117
 
115
118
  /**
@@ -257,9 +260,11 @@ export function createOpenAI(
257
260
  webSocket: options.webSocket,
258
261
  });
259
262
 
260
- const createTranslationModel = (modelId: OpenAITranslationModelId) =>
261
- new OpenAITranslationModel(modelId, {
262
- provider: `${providerName}.translation`,
263
+ const createSpeechTranslationModel = (
264
+ modelId: OpenAISpeechTranslationModelId,
265
+ ) =>
266
+ new OpenAISpeechTranslationModel(modelId, {
267
+ provider: `${providerName}.speech-translation`,
263
268
  url: ({ path }) => `${baseURL}${path}`,
264
269
  headers: getHeaders,
265
270
  fetch: options.fetch,
@@ -301,7 +306,7 @@ export function createOpenAI(
301
306
  };
302
307
 
303
308
  const createResponsesModel = (modelId: OpenAIResponsesModelId) => {
304
- return new OpenAIResponsesLanguageModel(modelId, {
309
+ return new OpenAIResponsesBatchLanguageModel(modelId, {
305
310
  provider: `${providerName}.responses`,
306
311
  url: ({ path }) => `${baseURL}${path}`,
307
312
  headers: getHeaders,
@@ -358,8 +363,8 @@ export function createOpenAI(
358
363
  provider.transcription = createTranscriptionModel;
359
364
  provider.transcriptionModel = createTranscriptionModel;
360
365
 
361
- provider.translation = createTranslationModel;
362
- provider.speechTranslationModel = createTranslationModel;
366
+ provider.translation = createSpeechTranslationModel;
367
+ provider.speechTranslationModel = createSpeechTranslationModel;
363
368
 
364
369
  provider.speech = createSpeechModel;
365
370
  provider.speechModel = createSpeechModel;