From a1fde0db384dc3a524dc5554f4ebc1daee28f671 Mon Sep 17 00:00:00 2001 From: icarus Date: Sat, 11 Oct 2025 19:19:54 +0800 Subject: [PATCH] feat(video): implement OpenAI video creation support Add video creation functionality using OpenAI SDK. Update types to match OpenAI's video API and implement the actual creation method in the OpenAI client. --- .../legacy/clients/openai/OpenAIResponseAPIClient.ts | 6 +++--- src/renderer/src/aiCore/legacy/index.ts | 11 +++++------ src/renderer/src/types/video.ts | 12 ++++-------- 3 files changed, 12 insertions(+), 17 deletions(-) diff --git a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts index 8675e4799f..5c6c6e4e92 100644 --- a/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts +++ b/src/renderer/src/aiCore/legacy/clients/openai/OpenAIResponseAPIClient.ts @@ -153,9 +153,9 @@ export class OpenAIResponseAPIClient extends OpenAIBaseClient< return await sdk.responses.create(payload, options) } - public async createVideo(params: CreateVideoParams) { - // TODO: implement it - throw new Error('Not implemented') + public async createVideo(params: CreateVideoParams): Promise { + const sdk = await this.getSdkInstance() + return await sdk.videos.create(params.params, params.options) } private async handlePdfFile(file: FileMetadata): Promise { diff --git a/src/renderer/src/aiCore/legacy/index.ts b/src/renderer/src/aiCore/legacy/index.ts index 37e5e5bc01..b897c904a1 100644 --- a/src/renderer/src/aiCore/legacy/index.ts +++ b/src/renderer/src/aiCore/legacy/index.ts @@ -181,12 +181,11 @@ export default class AiProvider { } public async createVideo(params: CreateVideoParams): Promise { - throw new Error('Not implemented') - // if (this.apiClient instanceof OpenAIResponseAPIClient) { - // return this.apiClient.createVideo(params) - // } else { - // throw new Error('Video generation is not supported by this provider') - // } + if (this.apiClient instanceof OpenAIResponseAPIClient) { + return this.apiClient.createVideo(params) + } else { + throw new Error('Video generation is not supported by this provider') + } } public getBaseURL(): string { diff --git a/src/renderer/src/types/video.ts b/src/renderer/src/types/video.ts index 13dcb956b5..112baf901c 100644 --- a/src/renderer/src/types/video.ts +++ b/src/renderer/src/types/video.ts @@ -1,10 +1,6 @@ -export type CreateVideoRequest = { - type: 'openai' -} +import OpenAI from '@cherrystudio/openai' -export type CreateVideoParams = { - providerId: string - modelId: string -} +// Only OpenAI for now. +export type CreateVideoParams = { params: OpenAI.VideoCreateParams; options?: OpenAI.RequestOptions } -export type CreateVideoResult = {} +export type CreateVideoResult = OpenAI.Videos.Video