feat(server): adapt 4o image (#11956)

fix AI-88

<!-- This is an auto-generated comment: release notes by coderabbit.ai -->
## Summary by CodeRabbit

- **New Features**
  - Added support for the new image generation model "gpt-image-1" in both backend and frontend.
  - Updated available prompt options to include "gpt-image-1" for image creation actions.

- **Improvements**
  - Set a 5-minute timeout for image generation requests to improve reliability.

- **Tests**
  - Expanded test coverage to validate image generation using the new "gpt-image-1" prompt.
<!-- end of auto-generated comment: release notes by coderabbit.ai -->
This commit is contained in:
darkskygit
2025-04-24 09:04:29 +00:00
parent 13b28e2ad8
commit 5d76be6736
7 changed files with 18 additions and 8 deletions

View File

@@ -26,7 +26,7 @@
}, },
"dependencies": { "dependencies": {
"@ai-sdk/google": "^1.2.10", "@ai-sdk/google": "^1.2.10",
"@ai-sdk/openai": "^1.3.9", "@ai-sdk/openai": "^1.3.18",
"@ai-sdk/perplexity": "^1.1.6", "@ai-sdk/perplexity": "^1.1.6",
"@apollo/server": "^4.11.3", "@apollo/server": "^4.11.3",
"@aws-sdk/client-s3": "^3.779.0", "@aws-sdk/client-s3": "^3.779.0",

View File

@@ -514,7 +514,7 @@ const actions = [
type: 'image' as const, type: 'image' as const,
}, },
{ {
promptName: ['debug:action:dalle3'], promptName: ['debug:action:dalle3', 'debug:action:gpt-image-1'],
messages: [ messages: [
{ {
role: 'user' as const, role: 'user' as const,

View File

@@ -288,6 +288,12 @@ const actions: Prompt[] = [
model: 'dall-e-3', model: 'dall-e-3',
messages: [], messages: [],
}, },
{
name: 'debug:action:gpt-image-1',
action: 'image',
model: 'gpt-image-1',
messages: [],
},
{ {
name: 'debug:action:fal-sd15', name: 'debug:action:fal-sd15',
action: 'image', action: 'image',

View File

@@ -77,6 +77,7 @@ export class OpenAIProvider
'text-moderation-stable', 'text-moderation-stable',
// text to image // text to image
'dall-e-3', 'dall-e-3',
'gpt-image-1',
]; ];
#instance!: VercelOpenAIProvider; #instance!: VercelOpenAIProvider;

View File

@@ -2,6 +2,7 @@
// TODO(@Peng): automate this // TODO(@Peng): automate this
export const promptKeys = [ export const promptKeys = [
'debug:action:dalle3', 'debug:action:dalle3',
'debug:action:gpt-image-1',
'debug:action:fal-sd15', 'debug:action:fal-sd15',
'debug:action:fal-upscaler', 'debug:action:fal-upscaler',
'debug:action:fal-remove-bg', 'debug:action:fal-remove-bg',

View File

@@ -492,7 +492,7 @@ Could you make a new website based on these notes and send back just the html fi
AIProvider.provide('createImage', async options => { AIProvider.provide('createImage', async options => {
// test to image // test to image
let promptName: PromptKey = 'debug:action:dalle3'; let promptName: PromptKey = 'debug:action:gpt-image-1';
// image to image // image to image
if (options.attachments?.length) { if (options.attachments?.length) {
promptName = 'debug:action:fal-sd15'; promptName = 'debug:action:fal-sd15';
@@ -507,6 +507,8 @@ Could you make a new website based on these notes and send back just the html fi
client, client,
sessionId, sessionId,
content: options.input, content: options.input,
// 5 minutes
timeout: 300000,
}); });
}); });

View File

@@ -889,7 +889,7 @@ __metadata:
"@affine/graphql": "workspace:*" "@affine/graphql": "workspace:*"
"@affine/server-native": "workspace:*" "@affine/server-native": "workspace:*"
"@ai-sdk/google": "npm:^1.2.10" "@ai-sdk/google": "npm:^1.2.10"
"@ai-sdk/openai": "npm:^1.3.9" "@ai-sdk/openai": "npm:^1.3.18"
"@ai-sdk/perplexity": "npm:^1.1.6" "@ai-sdk/perplexity": "npm:^1.1.6"
"@apollo/server": "npm:^4.11.3" "@apollo/server": "npm:^4.11.3"
"@aws-sdk/client-s3": "npm:^3.779.0" "@aws-sdk/client-s3": "npm:^3.779.0"
@@ -1063,15 +1063,15 @@ __metadata:
languageName: node languageName: node
linkType: hard linkType: hard
"@ai-sdk/openai@npm:^1.3.9": "@ai-sdk/openai@npm:^1.3.18":
version: 1.3.12 version: 1.3.18
resolution: "@ai-sdk/openai@npm:1.3.12" resolution: "@ai-sdk/openai@npm:1.3.18"
dependencies: dependencies:
"@ai-sdk/provider": "npm:1.1.3" "@ai-sdk/provider": "npm:1.1.3"
"@ai-sdk/provider-utils": "npm:2.2.7" "@ai-sdk/provider-utils": "npm:2.2.7"
peerDependencies: peerDependencies:
zod: ^3.0.0 zod: ^3.0.0
checksum: 10/067e6ce7a59bda062ea5198f928809d7cad9aae994c786b611f104515f3fcf3cb93f370ce3cb58c223ebc18da633d8f934beec4e879d26d071a8da81013369fb checksum: 10/5d6e8ea5b3a6afc237d3220bdb7f307b6b82b1fd2511d9627f09b1be70e36c15060e807381148c4203d61a317acf87091b3b42edc55da7b424f2c2caf11c5a19
languageName: node languageName: node
linkType: hard linkType: hard