使用大模型视觉理解对象存储 Kodo
视觉理解
多模态大模型具备视觉理解能力,支持对您传入的图片或视频进行理解,大模型可以针对这些视觉信息完成如识别、描述等视觉相关任务并进行回答。
七牛云针对对象存储 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 | 用量详情 |
- 本模型将共用七牛云大模型免费额度,活动详情参考 大模型 Token 价格与计费说明
快速使用
前提条件
- 通过控制台 获取 API Key,参考 获取大模型推理服务 API 密钥
- 使用对象存储 Kodo,当前仅 华东-浙江 区域存储支持使用本模型
存储区域 Region ID BaseURL 华东-浙江 cn-east-1 openai-cn-east-1.qiniu.com 其他区域 敬请期待...
图片理解
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
- 图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
文档反馈
(如有产品使用问题,请 提交工单)