Skip to main content

1. 概述

多模态模型是能够同时处理多种模态信息(文本、图像、音频、视频)的大语言模型。SiliconCloud 提供了多个支持不同模态组合的强大模型,能够:
  1. 视觉理解:理解图片内容、OCR、图像描述
  2. 视频分析:提取视频帧、理解视频内容、动作识别
  3. 音频处理:语音识别、音频内容分析
  4. 多模态融合:同时处理多种媒体类型的综合分析

2. 支持模型概览

模型系列视觉输入音频输入视频输入主要特点
Qwen3-Omni 系列全面多模态支持,音视频同时处理
Qwen3-VL 系列视觉+视频理解,无音频支持
GLM 系列仅视觉理解
Qwen2-VL 系列仅视觉理解
DeepseekVL2 系列仅视觉理解
Step3仅视觉理解
通过模型广场查看当前支持的多模态模型列表。 支持的模型可能发生调整,请以平台实际展示为准。

3. 使用方式

所有多模态模型都通过 /chat/completions 接口调用,使用标准化的 messages 格式,其中 content 可以包含不同类型的内容部分。

3.1 基本消息格式

{
    "role": "user",
    "content": [
        {
            "type": "text" | "image_url" | "audio_url" | "video_url",
            "[type]_url": {
                // 对应类型的配置
            }
        }
    ]
}

3.2 通用参数说明

图像参数 (image_url)

  • url: 图像URL或base64编码数据
  • detail: 细节级别 (auto, low, high)

视频参数 (video_url)

  • url: 视频URL或base64编码数据
  • detail: 细节级别 (auto, low, high)
  • max_frames: 最大提取帧数
  • fps: 每秒提取帧数,最终帧数为 min(fps × T, max_frames)

音频参数 (audio_url)

  • url: 音频 URL 或 base64 编码数据

4. 使用示例

4.1 视觉理解

图像分析

{
    "role": "user",
    "content": [
        {
            "type": "image_url",
            "image_url": {
                "url": "https://example.com/image.jpg",
                "detail": "high"
            }
        },
        {
            "type": "text",
            "text": "描述这张图片的内容"
        }
    ]
}

多图对比

{
    "role": "user",
    "content": [
        {
            "type": "image_url",
            "image_url": {"url": "https://example.com/image1.jpg"}
        },
        {
            "type": "image_url",
            "image_url": {"url": "https://example.com/image2.jpg"}
        },
        {
            "type": "text",
            "text": "比较这两张图片的相同点和不同点"
        }
    ]
}

4.2 视频理解

基础视频分析

{
    "role": "user",
    "content": [
        {
            "type": "video_url",
            "video_url": {
                "url": "https://example.com/video.mp4",
                "detail": "high",
                "max_frames": 16,
                "fps": 1
            }
        },
        {
            "type": "text",
            "text": "总结这个视频的主要内容"
        }
    ]
}

多模态分析(视频 + 图片)

{
    "role": "user",
    "content": [
        {
            "type": "video_url",
            "video_url": {
                "url": "https://example.com/video.mp4",
                "detail": "high",
                "max_frames": 16,
                "fps": 1
            }
        },
        {
            "type": "image_url",
            "image_url": {"url": "https://example.com/thumbnail.jpg"}
        },
        {
            "type": "text",
            "text": "基于视频和缩略图,分析这个视频的主题和受众群体"
        }
    ]
}

4.3 音频理解

音频内容分析

{
    "role": "user",
    "content": [
        {
            "type": "audio_url",
            "audio_url": {
                "url": "https://example.com/audio.mp3"
            }
        },
        {
            "type": "text",
            "text": "转录这个音频的内容"
        }
    ]
}

4.4 全模态分析

音视频综合分析

{
    "role": "user",
    "content": [
        {
            "type": "video_url",
            "video_url": {
                "url": "https://example.com/video.mp4",
                "detail": "high",
                "max_frames": 16,
                "fps": 1
            }
        },
        {
            "type": "audio_url",
            "audio_url": {
                "url": "https://example.com/audio.mp3"
            }
        },
        {
            "type": "text",
            "text": "对比分析视频画面和音频内容,找出它们之间的联系"
        }
    ]
}

