Skip to content

Commit 1cfc209

Browse files
Backport: feat(provider/openai): OpenAILanguageModelOptions type (#8858)
This is an automated backport of #8212 to the v5.0 branch. Co-authored-by: Gregor Martynus <[email protected]>
1 parent 347b7ec commit 1cfc209

File tree

6 files changed

+63
-5
lines changed

6 files changed

+63
-5
lines changed

.changeset/cyan-mirrors-clap.md

Lines changed: 20 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,20 @@
1+
---
2+
'@ai-sdk/openai': patch
3+
---
4+
5+
feat(provider/openai): `OpenAIChatLanguageModelOptions` type
6+
7+
```ts
8+
import { openai, type OpenAIChatLanguageModelOptions } from '@ai-sdk/openai';
9+
import { generateText } from 'ai';
10+
11+
await generateText({
12+
model: openai.chat('gpt-4o'),
13+
prompt: 'Invent a new holiday and describe its traditions.',
14+
providerOptions: {
15+
openai: {
16+
user: 'user-123',
17+
} satisfies OpenAIChatLanguageModelOptions,
18+
},
19+
});
20+
```

content/providers/01-ai-sdk-providers/03-openai.mdx

Lines changed: 3 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -624,6 +624,8 @@ OpenAI chat models support also some model specific provider options that are no
624624
You can pass them in the `providerOptions` argument:
625625

626626
```ts
627+
import { openai, type OpenAIChatLanguageModelOptions } from '@ai-sdk/openai';
628+
627629
const model = openai.chat('gpt-5');
628630

629631
await generateText({
@@ -635,7 +637,7 @@ await generateText({
635637
'50256': -100,
636638
},
637639
user: 'test-user', // optional unique user identifier
638-
},
640+
} satisfies OpenAIChatLanguageModelOptions,
639641
},
640642
});
641643
```
Lines changed: 33 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,33 @@
1+
import { openai, type OpenAIChatLanguageModelOptions } from '@ai-sdk/openai';
2+
import { generateText } from 'ai';
3+
import 'dotenv/config';
4+
5+
async function main() {
6+
const { text, usage } = await generateText({
7+
model: openai.chat('gpt-4o'),
8+
prompt: 'Invent a new holiday and describe its traditions.',
9+
providerOptions: {
10+
openai: {
11+
logitBias: {},
12+
logprobs: 1,
13+
user: '<user_id>',
14+
maxCompletionTokens: 100,
15+
store: false,
16+
structuredOutputs: false,
17+
serviceTier: 'auto',
18+
strictJsonSchema: false,
19+
textVerbosity: 'medium',
20+
promptCacheKey: '<prompt_cache_key>',
21+
safetyIdentifier: '<safety_identifier>',
22+
// @ts-expect-error
23+
invalidOption: null,
24+
} satisfies OpenAIChatLanguageModelOptions,
25+
},
26+
});
27+
28+
console.log(text);
29+
console.log();
30+
console.log('Usage:', usage);
31+
}
32+
33+
main().catch(console.error);

packages/openai/src/chat/openai-chat-language-model.ts

Lines changed: 2 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -30,7 +30,7 @@ import { getResponseMetadata } from './get-response-metadata';
3030
import { mapOpenAIFinishReason } from './map-openai-finish-reason';
3131
import {
3232
OpenAIChatModelId,
33-
openaiProviderOptions,
33+
openaiChatLanguageModelOptions,
3434
} from './openai-chat-options';
3535
import { prepareChatTools } from './openai-chat-prepare-tools';
3636

@@ -83,7 +83,7 @@ export class OpenAIChatLanguageModel implements LanguageModelV2 {
8383
(await parseProviderOptions({
8484
provider: 'openai',
8585
providerOptions,
86-
schema: openaiProviderOptions,
86+
schema: openaiChatLanguageModelOptions,
8787
})) ?? {};
8888

8989
const structuredOutputs = openaiOptions.structuredOutputs ?? true;

packages/openai/src/chat/openai-chat-options.ts

Lines changed: 4 additions & 2 deletions
Original file line numberDiff line numberDiff line change
@@ -39,7 +39,7 @@ export type OpenAIChatModelId =
3939
| 'gpt-5-chat-latest'
4040
| (string & {});
4141

42-
export const openaiProviderOptions = z.object({
42+
export const openaiChatLanguageModelOptions = z.object({
4343
/**
4444
* Modify the likelihood of specified tokens appearing in the completion.
4545
*
@@ -141,4 +141,6 @@ export const openaiProviderOptions = z.object({
141141
safetyIdentifier: z.string().optional(),
142142
});
143143

144-
export type OpenAIProviderOptions = z.infer<typeof openaiProviderOptions>;
144+
export type OpenAIChatLanguageModelOptions = z.infer<
145+
typeof openaiChatLanguageModelOptions
146+
>;

packages/openai/src/index.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -1,4 +1,5 @@
11
export { createOpenAI, openai } from './openai-provider';
22
export type { OpenAIProvider, OpenAIProviderSettings } from './openai-provider';
33
export type { OpenAIResponsesProviderOptions } from './responses/openai-responses-language-model';
4+
export type { OpenAIChatLanguageModelOptions } from './chat/openai-chat-options';
45
export { VERSION } from './version';

0 commit comments

Comments
 (0)