公司动态
《扣子编程:从零开始搭建智能体》第12章 童言“画”语:视频混剪智能体开发
《扣子编程从零开始搭建智能体》全书案例分享~《扣子编程从零开始搭建智能体 卢欣欣 清华大学出版社》【摘要 书评 试读】- 京东图书【图书推荐】《扣子编程从零开始搭建智能体》-CSDN博客第12章 童言“画”语视频混剪智能体开发针对当前自媒体创作者普遍面临的创意匮乏与制作低效双重困境本章融合大语言模型、批处理、图像生成及扣子官方提供的视频剪辑插件等核心技术设计并实现了“童言‘画’语”视频混剪智能体。该智能体能够根据用户输入的创作主题自动完成文案生成、文生图、图转视频及音视频融合等视频混剪的完整流程全面赋能视频创作的质效提升。12.1 项目背景与需求分析12.1.1业务场景描述基于大模型与智能体架构的视频混剪智能体能够精准理解用户的创作意图根据给定主题自动输出结构化的分镜脚本并借助多模态大模型的协同能力将文字、图像、音频等多源数据无缝流转实现图生视频、智能配乐与音画同步的自动化处理。这种智能化的创作方式大幅降低了创作门槛提高了创作效率使创作者得以从繁重的后期视频编辑中抽身将核心精力重新回归至灵感与创意本身。本章以“童言‘画’语”智能体的开发为例详细介绍视频混剪智能体的实现流程。该案例以孩童视角观察成年人的世界形成极具趣味性的高反差主题运行效果如图12-1所示。图12-1 童言“画”语智能体运行效果生成的视频文件播放效果如图12-2所示。图12-2 生成视频的播放效果12.1.2功能需求分析“童言‘画’语”智能体的用户群体主要是自媒体创作者“低门槛、高效率”的内容创作是该类用户的核心诉求。用户期望仅输入创作主题与背景音乐风格即可自动完成“文案生成—文生图—图转视频—音乐剪辑—音视频合成”的全流程。结合自媒体创作、视频混剪的实际业务需求为该智能体划分以下五大核心模块。文案生成模块生成与创作主题相匹配的文案并处理为与单画面一一对应的文本片段为后续生成分镜描述提供精准文字依据。文生图片模块首先将文本片段转化为详细的分镜描述然后根据分镜描述生成符合要求的图片并整理为后续流程可用的结构化数据。图生视频模块为输入的静态图片设置相应的动画效果和持续时长输出为动态视频片段。音乐剪辑模块根据输入的背景音乐风格搜索匹配的音乐并剪辑为适配视频时长的片段。音视频合成模块将视频片段与背景音乐合成最终视频需确保音画同步与输出质量。12.2 方案选型与工作流设计该工作流的数据流转与业务逻辑设计如下。输入信息整个工作流由“开始”节点触发负责接收用户输入的“创作主题”和“背景音乐风格”两个核心参数为后续的视听创作定下基调。文案拆解与预处理首先由“大模型”节点基于主题进行创意发散生成结构化的分镜文案随后借助“文本处理”节点对长文案进行拆分将其精准切分为与单幅画面对应的短句。这一步至关重要它为后续在图片上精准叠加文字做好了数据准备。视觉生成与格式转换在视觉生产阶段首先由“大模型”节点将分镜短句转化为高质量的图像提示词然后通过“批处理”节点开启高效并行模式。在批处理内部“图像生成”插件根据提示词绘制具体画面最后“代码”节点发挥承上启下的作用对生成的图片URL及预设的动画参数进行重组与格式转换将其转换成符合下游视频接口要求的标准数据结构。视听合成与输出最后进入音视频处理阶段。通过一系列“插件”节点先将静态图片序列转化为动态视频片段同时根据初始设定的风格搜索并剪辑背景音乐最终由合成插件将动态视频流与背景音乐完美融合输出完整的混剪视频。工作流的整体业务流程设计如图12-3所示。图12-3 工作流业务流程图12.3 详细实现与核心配置12.3.1工作流的实现本工作流构建了一条从文本创意到视听成片的端到端自动化生产流水线。整个实现过程以用户输入的主题和背景音乐风格为源头驱动通过数据的有序流转与状态的精准传递将“文案生成、视觉生成、格式适配、视听合成”四大核心阶段紧密串联。在此过程中大模型的创意发散能力、批处理节点的并行计算机制以及插件的媒体处理能力优势互补、紧密衔接成功将原本碎片化、高门槛的视频混剪任务转化为一条稳定、高效且全程无需人工干预的自动化创作闭环。完整的视频混剪工作流如图12-4所示。图12-4 工作流整体预览接下来将详细介绍该工作流的搭建与参数配置。1.创建工作流步骤1新建工作流。 在扣子编程界面的左侧导航栏中单击“资源库”进入资源管理页面。随后单击页面右上角的“ 资源”按钮并在弹出的下拉菜单中选择“工作流”选项如图12-5所示。图12-5 新建工作流步骤2填写工作流信息。 在弹出的创建工作流窗口中准确填写本案例的工作流名称“kid_sight”以及对应的描述信息。确认无误后单击“确认”按钮即可完成工作流的初始化创建如图12-6所示。图12-6 填写工作流信息2.开始节点的配置选中“开始”节点在右侧参数配置面板中添加话题topic和背景音乐风格bgm_style两个输入参数。将这两个参数的类型均设置为“String”并勾选“必填”选项参数配置如图12-7所示。图12-7 开始节点的配置3.生成文案步骤1添加大模型节点。 从“开始”节点的输出端点拖拽出连接线在弹出的节点类型菜单中选择“大模型”节点。步骤2配置输入参数。 选中该节点在右侧的参数配置面板中将默认输入参数“input”修改为“topic”并将其绑定至“开始”节点的“topic”变量从而将用户输入的主题传递给大模型节点具体配置如图12-8所示。。图12-8配置输入参数步骤3编写系统提示词。 为生成文案的“大模型”节点编写如下的系统提示词以明确其角色定位、创作规则及输出规范。步骤4编写用户提示词。 为该节点编写如下的用户提示词将该节点通过入参接收到的创作主题传入大模型。主题{{topic}}4.文案拆分与过滤由于后续需要根据文案逐句生成图片并将文字叠加在画面上因此需要利用标点符号对文案进行拆分处理具体操作步骤如下。步骤1添加文本处理节点。 从生成文案“大模型”节点的右侧输出端点拖拽出连接线在弹出的节点选择菜单中单击组件分类下的“文本处理”节点完成添加操作如图12-9所示。图12-9 添加文本处理节点步骤2选择应用。 选中该节点在右侧属性面板的“选择应用”下拉菜单中选择“字符串分隔”功能如图12-10所示。图12-10 选择模型步骤3配置输入参数。 将上游生成文案“大模型”节点的输出变量“output”绑定为当前节点的输入参数如图12-11所示。图12-11 配置输入参数步骤4配置分隔符。 在分隔符设置列表中依次勾选“换行”“句号”“逗号”“分号”并手动新增“问号”作为分隔条件如图12-12所示。图12-12 配置分隔符步骤5过滤空字符串。 在实际拆分过程中若原始字符串的首尾存在分隔符或字符串内部包含不可见的换行符则分隔结果中往往会产生空字符串进而导致后续图片生成环节出现异常。为解决该问题需在“文本处理”节点的下游添加一个“代码”节点对拆分结果进行空字符串的检测与过滤具体配置为输入参数设置为“文本处理”节点的输出变量“output”输出参数定义为“clean_list”类型选择String数组。实现该过滤功能的Python代码如下。5.生成图片分镜描述步骤1添加大模型节点。 在“文本处理”节点的下游添加一个“大模型”节点用于生成图片分镜描述。步骤2配置输入参数。 选中该节点将默认的输入参数“input”重命名为“text”并引用绑定“代码”节点的输出变量“clean_list”如图12-13所示。图12-13 配置输入参数步骤3编写系统提示词。 为生成分镜描述的“大模型”节点编写如下提示词明确大模型的角色、任务、视觉与人物规范、创作逻辑和输出格式。步骤5编写用户提示词。 为该节点编写用户提示词将文案传入大模型节点。用户提供文案{{text}}步骤6配置输出参数。 修改该节点的默认输出参数“output”为“promptList”类型选择“Array”下的“String”如图12-14所示。图12-14 配置输出参数6.批量生成图片步骤1添加批处理节点。 在生成图片分镜描述的“大模型”节点下游添加一个“批处理”节点用于批量生成图片。步骤2设置循环条件。 选中“批处理”节点在右侧属性面板的循环设置中将“并行运行数量”设为“3”“批处理次数上限”设为“100”如图12-15所示。图12-15 配置循环设置步骤3设置批处理的输入参数。 为“批处理”节点添加以下两个输入参数。promptList分镜描述数组绑定上游生成分镜描述“大模型节点”的输出变量“promptList”。text拆分后的文案内容数组绑定上游“代码”节点的输出变量“clean_list”。该节点的输入配置如图12-16所示。图12-16 批处理节点的输入参数配置步骤4添加批处理体。 选中“批处理体”单击画布底部工具栏中“ 添加节点”按钮在弹出的菜单中选择“图像生成”节点如图12-16所示。然后将“图像生成”节点的输入端点与“批处理体”的左侧入口相连输出端点与右侧出口相连构成完整的批处理闭环。图12-17 添加图像生成节点步骤5设置模型。 选中“图像生成”节点在右侧参数配置面板中模型选择“Seedream 5.0 Lite”图片比例选择宽高比为“9:16”其他参数保持默认即可如图12-18所示。图12-18 模型设置步骤6设置节点输入参数。 为“图像生成”节点设置“promptList”和“text”两个输入参数并分别将其绑定至“批处理”节点默认迭代变量“Item”下对应的“promptList”与“text”字段如图12-19所示。图12-19 图像生成节点的输入参数配置步骤7编写生成提示词。 为“图像生成”节点填入以下提示词引导模型按要求进行图片创作。画面上方留白上方写“{{text}}”的文字内容其他严格按照分镜描述{{prompt}}生成图片。步骤8配置批处理输出参数。 返回外层选中“批处理”节点将其输出变量设置为内部“图像生成”节点返回的图像数据“data”如图12-20所示。图12-20 批处理节点的输出配置7.数据格式转换与时长计算生成图片的“批处理”节点返回的是仅包含图片地址的数组即“图像”类型数组其数据格式如下。[https://s.coze.cn/t/BcfTMAy6W0E/,https://s.coze.cn/t/_Ro4mMuABag/,https://s.coze.cn/t/8IQCWtUhpdk/,https://s.coze.cn/t/MDW-wzwelLw/,https://s.coze.cn/t/btDZJTFg5Z0/,https://s.coze.cn/t/CbvPDkqVjlQ/]然而后续的“图生视频”插件要求输入的是对象数组每个对象需包含图片地址、播放时长、动画类型及动画起止时间其数据格式如下。[{source: https://s.coze.cn/t/BcfTMAy6W0E/,duration: 3,animation_type: move_up,animation_in:0,animation_out:2},……]因此接下来通过代码实现数据格式的转换。同时为确保画面与后续音频的时长一致还需在此阶段计算出所有图片的总播放时长以便为音频剪辑提供依据。具体操作步骤如下。步骤1添加代码节点。 在生成图片的“批处理”节点下游添加一个“代码”节点用于执行格式转换与时长计算逻辑。步骤2配置输入参数。 选中该节点在右侧参数配置面板中将默认输入参数名称修改为“pics”并将其绑定至上游“批处理”节点的输出变量“output”如图12-21所示。图12-21 输入参数配置步骤3编写处理代码。 在右侧参数配置面板中单击“在IDE中编辑”按钮进入代码编辑模式并选择“Python”作为编程语言。编写如下代码实现将字符串数组转为对象数组并自动计算总播放时长最终返回转换后的数据image_list和总时长total_duration。步骤4设置输出参数。 为“代码”节点设置两个输出参数如图12-22所示。image_list返回图片信息类型为对象数组。total_duration返回总播放时长类型为字符串。图12-22 输出参数配置输出变量的名称必须与代码中return字典的键名保持完全一致。8.图片转视频步骤1添加视频剪辑插件。 在“代码”节点的下游添加一个“插件”节点。在插件市场中搜索“视频”关键字找到官方提供的“视频剪辑工具”插件如图12-23所示。展开该插件详情单击“image_to_video”接口对应的“添加”按钮完成节点的添加如图12-24所示。图12-23 视频剪辑工具插件图12-24 添加image_to_video接口步骤2配置输入参数。 选中该插件节点在右侧参数配置面板中将输入参数“images”绑定至“代码”节点的输出变量“image_list”其余参数暂不配置如图12-25所示。图12-25 输入参数配置单击插件右上角的更多图标“…”在弹出的菜单中选择“插件详情”可查看该插件对应的介绍及文档了解其入参、出参的详细介绍。9.制作背景音乐步骤1添加背景音乐库插件。 在“视频剪辑工具 ”插件的下游添加一个“插件”节点。在插件市场中搜索“背景音乐库”关键字展开对应的插件单击“search_songs”对应的“添加”按钮完成添加如图12-26所示。图12-26 添加背景音乐库插件步骤2配置输入参数。 选中该节点在右侧参数配置面板中将输入参数“keyword”绑定至“开始”节点中设置的背景音乐风格变量“bgm_style”如图12-27所示。图12-27 配置输入参数步骤3剪辑背景音乐。 由于搜索到的背景音乐时长往往大于视频总时长需对其进行剪辑。继续添加“视频剪辑工具”插件中的“video_trim”接口添加方法同图片转视频中的步骤1用于截取音频如图12-28所示。图12-28 添加video_trim接口步骤4配置裁剪参数。 选中“video_trim”接口节点将输入参数“video”绑定至“背景音乐库”插件的输出参数“url”将“end_time”参数绑定至“代码”节点的输出参数“total_duration”以实现音频与画面的时长对齐其余参数暂不配置如图12-29所示。图12-29 音视频剪辑节点的输入配置10.音视频合成步骤1添加音视频合成插件。 在 video_trim音频裁剪节点的下游添加“视频剪辑工具”插件中的“compile_video_audio”接口添加方法同前用于将前面生成的视频文件与背景音乐文件合成为最终视频如图12-30所示。图12-30 添加compile_video_audio接口步骤2配置输入参数。 选中该节点将输入参数“audio”绑定至“剪辑背景音乐”插件的输出参数“url”将“video”参数绑定至“图片转视频”插件节点的输出参数“url”其余参数暂不配置如图12-31所示。图12-31 节点输入配置11.配置结束节点选中“结束”节点将默认输出变量“output”绑定至“compile_video_audio”节点的输出变量“url”以将最终合成的视频地址作为工作流结果返回如图12-32所示。图12-32 结束节点的输出配置12.测试、发布工作流步骤1试运行。 单击画布底部工具栏中的“试运行”按钮在右侧弹出的配置面板中将背景音乐风格填写为“轻音乐”话题主题填写为“大人说谎”。然后单击面板底部的“试运行”按钮启动执行如图12-33所示。。图12-33 试运行步骤2验证执行状态。 观察工作流的执行路径及各节点运行状态确认无报错且顺利执行完毕运行结果如图12-34所示。图12-34 工作流执行结果步骤3查看生成视频。 单击输出结果中返回的链接下载并播放生成的视频文件部分播放效果如图12-35所示。图12-35 视频效果步骤5发布上线。 确认各项测试无误后单击界面右上角的“发布”按钮将工作流发布上线以便后续在智能体中正式调用。12.3.2创建智能体步骤1进入智能体创建入口。 返回扣子编程首页在页面右侧找到“低代码模式”分类单击其下方的“智能体开发”选项即可进入智能体创建页面如图12-36所示。图12-36 创建智能体步骤2填写智能体信息。 在弹出的窗口中输入智能体名称及功能描述。单击默认图标右侧的“生成”按钮系统将自动生成一个专属图标。确认信息无误后单击“确认”按钮即可完成智能体的创建如图12-37所示。图12-37 创建智能体12.3.3添加工作流步骤1进入添加工作流入口。 在智能体编排页面中找到“技能”区域单击“工作流”右侧的“”按钮即可进入添加工作流界面如图12-38所示。图12-38 添加工作流步骤2选择工作流。 在弹出的“添加工作流”窗口中找到12.3.1节中发布的工作流“kid_sight”单击其右侧的“添加”按钮将该工作流挂载到当前智能体中。如图12-39所示。图12-39 选择工作流12.3.4设置人设和回复逻辑童言“画”语智能体采用工作流驱动的智能体架构智能体只负责与用户进行交互从交互内容中提取话题主题和背景音乐风格两个参数如果参数输入不完整则引导用户输入。而后端的生成文案、文案生图、图生视频、背景音乐剪辑、音视频合成全部由工作流来完成。为确保前端交互体验的流畅性与下游创作工作流的高效衔接给智能体设置以下的人设和回复逻辑。12.3.5设置开场白为降低用户的学习成本使其初次进入即可轻松上手在智能体编排页面的“对话体验”模块中完成开场白文案与预置问题的设置如图12-40所示。图12-40 设置开场白文案和预置问题12.4 测试与发布完成以上各项配置后为确保智能体的交付质量进行系统功能测试。在“预览与调试”窗口中发送“你好啊”进行智能体引导测试测试结果如图12-41所示。图12-41 智能体引导测试按照系统引导提示输入主题和背景音乐风格后智能体开始调用已绑定的工作流。测试结果如图12-42所示。图12-42 输入完整信息后的测试结果经过多轮测试无误后单击页面右上角的“发布”按钮按照系统引导完成智能体的发布与部署复制并分享智能体链接给用户使用。12.5 拓展提升增加朗读音频前文构建的视频混剪智能体仅添加了背景音乐本节将在此基础上进一步引入朗读音频效果。其实现思路为在批处理生成图片阶段同步批量生成各段文本对应的朗读音频并根据每段音频的时长精准设定对应图片的过渡时长以确保音画严格同步。在混剪阶段首先需将各段分散的朗读音频拼接为一份完整的音频文件随后将其与背景音乐进行叠加处理生成最终的完整音频最后将该音频与生成的图片视频进行合成。优化后的工作流全貌如图12-43所示。图12-43 增加朗读音频后的工作流全貌1.合成语音2.修改原转换图片数据格式的代码节点3.拼接朗读音频4.音频叠加5.音视频合成拓展提升部分的详细实现过程以及电子版提示词和代码请查看图书《扣子编程从零开始搭建智能体》清华大学出版社。京东购买链接https://item.jd.com/14761851.html京东购买链接https://item.jd.com/14761851.html12.6 本章小结本章以“童言‘画’语”视频混剪智能体为例详细拆解了从文案生成、文生图片、图转视频到音乐剪辑及音视频合成的五大功能模块的实现过程。通过本章的学习读者可理解并掌握视频混剪的一般流程和关键技术。随着大模型多模态理解与生成能力的持续演进视频混剪智能体将会展现出更广阔的应用前景。