对象存储

  • 对象存储 > 最佳实践 > 使用大模型视觉理解对象存储 Kodo

    使用大模型视觉理解对象存储 Kodo

    最近更新时间: 2025-09-30 18:02:24

    视觉理解

    多模态大模型具备视觉理解能力,支持对您传入的图片或视频进行理解,大模型可以针对这些视觉信息完成如识别、描述等视觉相关任务并进行回答。
    七牛云针对对象存储 Kodo 的大模型应用,支持您直接对空间中的资源进行视觉理解,避免额外的流量消耗。
    本文向您介绍了如何通过调用大模型 API 来识别存储在对象存储 Kodo 的图片和视频里的信息。

    应用场景

    使用不同的提示词模型表现效果不同,建议您根据实际的业务需求选择应用示例的提示词。

    • 图像问答:描述图像中的内容或者对齐进行分类打标,如识别人物、地点、车辆、宠物等。
    • 视频理解:分析视频内容,如生成关键时间段的视频内容摘要,或对具体事件进行定位。
    • 文字识别与信息抽取:识别图像中的文字、公式,或者抽取票据、证件、表单中的信息并输出。
    • 输出多种语言:支持的语言共11种,分别为中文、英语、日语、韩语、阿拉伯语、越南语、法语、德语、意大利语、西班牙语和俄语。

    七牛云针对对象存储的大模型使用优势

    • 便捷:无需一一翻阅存储对象,使用大模型直接理解并描述内容,获取简明扼要的资源信息。
    • 增效:无需单独对对象做转格式、截帧等处理,大模型支持直接理解携带数据处理命令的 URL
    • 降本:直接通过内网就近处理,减少响应时间、避免产生外网流量

    模型说明

    模型名称 模式 输入 输出 上下文长度
    kvl-qwen2.5-vl-7b 仅非思考模式 image、video text 128K Token

    计量计费

    模型名称 输入价格 输出价格 免费额度 用量统计
    kvl-qwen2.5-vl-7b 0.002 元/K Token 0.005 元/K Token 300万 Token 用量详情

    快速使用

    前提条件

    图片理解

    HTTP调用示例

    # 调用推理 API
    export QINIU_BASE_URL="https://openai-cn-east-1.qiniu.com/v1/chat/completions"
    export QINIU_API_KEY="<七牛云 AI API KEY>"
    curl "$QINIU_BASE_URL/chat/completions" \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $QINIU_API_KEY" \
        -d '{
          "model": "kvl-qwen2.5-vl-7b",
          "messages": [
            { "role": "user",
              "content": [
                { "type": "image", "image_url": { "url": "kodo://<bucket>/<key>" } },
                { "type": "text", "text": "用一句话描述图片中的内容" }
              ]
            }
          ]
        }'
    

    Python OpenAI SDK调用示例

    client = OpenAI(
        base_url="https://openai-cn-east-1.qiniu.com/v1/chat/completions",
        api_key="your qiniu_ai_api_key"
    )
    
    response = client.chat.completions.create(
        model="kvl-qwen2.5-vl-7b",
        messages=[
            {"role": "user",
              "content": [
                  {"type": "image", "image_url": {"url": "kodo://<bucket>/<key>"}},
                  {"type": "text", "text": "用一句话描述图片中的内容"}
              ]
             }
        ],
    )
    
    content = response.choices[0].message.content
    print(content)
    
    参数 说明
    image_url.url 传入的图片地址,仅限对象存储 Kodo 中的资源。格式如下:
    - 直接使用空间中的对象 kodo://<bucket>/<object>
    - 使用空间中携带数据处理命令的对象 kodo://<bucket>/<object>?<fop>

    视频理解

    HTTP调用示例

    # 调用推理 API
    export QINIU_BASE_URL="https://openai-cn-east-1.qiniu.com/v1/chat/completions"
    export QINIU_API_KEY="<七牛云 AI API KEY>"
    curl "$QINIU_BASE_URL/chat/completions" \
        -H "Content-Type: application/json" \
        -H "Authorization: Bearer $QINIU_API_KEY" \
        -d '{
          "model": "kvl-qwen2.5-vl-7b",
          "messages": [
            { "role": "user",
              "content": [
                { "type": "video",
                  "video_url": { "url": "kodo://<bucket>/<key>" },
                  "fps": 0.5,
                  "start": 0.0,
                  "to": 5.0
                },
                { "type": "text", "text": "用一句话描述图片中的内容" }
              ]
            }
          ]
        }'
    

    Python OpenAI SDK调用示例

    client = OpenAI(
        base_url="https://openai-cn-east-1.qiniu.com/v1/chat/completions",
        api_key="your qiniu_ai_api_key"
    )
    
    response = client.chat.completions.create(
        model="kvl-qwen2.5-vl-7b",
        messages=[
            {"role": "user",
              "content": [
                  {"type": "video",
                   "video_url": {"url": "kodo://<bucket>/<key>"},
                   "fps": 0.5,
                   "start": 0.0,
                   "to": 5.0
                   },
                  {"type": "text", "text": "用一句话描述图片中的内容"}
              ]
             }
        ],
    )
    
    content = response.choices[0].message.content
    print(content)
    
    参数 说明
    video_url.url 传入的视频地址 URL,仅限对象存储 Kodo 中的资源。格式如下:
    -直接使用空间中的对象 kodo://<bucket>/<object>
    - 使用空间中携带数据处理命令的对象 kodo://<bucket>/<object>?<fop>
    fps 视频截帧频率,即每秒截几帧。可选参数,取值范围 (0.1, 10),默认值为1.0
    start 视频片段开始时间,单位秒。可选参数,默认从视频开头。
    to 视频片段结束时间,单位秒。可选参数,默认到视频结尾。

    应用示例

    物体识别与定位

    • 模型支持识别图片或视频中的物体,常用于人物、车、宠物的识别场景。

    输入示例

    • 图片:
    • 提示词:定位每一只猫的位置,并描述其各自的特征,以JSON格式输出所有的bbox的坐标。
      • 提示词技巧:
        • 明确任务要求:强调区分识别每个物体,避免混淆与所有物体的语义
        • 明确输出要求:明确期望的格式,禁止可能的输出文字

    代码示例

    curl -XPOST -v https://openai-cn-east-1.qiniu.com/v1/chat/completions \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer $QINIU_API_KEY' \
       -d '{
       "model":"kvl-qwen2.5-vl-7b",
       "stream": false,
       "messages":[
        {
          "role":"user",
          "content":[
            {"type":"text","text":"定位每一只猫的位置,并描述其各自的特征,以JSON格式输出所有的bbox的坐标"},
            {"type":"image","image_url":{"url":"kodo://BucketName/testqvmodel/cat.jpeg"}}
          ]
        }
      ]}'
    

    输出示例

    [
        {
            \"bbox_2d\": [390, 149, 555, 277],
            \"label\": \"橙色的猫,正在休息。头部稍微向左倾斜,身体靠在蓝色的被子上。\"
        },
        {
            \"bbox_2d\": [429, 44, 617, 232],
            \"label\": \"花纹的猫,正伸展着腿部坐在床上,显得很放松。\"
        }
    ]
    

    视频理解

    • 本模型可以感知时间信息,支持从视频中搜索具体事件,或对不同时间段进行要点总结。

    输入示例

    • 视频:点击观看
    • 提示词:请你描述下述视频从00:00:01开始到00:00:08结束的这段时间中的人物动作,按JSON格式输出开始时间(start_time)、结束事件(end_time)、事件(event)。请使用HH:mm:ss表示时间戳,使用中文描述事件内容。
      • 提示词技巧:
        • 明确任务要求:指定视频理解的时间范围,如 00:01:00 至 00:02:00 时间段
        • 明确输出要求:如按 JSON 结构;内容包含按照时间戳、事件类型、具体事件;按指定时间格式 HH:mm:ss 或秒数表示时间戳;按指定语言描述

    示例代码

    curl -XPOST -v https://openai-cn-east-1.qiniu.com/v1/chat/completions \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer $QINIU_API_KEY' \
       -d '{
       "model":"kvl-qwen2.5-vl-7b",
       "stream": false,
       "messages":[
        {
          "role":"user",
          "content":[
            {"type":"text","text":"请你描述下述视频从00:00:01开始到00:00:08结束的这段时间中的人物动作,按JSON格式输出开始时间(start_time)、结束事件(end_time)、事件(event)。请使用HH:mm:ss表示时间戳,使用中文描述事件内容。"},
            {"type":"video","video_url":{"url":"kodo://BucketName/testqvmodel/video.mp4"}}
          ]
        }
      ]}'
    

    输出示例

    [
        {
            \"start_time\": \"00:00:01\",
            \"end_time\": \"00:00:02\",
            \"event\": \"孩子举起手,向狗示意。\"
        },
        {
            \"start_time\": \"00:00:02\",
            \"end_time\": \"00:00:03\",
            \"event\": \"狗仰头望向孩子。\"
        },
        {
            \"start_time\": \"00:00:03\",
            \"end_time\": \"00:00:04\",
            \"event\": \"孩子放下手,继续和狗互动。\"
        },
        {
            \"start_time\": \"00:00:04\",
            \"end_time\": \"00:00:05\",
            \"event\": \"狗转头看向孩子。\"
        },
        {
            \"start_time\": \"00:00:05\",
            \"end_time\": \"00:00:06\",
            \"event\": \"孩子向狗微笑,狗继续与孩子互动。\"
        },
        { 
            \"start_time\": \"00:00:06\",
            \"end_time\": \"00:00:07\",
            \"event\": \"狗转头看向孩子,孩子继续微笑。\"
        },
        {
            \"start_time\": \"00:00:07\",
            \"end_time\": \"00:00:08\",
            \"event\": \"狗转头,看向身后的雪地。\"
        }
    ]
    

    输入示例

    • 视频:点击观看
    • 提示词:视频00:00:03起的3秒内是否有狗出现?按JSON格式输出开始时间(start_time)、结束事件(end_time)、事件(event),使用中文回答。
      • 提示词技巧:
        • 明确任务要求:定位时间段、指定识别内容
        • 明确输出要求:如按 JSON 结构;内容包含按照时间戳、事件类型、具体事件;按指定时间格式 HH:mm:ss 或秒数表示时间戳;按指定语言描述

    示例代码

    curl -XPOST -v https://openai-cn-east-1.qiniu.com/v1/chat/completions \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer $QINIU_API_KEY' \
       -d '{
       "model":"kvl-qwen2.5-vl-7b",
       "stream": false,
       "messages":[
        {
          "role":"user",
          "content":[
            {"type":"text","text":"视频00:00:03起的3秒内是否有狗出现?按JSON格式输出开始时间(start_time)、结束事件(end_time)、事件(event),使用中文回答。"},
            {"type":"video","video_url":{"url":"kodo://BucketName/testqvmodel/video.mp4"}}
          ]
        }
      ]}'
    

    输出示例

    [
        {
            \"start_time\": \"00:00:03\",
            \"end_time\": \"00:00:06\",
            \"event\": \"狗出现\"
        }
    ]
    

    视频截帧理解

    • 带截帧样式的视频,视频截帧:
    • 提示词:请你用中文描述下述截图中的内容。
      • 提示词技巧:明确输出要求的语言

    示例代码

    curl -XPOST -v https://openai-cn-east-1.qiniu.com/v1/chat/completions \
      --header 'Content-Type: application/json' \
      --header 'Authorization: Bearer $QINIU_API_KEY' \
      -d '{
      "model":"kvl-qwen2.5-vl-7b",
      "stream": false,
      "messages":[
        {
          "role":"user",
          "content":[
            {"type":"text","text":"请你用中文描述下述截图中的内容。"},
            {"type":"video","video_url":{"url":"kodo://BucketName/testqvmodel/video.mp4?vframe/jpg/offset/1"}}
          ]
        }
      ]}'
    

    输出示例

    这张图片展示了一个小孩和一只小狗在雪地里玩耍的场景。小孩穿着红色的厚外套和灰色的裤子,头戴蓝色的针织帽。他站在雪地上,手里似乎拿着一些东西,但并没有伸手给小狗。小狗是一只毛茸茸的棕色小狗,可能是斯波茨犬或类似品种,正伸着脖子,似乎在与小孩互动。背景是被雪覆盖的灌木和棕色的围栏,周围雪花在飘落,场景显得非常温馨和宁静。
    

    多图理解

    输入示例

    • 图1
      图1
    • 图2
      图2
    • 提示词:描述两张图片的差异,并从图片色彩、构图、内容做出对比,以表格的形式输出
      • 提示词技巧:
        • 明确任务要求:强调任务性质、指定对比纬度
        • 明确输出要求:如按列表结构

    示例代码

    curl -XPOST -v https://openai-cn-east-1.qiniu.com/v1/chat/completions \
       --header 'Content-Type: application/json' \
       --header 'Authorization: Bearer $QINIU_API_KEY' \
       -d '{
       "model":"kvl-qwen2.5-vl-7b",
       "stream": false,
       "messages":[
         {
           "role":"user",
           "content":[
             {"type":"image","image_url":{"url":"kodo://BucketName/testqvmodel/cat_a.jpeg"}},
             {"type":"image","image_url":{"url":"kodo://BucketName/testqvmodel/cat_b.jpeg"}},
             {"type":"text","text":"描述两张图片的差异,并从图片色彩、构图、内容做出对比,以表格的形式输出"}
           ]
         }
       ]}'
    

    输出示例

    以下是根据图片内容作出的差异对比:
    | 项目       | 图片1                      | 图片2                      |
    |------------|----------------------------|---------------------------|
    | 色彩       | 以白色和米色为主,猫咪是橙色 | 整体画面以白和灰色为主,猫咪是灰色 |
    | 构图       | 猫咪在画面中央,放在沙发上 | 猫咪在画面中间且仰头正对着镜头 |
    | 威胁信号   | 无                       | 看起来正在注意观察上方,可能表示警惕 |
    | 背景        | 室内光亮,自然、舒适       | 室内背景较为简单,没有额外的特征 |
    | 猫型        | 一只黄色(橘色)猫咪       | 一只灰色猫咪               |
    | 背景对象   | 软垫子(可能是沙发或靠垫) | 不知道,因为无法判断 |
    | 动作       | 直视前方                   | 跟着镜头一起仰头看着 |
    | 大小比例   | 显得较小,可能是因为拍摄角度的原因 | 比较小,但看起来相对饱满 |
    
    两张图片分别描绘了不同颜色和姿态的猫,而背景和环境细节的不同也增加了对比的多样性。
    

    信息抽取

    输入示例

    • 图片:
      车票
    • 提示词:提取图中的:[‘订单号’,‘下单时间’,‘始发站’,‘到达站’,‘车次’,‘乘车时长’,‘发车时间’,‘抵达时间’],按项目符号列表的格式。
      • 提示词技巧:
        • 明确输入要求:想要提取的字段,使用分隔符区分
        • 明确输出格式:如按项目符号列表、按表格结构等

    示例代码

    curl -X POST -v https://openai-cn-east-1.qiniu.com/v1/chat/completions   
    --header 'Content-Type: application/json'   
    --header 'Authorization: Bearer $QINIU_API_KEY'   
    -d '{
      "model":"kvl-qwen2.5-vl-7b",
      "stream": false,
      "messages":[
        {
          "role":"user",
          "content":[
            {"type":"text","text":"提取图中的:['订单号','下单时间','始发站','到达站','车次','乘车时长','发车时间','抵达时间'],按项目符号列表的格式。"},
            {"type":"image","image_url":{"url":"kodo://BucketName/testqvmodel/trainticket.jpg"}}
          ]
        }
      ]}'
    

    输出示例

    - 订单号: ED46016772
    - 下单时间: 2025.09.18
    - 始发站: 上海虹桥
    - 到达站: 天津南
    - 车次: G102
    - 乘车时长: 5小时9分
    - 发车时间: 2025.09.19
    - 抵达时间: 2025.09.19
    
    以上内容是否对您有帮助?