5. Python SDK 使用示例

5.1 视觉识别

from openai import OpenAI

client = OpenAI(
    api_key="your-api-key",
    base_url="https://api.siliconflow.cn/v1"
)

response = client.chat.completions.create(
    model="Qwen/Qwen2.5-VL-72B-Instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://example.com/tech-conference.jpg"
                    }
                },
                {
                    "type": "text",
                    "text": "这张图片显示的是什么样的科技会议?分析参会者的表情和氛围"
                }
            ]
        }
    ]
)

print(response.choices[0].message.content)

5.2 视频分析

response = client.chat.completions.create(
    model="Qwen/Qwen3-Omni-30B-A3B-Instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "video_url",
                    "video_url": {
                        "url": "https://example.com/product-demo.mp4",
                        "detail": "high",
                        "max_frames": 16,
                        "fps": 1
                    }
                },
                {
                    "type": "text",
                    "text": "这个产品演示视频展示了哪些核心功能?目标用户群体可能是什么?"
                }
            ]
        }
    ],
    stream=True
)

# 流式输出
for chunk in response:
    content = chunk.choices[0].delta.content
    if content:
        print(content, end='', flush=True)

5.3 音频理解

response = client.chat.completions.create(
    model="Qwen/Qwen3-Omni-30B-A3B-Instruct",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "audio_url",
                    "audio_url": {
                        "url": "data:audio/wav;base64,UklGRnoGAABXQVZFZm10IBAAAAABAAEA..."
                    }
                },
                {
                    "type": "text",
                    "text": "这段音频的主要内容和情感基调是什么?"
                }
            ]
        }
    ]
)

6. 计费说明

6.1 视觉输入计费

不同模型的视觉内容转换方式不同。下表对比展示核心规则与计费口径:
模型系列尺寸/像素约束detail=lowdetail=highToken 计算方式
Qwen 系列最小 56×56,最大 3584×3584;按 28 的倍数取整到区间统一 448×448,≈256 token长宽先上取整到 28 的倍数,再等比裁剪到区间ceil(h/28) * ceil(w/28)
DeepseekVL2 系列384×384 为基块;1 ≤ h*w ≤ 9(h,w) 块数统一 384×384421 token(h*384, w*384) 放缩,选择有效像素最大且无效像素更小的组合(h*w + 1) * 196 + (w + 1) * 14 + 1
GLM 系列最小 28×28;按 28 的倍数取整到区间;若小于 112×112 或超出上限则回压到区间统一 448×448,≈256 token长宽取最近 28 倍数并限制在 (12544, 4816894) 像素区间(h/28) * (w/28)
说明:
  • h,w 为最终用于计费的像素尺寸;表中 token 为视觉输入侧的估算,实际账单以请求时的最终转换结果为准。

6.2 视频输入计费

视频内容根据提取的帧数转换为 tokens:
  • 最终帧数 = min(fps × 视频时长, max_frames)
  • 每帧图像按对应视觉模型的标准转换

6.3 音频输入计费

音频内容转换为 tokens 进行计费,对于 Qwen3 omni 多模态模型,输入音频每秒对应 13 个 token, 如 22.5s 音频对应 292 个 token。

7. 最佳实践

7.1 性能优化

  1. 视频时长控制:建议 30 秒内以获得最佳分析效果
  2. 帧数选择max_frames=8-16fps=1-2 通常足够
  3. 图像尺寸:根据模型推荐尺寸进行预处理

7.2 使用建议

  1. 逐步分析:复杂任务分解为多个简单步骤
  2. 多模态组合:充分利用不同类型媒体的优势
  3. 错误处理:检查媒体文件可访问性和格式兼容性

7.3 常见问题

Q: 文件大小限制? A: 建议音频视频文件保持适中大小,超大文件可能影响性能 Q: 可以同时处理多少个媒体文件? A: 可以在同一请求中包含多个媒体 URL,但建议控制总体数据量 Q: 帧提取策略? A: 对于长视频,合理设置fpsmax_frames参数以获得最优的分析效果和成本平衡
I