目前的情况可以分两层来看:模型是否支持视频 和 Dify 前端/接口是否接受视频文件类型。
首先,关于文件上传是否支持,要看 features 是否选择了视频类型的 files。
其次,对于 GLM 来说,根据官方手册,示范代码如下:
#视频理解示例、上传视频URL
from zhipuai import ZhipuAI
client = ZhipuAI(api_key="YOUR API KEY") # 填写您自己的APIKey
response = client.chat.completions.create(
model="glm-4v-plus-0111", # 填写需要调用的模型名称
messages=[
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url" : "https://sfile.chatglm.cn/testpath/video/xxxxx.mp4"
}
},
{
"type": "text",
"text": "请仔细描述这个视频"
}
]
}
]
)
print(response.choices[0].message)
可知对于 GLM 模型,用户只需正确传入视频 url 即可分析视频。
@Abyssedge 使用的是 Qwen 系列的模型,根据 Qwen 官方 API 文档:
通义千问VL 模型通过从视频中提取帧序列进行内容分析,抽帧的频率决定了模型分析的精细度,不同 SDK 抽帧频率不同,模型支持通过
fps参数来控制抽帧频率(每隔 fps1秒抽取一帧,取值范围为[0.1, 10],默认值为2.0)。建议为高速运动场景设置较高fps,为静态或长视频设置较低fps。
import dashscope
import os
# 以下为新加坡地域base_url,若使用弗吉尼亚地域模型,需要将base_url换成 https://dashscope-us.aliyuncs.com/api/v1
# 若使用北京地域的模型,需将base_url替换为:https://dashscope.aliyuncs.com/api/v1
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{"role": "user",
"content": [
# fps 可参数控制视频抽帧频率,表示每隔 1/fps 秒抽取一帧,完整用法请参见:https://www.alibabacloud.com/help/zh/model-studio/use-qwen-by-calling-api?#2ed5ee7377fum
{"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4","fps":2},
{"text": "这段视频的内容是什么?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# 各地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 若没有配置环境变量, 请用百炼API Key将下行替换为: api_key ="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3-vl-plus',
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])
另一种写法,根据 Alibaba 官方手册:
import os
# dashscope版本需要不低于1.20.10
import dashscope
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{"role": "user",
"content": [
# 若模型属于Qwen2.5-VL系列且传入的是图像列表时,可设置fps参数,表示图像列表是由原视频每隔 1/fps 秒抽取的
{"video":["https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/xzsgiz/football1.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/tdescd/football2.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/zefdja/football3.jpg",
"https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241108/aedbqh/football4.jpg"],
"fps":2},
{"text": "描述这个视频的具体过程"}]}]
response = dashscope.MultiModalConversation.call(
# 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
# 新加坡/弗吉尼亚和北京地域的API Key不同。获取API Key:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen2.5-vl-72b-instruct', # 此处以qwen2.5-vl-72b-instruct为例,可按需更换模型名称。模型列表:https://www.alibabacloud.com/help/zh/model-studio/models
messages=messages
)
print(response["output"]["choices"][0]["message"].content[0]["text"])
根据截图可知,关键不在于用户使用的是 GLM 系列还是 Qwen 系列,而是因为用户使用的是 SiliconFlow Plugin,根据 SiliconFlow 官方文档,其 API 对于视觉的处理方式如下:
2. 使用方式
对于 VLM 模型,可在调用**
/chat/completions接口时,构造包含图片 url或base64 编码图片的message消息内容进行调用。通过detail**参数控制对图像的预处理方式。2.1 关于图片细节控制参数说明
SiliconFlow 提供**
low,high,auto三个detail参数选项。 对于目前支持的模型,detail不指定或指定为high时会采用high(“高分辨率”)模式,而指定为low或者auto时会采用low**(“低分辨率”)模式。
4. 视觉输入内容计费方式
对于图片等视觉输入内容,模型会将其转化为 tokens,与文本信息一并作为模型输出的上下文信息,因此也会一并进行计费。不同模型的视觉内容转化方式不同,以下为目前支持模型的转化方式。
4.1 Qwen 系列
规则:
Qwen最高支持像素是3584 * 3584= 12845056,最低支持像素是**56 * 56 = 3136,会对先对每张图片长短边均放缩至 28 的倍数(h * 28) * (w * 28)**。如果不在最小像素和最大像素区间内,再等比缩放至该区间。
detail=low时将所有图片 resize 成448 * 448尺寸,最终对应256 tokens;
detail=high时等比缩放,首先将长宽按照最近的28倍数向上取整,然后再等比缩放至像素区间(3136, 12845056),并保证长宽均为28整数倍。示例:
224 * 448和1024 x 1024和3172 x 4096的图片,选择detail=low时,均消耗256 tokens;
224 * 448的图片,选择detail=high时,因为224 * 448在像素区间内,且长宽均为28倍数,消耗(224/28) * (448/28) = 8 * 16 = 128 tokens;
1024 * 1024的图片,选择detail=high时,将长宽按照28的倍数向上取整至1036 * 1036,该数值在像素区间内,消耗(1036/28) * (1036/28) = 1369 tokens;
3172 * 4096的图片,选择detail=high时,将长宽按照28的倍数向上取整至3192 * 4116,该值超过最大像素,再将长宽等比例缩小至3136 * 4060,消耗(3136/28) * (4060/28) = 16240 tokens。
官方接口文档中并未提及对于视频的处理,可见本主题的关键问题不在于 Dify,而在于 SiliconFlow 本身不支持视频处理。这也是为什么 @Abyssedge 提到手动做了抽帧处理。
解决方法是:
- 等待 SiliconFlow 官方支持视频流的处理,并通知 Dify 维护 SiliconFlow Plugin 作者更新插件。
- 更换为 Dify Tongyi Plugin,使用阿里云百炼平台 API Key

