diff --git a/src/renderer/src/services/ApiService.ts b/src/renderer/src/services/ApiService.ts index 6ab07662cb..4a4c38f8f0 100644 --- a/src/renderer/src/services/ApiService.ts +++ b/src/renderer/src/services/ApiService.ts @@ -16,6 +16,7 @@ import type { StreamTextParams } from '@renderer/types/aiCoreTypes' import { type Chunk, ChunkType } from '@renderer/types/chunk' import { Message } from '@renderer/types/newMessage' import { SdkModel } from '@renderer/types/sdk' +import { CreateVideoParams, CreateVideoResult } from '@renderer/types/video' import { removeSpecialCharactersForTopicName, uuid } from '@renderer/utils' import { abortCompletion, readyToAbort } from '@renderer/utils/abortController' import { isAbortError } from '@renderer/utils/error' @@ -397,6 +398,11 @@ export async function fetchGenerate({ } } +export async function createVideo(params: CreateVideoParams): Promise { + const ai = new AiProviderNew(params.provider) + return ai.createVideo(params) +} + export function hasApiKey(provider: Provider) { if (!provider) return false if (['ollama', 'lmstudio', 'vertexai', 'cherryai'].includes(provider.id)) return true diff --git a/src/renderer/src/types/video.ts b/src/renderer/src/types/video.ts index 112baf901c..538023e547 100644 --- a/src/renderer/src/types/video.ts +++ b/src/renderer/src/types/video.ts @@ -1,6 +1,30 @@ import OpenAI from '@cherrystudio/openai' -// Only OpenAI for now. -export type CreateVideoParams = { params: OpenAI.VideoCreateParams; options?: OpenAI.RequestOptions } +import { Provider } from './provider' -export type CreateVideoResult = OpenAI.Videos.Video +// Only OpenAI (Responses) is supported for now. +export type VideoEndpointType = 'openai' + +interface CreateVideoBaseParams { + type: VideoEndpointType + provider: Provider +} + +export interface OpenAICreateVideoParams extends CreateVideoBaseParams { + type: 'openai' + params: OpenAI.VideoCreateParams + options?: OpenAI.RequestOptions +} + +export type CreateVideoParams = OpenAICreateVideoParams + +interface CreateVideoBaseResult { + type: VideoEndpointType +} + +export interface OpenAICreateVideoResult extends CreateVideoBaseResult { + type: 'openai' + video: OpenAI.Videos.Video +} + +export type CreateVideoResult = OpenAICreateVideoResult