/** * Text Video Agent API 使用示例 */ import { TextVideoAgentAPI, textVideoAgentAPI, ImageGenerationParams, VideoGenerationParams, TaskRequest } from '../src/services/textVideoAgentAPI' import { TaskType, AspectRatio, VideoDuration, PRESET_CONFIGS } from '../src/services/textVideoAgentTypes' // ==================== 基础使用示例 ==================== /** * 示例1: 基础健康检查 */ async function example1_HealthCheck() { console.log('=== 健康检查示例 ===') try { const health = await textVideoAgentAPI.healthCheck() console.log('服务状态:', health) const mjHealth = await textVideoAgentAPI.mjHealthCheck() console.log('Midjourney状态:', mjHealth) const jmHealth = await textVideoAgentAPI.jmHealthCheck() console.log('极梦状态:', jmHealth) } catch (error) { console.error('健康检查失败:', error) } } /** * 示例2: 获取示例提示词 */ async function example2_GetSamplePrompts() { console.log('=== 获取示例提示词 ===') try { const prompts = await textVideoAgentAPI.getSamplePrompt(TaskType.VLOG) console.log('VLOG类型示例提示词:', prompts) } catch (error) { console.error('获取提示词失败:', error) } } /** * 示例3: 文件上传 */ async function example3_FileUpload() { console.log('=== 文件上传示例 ===') // 注意:这里需要实际的文件对象 // const fileInput = document.getElementById('fileInput') as HTMLInputElement // const file = fileInput.files?.[0] // 模拟文件对象(实际使用时替换为真实文件) const mockFile = new File(['mock content'], 'test.jpg', { type: 'image/jpeg' }) try { const uploadResult = await textVideoAgentAPI.uploadFile(mockFile) console.log('文件上传结果:', uploadResult) return uploadResult.data // 返回文件URL } catch (error) { console.error('文件上传失败:', error) } } // ==================== 图片生成示例 ==================== /** * 示例4: 基础图片生成 */ async function example4_BasicImageGeneration() { console.log('=== 基础图片生成示例 ===') const params: ImageGenerationParams = { prompt: '一个美丽的女孩在喝茶,温馨的下午时光,自然光线,高质量摄影', max_wait_time: 120, poll_interval: 2 } try { const result = await textVideoAgentAPI.generateImageSync(params) console.log('图片生成结果:', result) return result.data?.image_url } catch (error) { console.error('图片生成失败:', error) } } /** * 示例5: 带参考图片的图片生成 */ async function example5_ImageGenerationWithReference() { console.log('=== 带参考图片的图片生成示例 ===') // 模拟参考图片文件 const referenceImage = new File(['reference'], 'reference.jpg', { type: 'image/jpeg' }) const params: ImageGenerationParams = { prompt: '保持人物特征,改变背景为咖啡厅环境', img_file: referenceImage, ...PRESET_CONFIGS.STANDARD } try { const result = await textVideoAgentAPI.generateImageWithRetry(params, 3) console.log('带参考图片生成结果:', result) return result.data?.image_url } catch (error) { console.error('带参考图片生成失败:', error) } } /** * 示例6: 异步图片生成 */ async function example6_AsyncImageGeneration() { console.log('=== 异步图片生成示例 ===') const prompt = '现代简约风格的室内设计,明亮的客厅' try { // 提交异步任务 const taskResult = await textVideoAgentAPI.generateImageAsync(prompt) const taskId = taskResult.data?.task_id if (!taskId) { throw new Error('未获取到任务ID') } console.log('任务已提交,ID:', taskId) // 轮询任务状态 const finalResult = await textVideoAgentAPI.pollTaskUntilComplete( taskId, 2000, // 2秒轮询间隔 120000, // 2分钟超时 (status) => { console.log('任务状态更新:', status) } ) console.log('异步图片生成完成:', finalResult) return finalResult.data?.image_url } catch (error) { console.error('异步图片生成失败:', error) } } // ==================== 视频生成示例 ==================== /** * 示例7: 基础视频生成 */ async function example7_BasicVideoGeneration() { console.log('=== 基础视频生成示例 ===') // 首先生成一张图片作为视频的基础 const imageUrl = await example4_BasicImageGeneration() if (!imageUrl) { console.error('无法获取基础图片,跳过视频生成') return } const params: VideoGenerationParams = { prompt: '女孩优雅地品茶,轻柔的动作,温馨的氛围', img_url: imageUrl, duration: VideoDuration.MEDIUM, max_wait_time: 300, poll_interval: 5 } try { const result = await textVideoAgentAPI.generateVideoSync(params) console.log('视频生成结果:', result) return result.data?.video_url } catch (error) { console.error('视频生成失败:', error) } } /** * 示例8: 异步视频生成 */ async function example8_AsyncVideoGeneration() { console.log('=== 异步视频生成示例 ===') const params: VideoGenerationParams = { prompt: '城市夜景延时摄影,车流如水,霓虹闪烁', duration: VideoDuration.LONG } try { const taskResult = await textVideoAgentAPI.generateVideoAsync(params) const taskId = taskResult.data?.task_id if (!taskId) { throw new Error('未获取到任务ID') } console.log('视频生成任务已提交,ID:', taskId) // 轮询任务状态 const finalResult = await textVideoAgentAPI.pollTaskUntilComplete( taskId, 5000, // 5秒轮询间隔 600000, // 10分钟超时 (status) => { console.log('视频生成进度:', status) } ) console.log('异步视频生成完成:', finalResult) return finalResult.data?.video_url } catch (error) { console.error('异步视频生成失败:', error) } } // ==================== 高级功能示例 ==================== /** * 示例9: 图片描述功能 */ async function example9_ImageDescription() { console.log('=== 图片描述示例 ===') const imageUrl = 'https://example.com/sample-image.jpg' try { const description = await textVideoAgentAPI.describeImageByUrl({ image_url: imageUrl, max_wait_time: 60 }) console.log('图片描述结果:', description) return description.data?.description } catch (error) { console.error('图片描述失败:', error) } } /** * 示例10: 任务管理 */ async function example10_TaskManagement() { console.log('=== 任务管理示例 ===') const taskRequest: TaskRequest = { task_type: TaskType.VLOG, prompt: '制作一个关于健康生活方式的短视频', ar: AspectRatio.PORTRAIT } try { // 创建任务 const createResult = await textVideoAgentAPI.createTask(taskRequest) const taskId = createResult.data?.task_id if (!taskId) { throw new Error('任务创建失败') } console.log('任务创建成功,ID:', taskId) // 查询任务状态 const statusResult = await textVideoAgentAPI.getTaskStatusAsync(taskId) console.log('任务状态:', statusResult) // 等待任务完成(同步方式) const finalResult = await textVideoAgentAPI.getTaskResultSync(taskId) console.log('任务最终结果:', finalResult) return finalResult } catch (error) { console.error('任务管理失败:', error) } } /** * 示例11: 端到端内容生成 */ async function example11_EndToEndGeneration() { console.log('=== 端到端内容生成示例 ===') try { const result = await textVideoAgentAPI.generateContentEndToEnd( '一个关于咖啡文化的精美内容,展现咖啡师的专业技艺', { taskType: TaskType.VLOG, aspectRatio: AspectRatio.PORTRAIT, videoDuration: VideoDuration.MEDIUM, generateVideo: true, onProgress: (step, progress) => { console.log(`进度更新: ${step} - ${progress}%`) } } ) console.log('端到端生成完成:', result) return result } catch (error) { console.error('端到端生成失败:', error) } } // ==================== 批量处理示例 ==================== /** * 示例12: 批量图片生成 */ async function example12_BatchImageGeneration() { console.log('=== 批量图片生成示例 ===') const prompts = [ '春天的樱花盛开', '夏日的海滩风光', '秋天的枫叶满山', '冬日的雪景如画' ] try { const results = await Promise.allSettled( prompts.map(async (prompt, index) => { const params: ImageGenerationParams = { prompt, ...PRESET_CONFIGS.FAST // 使用快速配置 } console.log(`开始生成图片 ${index + 1}: ${prompt}`) const result = await textVideoAgentAPI.generateImageSync(params) console.log(`图片 ${index + 1} 生成完成`) return { prompt, result: result.data?.image_url, success: result.status } }) ) console.log('批量图片生成结果:', results) return results } catch (error) { console.error('批量图片生成失败:', error) } } // ==================== 主函数 ==================== /** * 运行所有示例 */ async function runAllExamples() { console.log('开始运行 Text Video Agent API 示例...\n') // 基础功能示例 await example1_HealthCheck() await example2_GetSamplePrompts() // 文件操作示例 // await example3_FileUpload() // 需要实际文件 // 图片生成示例 await example4_BasicImageGeneration() // await example5_ImageGenerationWithReference() // 需要实际文件 await example6_AsyncImageGeneration() // 视频生成示例 await example7_BasicVideoGeneration() await example8_AsyncVideoGeneration() // 高级功能示例 await example9_ImageDescription() await example10_TaskManagement() await example11_EndToEndGeneration() // 批量处理示例 await example12_BatchImageGeneration() console.log('\n所有示例运行完成!') } // 导出示例函数 export { example1_HealthCheck, example2_GetSamplePrompts, example3_FileUpload, example4_BasicImageGeneration, example5_ImageGenerationWithReference, example6_AsyncImageGeneration, example7_BasicVideoGeneration, example8_AsyncVideoGeneration, example9_ImageDescription, example10_TaskManagement, example11_EndToEndGeneration, example12_BatchImageGeneration, runAllExamples } // 如果直接运行此文件,执行所有示例 if (require.main === module) { runAllExamples().catch(console.error) }