@piapi/sdk
Version:
SDK for PIAPI
1 lines • 42.5 kB
Source Map (JSON)
{"version":3,"sources":["../src/core/logger.ts","../src/core/base.ts","../src/services/kling/api.ts","../src/services/kling/tryon.ts","../src/services/kling/effects.ts","../src/services/luma/api.ts","../src/services/faceswap/api.ts","../src/services/hailuo/api.ts","../src/services/aihug/api.ts","../src/services/wanx/api.ts"],"names":["defu"],"mappings":"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","file":"index.mjs","sourcesContent":["export interface Logger {\n debug(message: string, ...args: any[]): void;\n info(message: string, ...args: any[]): void;\n warn(message: string, ...args: any[]): void;\n error(message: string, ...args: any[]): void;\n}\n\nexport class ConsoleLogger implements Logger {\n constructor(private readonly enableDebug: boolean = false) {}\n\n debug(message: string, ...args: any[]): void {\n if (this.enableDebug) {\n console.debug(`[PIAPI Debug] ${message}`, ...args);\n }\n }\n\n info(message: string, ...args: any[]): void {\n console.info(`[PIAPI Info] ${message}`, ...args);\n }\n\n warn(message: string, ...args: any[]): void {\n console.warn(`[PIAPI Warn] ${message}`, ...args);\n }\n\n error(message: string, ...args: any[]): void {\n console.error(`[PIAPI Error] ${message}`, ...args);\n }\n} ","import { CreateTaskRequest, TaskResponse, BaseTaskOutput } from './types';\nimport { Logger, ConsoleLogger } from './logger';\n\nexport class PIAPI {\n protected apiKey: string;\n protected baseUrl: string;\n protected logger: Logger;\n\n constructor(apiKey: string, baseUrl = 'https://api.piapi.ai/api/v1') {\n this.apiKey = apiKey;\n this.baseUrl = baseUrl;\n // 默认使用 ConsoleLogger,不启用调试日志\n this.logger = new ConsoleLogger(false);\n }\n\n // 添加启用/关闭调试日志的方法\n enableDebug(enable: boolean = true): void {\n this.logger = new ConsoleLogger(enable);\n }\n\n protected async request<T>(\n endpoint: string,\n options: RequestInit = {}\n ): Promise<T> {\n this.logger.debug(`Making request to ${endpoint}`, options);\n \n const response = await fetch(`${this.baseUrl}${endpoint}`, {\n ...options,\n headers: {\n 'Content-Type': 'application/json',\n 'X-API-Key': this.apiKey,\n ...options.headers,\n },\n });\n\n const data = await response.json();\n this.logger.debug(`Response received:`, data);\n \n if (!response.ok) {\n // Log the error but don't throw, let the child class decide how to handle it\n this.logger.error(`X-API Error: ${response.statusText}`, data);\n }\n\n return data;\n }\n\n protected async createTask<T extends BaseTaskOutput>(request: CreateTaskRequest): Promise<TaskResponse<T>> {\n this.logger.info(`Creating new task`, { type: request.task_type, model: request.model });\n this.logger.debug('Request payload:', {\n task_type: request.task_type,\n model: request.model,\n input: request.input,\n config: request.config\n });\n \n return this.request<TaskResponse<T>>('/task', {\n method: 'POST',\n body: JSON.stringify(request),\n });\n }\n\n async getTask<T extends BaseTaskOutput>(taskId: string): Promise<TaskResponse<T>> {\n this.logger.debug(`Fetching task status`, { taskId });\n return this.request<TaskResponse<T>>(`/task/${taskId}`);\n }\n\n protected async waitForTask<T extends BaseTaskOutput>(\n taskId: string, \n options: {\n maxAttempts?: number;\n interval?: number;\n } = {}\n ): Promise<TaskResponse<T>> {\n const { maxAttempts = 60, interval = 2000 } = options;\n let attempts = 0;\n\n this.logger.info(`Starting to poll task`, { taskId, maxAttempts, interval });\n\n while (attempts < maxAttempts) {\n try {\n const response = await this.getTask<T>(taskId);\n \n if (response.data.status === 'completed') {\n this.logger.info(`Task completed successfully`, { taskId });\n return response;\n }\n \n if (response.data.status === 'failed') {\n const errorMessage = `Task failed: ${response.data.error?.message || 'Unknown error'}`;\n this.logger.error(errorMessage, { taskId, error: response.data.error });\n throw new Error(errorMessage);\n }\n \n this.logger.debug(`Task still processing`, { taskId, attempt: attempts + 1, status: response.data.status });\n await new Promise(resolve => setTimeout(resolve, interval));\n attempts++;\n } catch (error) {\n this.logger.error(`Error polling task`, { taskId, error });\n if (error instanceof Error) {\n throw new Error(`Failed to poll task: ${error.message}`);\n }\n throw error;\n }\n }\n\n const timeoutError = `Task timeout after ${maxAttempts} attempts`;\n this.logger.error(timeoutError, { taskId });\n throw new Error(timeoutError);\n }\n\n protected async createTaskAndWait<T extends BaseTaskOutput>(\n request: CreateTaskRequest,\n options?: {\n maxAttempts?: number;\n interval?: number;\n }\n ): Promise<TaskResponse<T>> {\n const response = await this.createTask<T>(request);\n return this.waitForTask<T>(response.data.task_id, options);\n }\n} ","import { PIAPI } from '@core/base';\nimport { defu } from 'defu';\nimport { CreateTaskRequest, TaskResponse } from '@core/types';\nimport { Kling } from './types';\n\nexport class KlingAPI extends PIAPI {\n private config: Kling.Config;\n\n constructor(apiKey: string, config: Kling.Config = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n private static DEFAULT_PARAMS = {\n duration: 5 as Kling.Duration,\n aspect_ratio: '16:9' as Kling.AspectRatio,\n mode: \"std\" as Kling.Mode,\n version: \"1.0\" as Kling.Version,\n cfg_scale: 0.5,\n };\n\n private static DEFAULT_CAMERA: Kling.CameraControl = {\n type: \"default\",\n config: {\n horizontal: 0,\n pan: 0,\n roll: 0,\n tilt: 0,\n vertical: 0,\n zoom: 0,\n },\n };\n\n private createKlingRequest(\n params: Kling.TextToVideoParams | Kling.ImageToVideoParams | Kling.ElementsToVideoParams\n ): CreateTaskRequest {\n this.logger.debug('Creating Kling request with params:', params);\n\n const finalInput = defu(params, KlingAPI.DEFAULT_PARAMS);\n\n if (![5, 10].includes(finalInput.duration)) {\n const error = \"Kling duration must be either 5 or 10 seconds\";\n this.logger.error(error, { duration: finalInput.duration });\n throw new Error(error);\n }\n\n const request: CreateTaskRequest = {\n model: \"kling\",\n task_type: \"video_generation\",\n input: finalInput,\n };\n\n // 只有当配置了 webhook 相关信息时才添加 webhook 配置\n if (this.config.webhookUrl && this.config.webhookSecret) {\n request.config = {\n webhook_config: {\n endpoint: this.config.webhookUrl,\n secret: this.config.webhookSecret,\n },\n };\n }\n\n return request;\n }\n\n async textToVideo(params: Kling.TextToVideoParams): Promise<TaskResponse<Kling.TextToVideoOutput>> {\n this.logger.info('Starting text-to-video generation', { prompt: params.prompt });\n const request = this.createKlingRequest(params);\n return this.createTask<Kling.TextToVideoOutput>(request);\n }\n\n async imageToVideo(params: Kling.ImageToVideoParams): Promise<TaskResponse<Kling.ImageToVideoOutput>> {\n const request = this.createKlingRequest(params);\n return this.createTask<Kling.ImageToVideoOutput>(request);\n }\n\n async elementsToVideo(params: Kling.ElementsToVideoParams): Promise<TaskResponse<Kling.ImageToVideoOutput>> {\n if (!params.elements || !Array.isArray(params.elements) || params.elements.length === 0) {\n throw new Error(\"Elements array is required and must not be empty\");\n }\n\n if (params.elements.length > 4) {\n throw new Error(\"Maximum 4 elements are allowed\");\n }\n\n const request = this.createKlingRequest(params);\n return this.createTask<Kling.ImageToVideoOutput>(request);\n }\n\n // 分别为不同类型的任务提供状态查询方法\n async getTextToVideoTask(taskId: string): Promise<TaskResponse<Kling.TextToVideoOutput>> {\n return this.getTask<Kling.TextToVideoOutput>(taskId);\n }\n\n async getImageToVideoTask(taskId: string): Promise<TaskResponse<Kling.ImageToVideoOutput>> {\n return this.getTask<Kling.ImageToVideoOutput>(taskId);\n }\n\n async getElementsToVideoTask(taskId: string): Promise<TaskResponse<Kling.ImageToVideoOutput>> {\n return this.getTask<Kling.ImageToVideoOutput>(taskId);\n }\n} ","import { PIAPI } from '@core/base';\nimport { CreateTaskRequest, TaskResponse } from '@core/types';\nimport { Kling } from './types';\n\nexport class KlingTryonAPI extends PIAPI {\n private config: Kling.Config;\n\n constructor(apiKey: string, config: Kling.Config = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n private static DEFAULT_PARAMS = {\n batch_size: 1,\n };\n\n private createTryonRequest(params: Kling.VirtualTryonParams): CreateTaskRequest {\n // 验证必需参数\n if (!params.model_input) {\n throw new Error(\"model_input is required\");\n }\n\n // 验证互斥参数\n if (params.dress_input && (params.upper_input || params.lower_input)) {\n throw new Error(\"Cannot use dress_input together with upper_input or lower_input\");\n }\n\n if (!params.dress_input && !params.upper_input && !params.lower_input) {\n throw new Error(\"Must provide either dress_input or upper_input/lower_input\");\n }\n\n const request: CreateTaskRequest = {\n model: \"kling\",\n task_type: \"ai_try_on\",\n input: {\n ...KlingTryonAPI.DEFAULT_PARAMS,\n ...params,\n },\n };\n\n if (this.config.webhookUrl && this.config.webhookSecret) {\n request.config = {\n webhook_config: {\n endpoint: this.config.webhookUrl,\n secret: this.config.webhookSecret,\n },\n };\n }\n\n return request;\n }\n\n async tryOn(params: Kling.VirtualTryonParams): Promise<TaskResponse> {\n const request = this.createTryonRequest(params);\n return this.createTask(request);\n }\n\n async tryOnAndWait(params: Kling.VirtualTryonParams, options?: {\n maxAttempts?: number;\n interval?: number;\n }): Promise<TaskResponse> {\n const request = this.createTryonRequest(params);\n return this.createTaskAndWait(request, options);\n }\n}\n","import { PIAPI } from '@core/base';\nimport { CreateTaskRequest, TaskResponse } from '@core/types';\nimport { Kling } from './types';\n\nexport class KlingEffectsAPI extends PIAPI {\n private config: Kling.Config;\n\n constructor(apiKey: string, config: Kling.Config = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n // Effects 配置信息 - 定义每个 effect 的可用模式和是否需要 prompt\n private static EFFECTS_CONFIG: Record<Kling.EffectName, {\n stdMode: boolean;\n proMode: boolean;\n requiresPrompt: boolean;\n }> = {\n squish: { stdMode: true, proMode: false, requiresPrompt: false },\n expansion: { stdMode: true, proMode: false, requiresPrompt: false },\n jellycat_oversea: { stdMode: true, proMode: false, requiresPrompt: false },\n spinoff: { stdMode: false, proMode: true, requiresPrompt: false },\n rocket: { stdMode: true, proMode: true, requiresPrompt: true },\n hearting: { stdMode: true, proMode: true, requiresPrompt: true },\n fighting: { stdMode: true, proMode: true, requiresPrompt: true },\n kissing: { stdMode: true, proMode: true, requiresPrompt: true },\n hugging: { stdMode: true, proMode: true, requiresPrompt: true },\n figure: { stdMode: true, proMode: false, requiresPrompt: false },\n vstack: { stdMode: true, proMode: true, requiresPrompt: false },\n surfing: { stdMode: true, proMode: true, requiresPrompt: false },\n birthday: { stdMode: true, proMode: true, requiresPrompt: true },\n water: { stdMode: true, proMode: true, requiresPrompt: true },\n };\n\n private createEffectsRequest(params: Kling.EffectParams): CreateTaskRequest {\n // 验证必需参数\n if (!params.image_url) {\n throw new Error(\"image_url is required\");\n }\n\n if (!params.effect) {\n throw new Error(\"effect is required\");\n }\n\n // 验证 effect 是否有效\n const effectConfig = KlingEffectsAPI.EFFECTS_CONFIG[params.effect];\n if (!effectConfig) {\n throw new Error(`Invalid effect: ${params.effect}`);\n }\n\n const isProfessionalMode = params.professional_mode || false;\n\n // 验证模式兼容性\n if (isProfessionalMode && !effectConfig.proMode) {\n throw new Error(`Effect \"${params.effect}\" is not available in professional mode`);\n }\n\n if (!isProfessionalMode && !effectConfig.stdMode) {\n throw new Error(`Effect \"${params.effect}\" is only available in professional mode`);\n }\n\n // 验证 prompt 要求\n if (effectConfig.requiresPrompt && !params.prompt) {\n throw new Error(`Effect \"${params.effect}\" requires a prompt`);\n }\n\n const request: CreateTaskRequest = {\n model: \"kling\",\n task_type: \"effects\",\n input: {\n image_url: params.image_url,\n effect: params.effect,\n ...(params.prompt && { prompt: params.prompt }),\n ...(params.professional_mode && { professional_mode: params.professional_mode }),\n },\n };\n\n if (this.config.webhookUrl && this.config.webhookSecret) {\n request.config = {\n webhook_config: {\n endpoint: this.config.webhookUrl,\n secret: this.config.webhookSecret,\n },\n };\n }\n\n return request;\n }\n\n async applyEffect(params: Kling.EffectParams): Promise<TaskResponse<Kling.EffectOutput>> {\n const request = this.createEffectsRequest(params);\n return this.createTask<Kling.EffectOutput>(request);\n }\n\n async applyEffectAndWait(params: Kling.EffectParams, options?: {\n maxAttempts?: number;\n interval?: number;\n }): Promise<TaskResponse<Kling.EffectOutput>> {\n const request = this.createEffectsRequest(params);\n return this.createTaskAndWait<Kling.EffectOutput>(request, options);\n }\n\n // 获取特定 effect 任务状态\n async getEffectTask(taskId: string): Promise<TaskResponse<Kling.EffectOutput>> {\n return this.getTask<Kling.EffectOutput>(taskId);\n }\n\n // 静态方法:获取指定 effect 的配置信息\n static getEffectConfig(effect: Kling.EffectName) {\n return KlingEffectsAPI.EFFECTS_CONFIG[effect];\n }\n\n // 静态方法:获取所有可用的 effects\n static getAvailableEffects(): Kling.EffectName[] {\n return Object.keys(KlingEffectsAPI.EFFECTS_CONFIG) as Kling.EffectName[];\n }\n\n // 静态方法:根据模式筛选可用的 effects\n static getEffectsByMode(professionalMode: boolean = false): Kling.EffectName[] {\n return Object.entries(KlingEffectsAPI.EFFECTS_CONFIG)\n .filter(([_, config]) => professionalMode ? config.proMode : config.stdMode)\n .map(([effect]) => effect as Kling.EffectName);\n }\n} ","import { PIAPI } from '@core/base';\nimport { defu } from 'defu';\nimport { CreateTaskRequest, TaskResponse } from '@core/types';\nimport { LumaBaseParams, LumaConfig } from './types';\n\nexport class LumaAPI extends PIAPI {\n private config: LumaConfig;\n\n constructor(apiKey: string, config: LumaConfig = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n private static DEFAULT_PARAMS = {\n expand_prompt: true,\n loop: true,\n };\n\n private createLumaRequest(params: LumaBaseParams): CreateTaskRequest {\n const finalInput = defu(params, LumaAPI.DEFAULT_PARAMS);\n\n const request: CreateTaskRequest = {\n model: \"luma\",\n task_type: \"video_generation\",\n input: finalInput,\n };\n\n if (this.config.webhookUrl && this.config.webhookSecret) {\n request.config = {\n webhook_config: {\n endpoint: this.config.webhookUrl,\n secret: this.config.webhookSecret,\n },\n };\n }\n\n return request;\n }\n\n async createVideo(params: LumaBaseParams): Promise<TaskResponse> {\n const request = this.createLumaRequest(params);\n return this.createTask(request);\n }\n} ","import { PIAPI } from '@core/base';\nimport { CreateTaskRequest, TaskResponse } from '@core/types';\nimport { FaceSwapConfig, FaceSwapParams, FaceSwapOutput } from './types';\n\nexport class FaceSwapAPI extends PIAPI {\n private config: FaceSwapConfig;\n\n constructor(apiKey: string, config: FaceSwapConfig = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n private createFaceSwapRequest(params: FaceSwapParams): CreateTaskRequest {\n if (!params.target_image) {\n throw new Error(\"target_image is required\");\n }\n if (!params.swap_image) {\n throw new Error(\"swap_image is required\");\n }\n\n const request: CreateTaskRequest = {\n model: \"Qubico/image-toolkit\",\n task_type: \"face-swap\",\n input: params,\n };\n\n return request;\n }\n\n async faceSwap(params: FaceSwapParams): Promise<TaskResponse<FaceSwapOutput>> {\n const request = this.createFaceSwapRequest(params);\n return this.createTask<FaceSwapOutput>(request);\n }\n\n async faceSwapAndWait(params: FaceSwapParams, options?: {\n maxAttempts?: number;\n interval?: number;\n }): Promise<TaskResponse<FaceSwapOutput>> {\n const request = this.createFaceSwapRequest(params);\n return this.createTaskAndWait<FaceSwapOutput>(request, options);\n }\n\n async getFaceSwapTask(taskId: string): Promise<TaskResponse<FaceSwapOutput>> {\n return this.getTask<FaceSwapOutput>(taskId);\n }\n}\n","import { PIAPI } from '@core/base';\nimport { CreateTaskRequest, TaskResponse, HailuoTaskOutput } from '@core/types';\nimport { HailuoConfig, HailuoVideoParams } from './types';\n\nexport class HailuoAPI extends PIAPI {\n private config: HailuoConfig;\n\n constructor(apiKey: string, config: HailuoConfig = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n private validateImageUrl(imageUrl?: string) {\n if (!imageUrl) return;\n\n // Add URL format validation if needed\n const url = new URL(imageUrl);\n const extension = url.pathname.split('.').pop()?.toLowerCase();\n\n if (!extension || !['jpg', 'jpeg', 'png'].includes(extension)) {\n throw new Error('Image URL must point to a JPG or PNG file');\n }\n }\n\n private createHailuoRequest(params: HailuoVideoParams): CreateTaskRequest {\n // Validate prompt length\n if (params.prompt && params.prompt.length > 2000) {\n throw new Error('Prompt must not exceed 2000 characters');\n }\n\n // Validate image URL if present\n this.validateImageUrl(params.image_url);\n\n const request: CreateTaskRequest = {\n model: 'hailuo',\n task_type: 'video_generation',\n input: {\n ...params,\n },\n config: {\n service_mode: 'public',\n },\n };\n\n if (this.config.webhookUrl && this.config.webhookSecret) {\n request.config = {\n ...request.config,\n webhook_config: {\n endpoint: this.config.webhookUrl,\n secret: this.config.webhookSecret,\n },\n };\n }\n\n return request;\n }\n\n async generateVideo(\n params: HailuoVideoParams\n ): Promise<TaskResponse<HailuoTaskOutput>> {\n const request = this.createHailuoRequest(params);\n return this.createTask<HailuoTaskOutput>(request);\n }\n\n async getVideoTask(taskId: string): Promise<TaskResponse<HailuoTaskOutput>> {\n return this.getTask<HailuoTaskOutput>(taskId);\n }\n}\n","import { PIAPI } from '@core/base';\nimport { CreateTaskRequest, TaskResponse } from '@core/types';\nimport { AIHugConfig, AIHugVideoParams, AIHugTaskOutput } from './types';\n\nexport class AIHugAPI extends PIAPI {\n private config: AIHugConfig;\n\n constructor(apiKey: string, config: AIHugConfig = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n private validateImageUrl(imageUrl: string) {\n try {\n new URL(imageUrl);\n } catch (error) {\n throw new Error('Invalid image URL format');\n }\n }\n\n private createAIHugRequest(params: AIHugVideoParams): CreateTaskRequest {\n // Validate image URL\n this.validateImageUrl(params.image_url);\n\n const request: CreateTaskRequest = {\n model: 'Qubico/hug-video',\n task_type: 'image_to_video',\n input: {\n image_url: params.image_url,\n duration: params.duration?.toString() ?? '5',\n },\n config: {\n service_mode: 'public',\n },\n };\n\n if (this.config.webhookUrl && this.config.webhookSecret) {\n request.config = {\n ...request.config,\n webhook_config: {\n endpoint: this.config.webhookUrl,\n secret: this.config.webhookSecret,\n },\n };\n }\n\n return request;\n }\n\n async generateVideo(\n params: AIHugVideoParams\n ): Promise<TaskResponse<AIHugTaskOutput>> {\n const request = this.createAIHugRequest(params);\n return this.createTask<AIHugTaskOutput>(request);\n }\n\n async getVideoTask(taskId: string): Promise<TaskResponse<AIHugTaskOutput>> {\n return this.getTask<AIHugTaskOutput>(taskId);\n }\n} ","import { PIAPI } from '@core/base';\nimport { CreateTaskRequest, TaskResponse } from '@core/types';\nimport { Wanx } from './types';\n\nexport class WanxAPI extends PIAPI {\n private config: Wanx.Config;\n private static readonly MODEL_NAME = 'Qubico/wanx';\n\n constructor(apiKey: string, config: Wanx.Config = {}, baseUrl?: string) {\n super(apiKey, baseUrl);\n this.config = config;\n }\n\n private createWanxRequest(\n taskType: Wanx.TaskType,\n params: Wanx.TextToVideoParams | Wanx.ImageToVideoParams\n ): CreateTaskRequest {\n this.logger.debug('Creating Wanx request with params:', params);\n\n const request: CreateTaskRequest = {\n model: WanxAPI.MODEL_NAME,\n task_type: taskType,\n input: {\n ...params,\n },\n };\n\n // Add webhook configuration if provided\n if (this.config.webhookUrl && this.config.webhookSecret) {\n request.config = {\n webhook_config: {\n endpoint: this.config.webhookUrl,\n secret: this.config.webhookSecret,\n },\n };\n }\n\n return request;\n }\n\n async textToVideo(\n params: Wanx.TextToVideoParams,\n modelSize: '1.3b' | '14b' = '14b'\n ): Promise<TaskResponse<Wanx.VideoTaskOutput>> {\n this.logger.info('Starting Wanx text-to-video generation', { prompt: params.prompt });\n \n const taskType: Wanx.TaskType = modelSize === '1.3b' ? 'txt2video-1.3b' : 'txt2video-14b';\n const request = this.createWanxRequest(taskType, params);\n \n return this.createTask<Wanx.VideoTaskOutput>(request);\n }\n\n async imageToVideo(\n params: Wanx.ImageToVideoParams\n ): Promise<TaskResponse<Wanx.VideoTaskOutput>> {\n this.logger.info('Starting Wanx image-to-video generation', { prompt: params.prompt, image: params.image });\n \n if (!params.image) {\n throw new Error('Image URL is required for image-to-video generation');\n }\n \n const request = this.createWanxRequest('img2video-14b', params);\n \n return this.createTask<Wanx.VideoTaskOutput>(request);\n }\n\n async getVideoTask(taskId: string): Promise<TaskResponse<Wanx.VideoTaskOutput>> {\n return this.getTask<Wanx.VideoTaskOutput>(taskId);\n }\n} "]}