本文使用Dify v0.12.1版本,主要介绍了通过Dify工作流中的HTTP节点,来调用siliconflow的tencent/HunyuanVideo接口,通过文本来生成视频的具体实现。其中,Dify和HTTP服务都部署在Sealos Cloud平台上面。
HunyuanVideo 是腾讯推出的开源视频生成基础模型,拥有超过 130 亿参数,是目前最大的开源视频生成模型。该模型采用统一的图像和视频生成架构,集成了数据整理、图像-视频联合模型训练和高效基础设施等关键技术。模型使用多模态大语言模型作为文本编码器,通过 3D VAE 进行空间-时间压缩,并提供提示词重写功能。根据专业人工评估结果,HunyuanVideo 在文本对齐、运动质量和视觉质量等方面的表现优于现有最先进的模型。
一.HunyuanVideo接口
1.创建文生视频
通过输入prompt生成视频,该接口返回的是用户当前请求生成的requestId,用户需要通过轮询status接口获取具体的视频链接,生成后的结果在10分钟内有效,请及时取走视频链接。如下所示:
import requests
url = "https://api.siliconflow.cn/v1/video/submit"
payload = {
"model": "tencent/HunyuanVideo",
"prompt": "<string>",
"seed": 123
}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
2.获取视频生成链接
获取用户生成的视频,如下所示:
import requests
url = "https://api.siliconflow.cn/v1/video/status"
payload = {"requestId": "<string>"}
headers = {
"Authorization": "Bearer <token>",
"Content-Type": "application/json"
}
response = requests.request("POST", url, json=payload, headers=headers)
print(response.text)
二.HunyuanVideo接口封装
因为文本生成视频的时间相对还是比较长的,因此通常供应商在设计的时候都会有2个接口,一个接口是得到本次请求requestId,另外一个接口根据requestId来判断视频生成模型的Status,等视频生成完毕后,才会返回视频的URL。因此,不能直接使用Dify工作流中的HTTP节点来调用siliconflow官方接口,而是需要再次封装HunyuanVideo接口。具体HunyuanVideo接口封装也很简单,就是启动一个Flask服务,根据业务逻辑来进行封装。
生成requirements.txt命令,如下所示:
pip freeze > requirements.txt
打包为镜像命令,如下所示:
docker build -t 1000sprites/hunyuanvideo:v1 .
特别说明:如果tag没有dockerhub仓库的用户名(1000sprites需要填写对应本人的),那么Docker上传镜像报错:denied: requested access to the resource is denied。
打包生成镜像1000sprites/hunyuanvideo:v1,如下所示:
点击Push to Hub上传到dockerhub仓库,如下所示:
因为上传到dockerhub仓库的镜像默认是私有的,需要设置为公开,如下所示:
三.Sealos部署HunyuanVideo服务
点击"应用管理",如下所示:
根据需要进行设置,特别是镜像名不能写错,因为要从这个地址拉取镜像,如下所示:
点击"应用管理"查看,当应用的 STATUS 由 Pending 变为 Running,则表明该应用已成功启动。当 STATUS 为 Running,即可直接访问外网地址。如果遇到问题,那么查看Pod日志,如下所示:
三.Dify视频生成工作流
参考文献
[1] 视频生成在线体验:https://cloud.siliconflow.cn/playground/text-to-video
[2] 快速安装Python程序:https://sealos.run/docs/examples/programming-languages/Quick installation of Python Apps
[3] https://hub.docker.com/