AutoGPT 平台 AI Video Generator 块实战:基于 FAL.ai(Mochi / Luma / Veo3)的文本生成视频
AutoGPT 平台 AI Video Generator 块实战基于 FAL.aiMochi / Luma / Veo3的文本生成视频【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT导读AI Video Generator 是 AutoGPT 平台autogpt_platform内置的 FAL.ai 集成块它把用一句文字描述生成一段 AI 视频封装为一个可直接拖入 Agent 流程图的节点。本文将以官方块文档为骨架结合仓库中的块源码、凭据定义与成本配置系统讲解该块的输入输出契约、三种可选模型Mochi / Luma Dream Machine / Veo3、底层提交—轮询—取回的异步队列机制以及如何将其接入内容创作、可视化与原型设计类 Agent 工作流。读完你可以直接在编辑器里配置它并理解生成结果是如何被持久化到工作区、按秒计费的。一、块是什么一段文字换一段视频按照官方块文档的定义AI Video Generator 是一类使用 FAL.ai 模型生成 AI 视频的块。它的工作方式很直接用自然语言描述你想生成的视频画面模型后台完成生成并返回视频地址。[你的 prompt 文字描述] → AI Video Generator → [video_url 视频地址 logs 进度日志]在源码层面该块对应AIVideoGeneratorBlock类位于 ai_video_generator.py。它继承了平台通用的Block基类拥有全局唯一 ID530cf046-2ce0-4854-ae2c-659db17c7a46并被归入BlockCategory.AIAI 类别class AIVideoGeneratorBlock(Block): def __init__(self): super().__init__( id530cf046-2ce0-4854-ae2c-659db17c7a46, descriptionGenerate videos using FAL AI models., categories{BlockCategory.AI}, ... )从仓库结构看FAL 集成由三个文件组成ai_video_generator.py是核心实现_auth.py负责 FAL API Key 凭据_config.py完成 Provider 注册元数据——本篇文章聚焦第一个文件对应块的用法与原理。二、输入与输出契约在编辑器中需要填什么输入参数Inputs文档给出两个输入字段输入描述类型是否必填prompt描述要生成的视频内容str是model用于生成视频的 FAL 模型fal-ai/mochi-v1 | fal-ai/luma-dream-machine | fal-ai/veo3否prompt必填一句对视频画面的文字描述。例如在源码的占位符与测试样例中使用了A dog running in a field.ai_video_generator.py文档建议用户像写一条狗在田野里奔跑这样具体的描述。model可选FAL 上要调用的视频生成模型。未指定时默认使用fal-ai/mochi-v1。该枚举在源码中被建模为FalModel(str, Enum)ai_video_generator.py共有三个成员与文档表格完全一致class FalModel(str, Enum): MOCHI fal-ai/mochi-v1 LUMA fal-ai/luma-dream-machine VEO3 fal-ai/veo3它们分别对应 FAL.ai 上开放的 Mochi v1、Luma Dream Machine 与 Veo3 三个文本生成视频模型model字段的默认值也指向FalModel.MOCHI。输出结果Outputs输出描述类型error视频生成失败时的错误信息strvideo_url生成视频的 URLstrlogs生成进度日志List[str]三个输出中成功时video_url携带视频地址logs携带长任务进度日志失败时error输出错误信息。源码中的输出定义还给出了各自的 SchemaField 描述ai_video_generator.py并在run()方法中用yield分别产出yield video_url, stored_url # 成功产出持久化后的视频地址 ... yield error, error_message # 失败产出错误信息字符串三、前置条件配置 FAL API Key 凭据与许多平台集成一样使用该块前必须在 AutoGPT 平台中为fal这个 Provider 保存一把 API Key。Provider 标识为fal。在 providers.py 的ProviderName枚举中定义FAL fal。凭据字段由 _auth.py 定义FalCredentials APIKeyCredentials即CredentialsMetaInput限定了 Provider 为fal、凭据类型为api_keyFalCredentialsField()生成的字段描述是 The FAL integration can be used with an API Key.说明该集成仅支持 API Key 一种认证方式不支持 OAuth。Provider 注册元数据见 _config.pyProviderBuilder(fal).with_description(Hosted model inference).with_supported_auth_types(api_key)即托管模型推理 API Key 认证。请求 FAL API 时该块在请求头写入Authorization: Key 你的 API Keyai_video_generator.py。所以接入流程为先在 FAL.ai 开通账号获取 API Key → 在 AutoGPT 平台的凭据管理中添加 fal Provider 的 Key → 在块实例的 credentials 输入中选择该凭据。四、底层原理异步队列式生成流程视频生成通常耗时较长不适合同步等待。因此该块按 FAL 的queue.fal.run 队列接口实现了提交 → 轮询状态 → 取回结果三步异步流程见 generate_video1. 提交生成请求向https://queue.fal.run/{model}POST 提交{prompt: ...}。值得注意的是源码中的模型差异化处理if input_data.model FalModel.VEO3: submit_data[generate_audio] True即当选择fal-ai/veo3时会自动额外开启音频生成generate_audioTrue使视频同时包含声音而 Mochi 与 Luma Dream Machine 只提交 prompt。2. 解析响应并轮询状态提交后从响应中取出三样东西并校验其存在性request_id请求 ID、status_url状态查询地址、response_url结果取回地址。随后进入轮询循环向status_url?logs1发起 GET 请求。其中?logs1会让响应额外携带生成日志块会逐条解析日志中的timestamp/message/level/source字段并用时间戳-消息组合去重、仅处理新增日志避免重复输出——这就是logs输出的数据来源。状态机存在以下几种取值COMPLETED生成完成转而去response_url取最终结果校验result_data[video]是 dict 且含有效url后返回该 URLFAILED抛出RuntimeError携带接口返回的错误详情IN_QUEUE仍在排队读取queue_position队列位置IN_PROGRESS正在生成其他未知状态记录为 unknown 继续等待。3. 指数退避等待两次轮询之间使用指数退避睡眠且单次上限 60 秒、总轮询上限 30 次ai_video_generator.pymax_attempts 30 base_wait_time 5 wait_time min(base_wait_time * (2**attempt), 60) # 5s → 10s → 20s → 40s → 60s(封顶) await asyncio.sleep(wait_time)也就是说轮询等待最长约为前几次 5s/10s/20s/40s 加若干次 60s 封顶总计最多约 30 分钟上限若超过仍未完成块会抛出 Maximum polling attempts reached。整个过程由 async/await 驱动多个视频任务可以并行执行而不阻塞其他节点。五、生成结果的持久化从临时 URL 到工作区文件拿到 FAL 返回的视频 URL 后块并不会直接把它当输出丢出去而是先调用平台工具store_media_file()将媒体落盘到当前用户的 workspaceai_video_generator.pystored_url await store_media_file( fileMediaFileType(video_url), execution_contextexecution_context, return_formatfor_block_output, ) yield video_url, stored_url该工具定义在 backend/util/file.py入参类型MediaFileType见 backend/util/type.py。其意义在于FAL 返回的是临时的远程 URL可能过期写入 workspace 后视频会以workspace://...的形式长期归属用户块的自动化测试断言也印证了这一点——test_output中校验video_url必须以workspace://或data:开头ai_video_generator.py即取决于上下文输出是工作区引用或 data URI用户可以在下游直接引用该工作区文件做二次处理、下载或分发给下游块。六、计费与成本模型按秒计费平台会为块调用计费。FAL 视频生成块的费用登记在 backend/data/block_cost_config.pyAIVideoGeneratorBlock: [ BlockCost( cost_amount15, cost_typeBlockCostType.SECOND, cost_filter{ credentials: { id: fal_credentials.id, provider: fal_credentials.provider, type: fal_credentials.type, } }, ) ],配置代码中的注释清楚解释了定价思路Veo/Seedance 档约 $0.25–0.30/秒、Lite 档约 $0.05–0.10/秒因此按15 积分/秒15 cr/s约 $0.15/s的费率覆盖 Lite 档并留 1.5 倍余量。也就是说该块实际消耗的积分与**生成等待时长秒数**成正比而非与输出内容大小成正比——生成视频越久、占用的队列与算力时间越长费用越高。相关计费逻辑由 block_cost_config_test.py 与 block_usage_cost_test.py 覆盖验证例如 5 秒 walltime 的调用会按 15 cr/s 折算费用。七、典型使用场景文档明确给出三类落地场景与前面的实操能力一一对应内容创作Content Creation为社媒、广告或创意项目批量生成短视频素材。例如写一条产品广告文案 → 生成对应画面视频 → 保存到工作区 → 由发布类块分发。可视化Visualization把抽象的概念、产品形态或故事情节变成看得见的画面。适合非专业视频团队快速表达一个概念长什么样。原型设计Prototyping为创意构思与分镜storyboarding快速产出视频 mockup在动手实拍或精修前低成本验证镜头语言与叙事节奏。将这些场景落到流程图上AI Video Generator 通常放在 LLM 之后作为产出终端其video_url输出可以直接接存储、预览或通知节点。八、可验证性与测试设计该块自带一套完整的自测夹具ai_video_generator.py对阅读源码理解契约很有帮助test_input{prompt: A dog running in a field., model: FalModel.MOCHI, ...}, test_credentialsTEST_CREDENTIALS, # 来自 _auth.py 的 Mock FAL API key test_output[(video_url, lambda x: x.startswith((workspace://, data:)))], test_mock{generate_video: lambda *a, **k: data:video/mp4;base64,AAAA},测试输入使用的正是文档示例 prompt 与默认模型 Mochitest_credentials是 _auth.py 里的 Mock Key避免真实网络请求test_mock将生成方法替换为返回一个合法 data URI从而在无 HTTP 请求的前提下验证整个块的输入输出链。当你自己在平台中新增该块时同样可以先用这类占位描述验证管线通畅再替换为真实 prompt 投入生产。小结AI Video Generator 把文字 → 视频的昂贵、慢速操作收敛成一个对开发者友好的黑盒节点配好 FAL API Key填入 prompt 与模型输出即获得可持久化的视频地址。理解它的队列式异步轮询、Veo3 自动伴音、指数退避与按秒计费规则能帮你更合理地设计长视频生成类 Agent 工作流也便于在失败时定位错误、在成本上做好预估。想要深入其实现细节可继续阅读 块源码、凭据定义 与 成本配置。【免费下载链接】AutoGPTAutoGPT is the vision of accessible AI for everyone, to use and to build on. Our mission is to provide the tools, so that you can focus on what matters.项目地址: https://gitcode.com/GitHub_Trending/au/AutoGPT创作声明:本文部分内容由AI辅助生成(AIGC),仅供参考