通义千问VL模型可以根据您传入的图片来进行回答。
访问视觉模型可以在线体验图片理解能力。
图像问答:描述图像中的内容或者对其进行分类打标,如识别图像中的人物、地点、植物等,并给出对应的描述或标签。 文字识别(OCR):识别图像中的文字,如文档截图、日常图像等,并支持格式化输出文本内容。通义千问VL模型能识别多种语言,如中文、英语、日语、韩语、阿拉伯语、越南语等。 数学题目解答:解答图像中的数学问题,包括题目分析、解题思路及结果等。 内容创作:根据图像内容创作文案或者标题。如根据图像自动生成的社交媒体帖子、广告语或是文章标题。 代码生成:根据前端页面截图生成前端代码,如HTML、CSS和JavaScript的代码,或根据图表信息生成使用图表库的代码,如ECharts、Chart.js等。 通义千问VL-MAX模型的视觉理解能力最强;通义千问VL-PLUS模型在效果、成本上比较均衡,如果您暂时不确定使用某种模型,可以优先尝试使用通义千问VL-PLUS模型。 若图像中涉及复杂的数学推理问题,建议使用QVQ模型解决。QVQ模型是由 Qwen 团队开发的实验性研究模型,专注于提升视觉推理能力。应用场景
支持的模型
模型选型建议
您需要已获取API Key并配置API Key到环境变量。如果通过OpenAI SDK或DashScope SDK进行调用,还需要安装最新版SDK,并确保您的DashScope Python SDK版本不低于1.20.7。如果您是子业务空间的成员,请确保超级管理员已为该业务空间进行模型授权。
OpenAI兼容 DashScope 您可以通过OpenAI SDK或OpenAI兼容的HTTP方式调用通义千问VL模型。 Python Node.js curl 通义千问VL模型可以参考历史对话信息实现多轮对话,您需要维护一个messages 数组,将每一轮的对话历史以及新的指令添加到 messages 数组中。 OpenAI兼容 DashScope 您可以通过OpenAI SDK或OpenAI兼容的HTTP方式调用通义千问VL模型,体验多轮对话的功能。 Python Node.js curl 大模型接收到输入后,会逐步生成中间结果,最终结果由这些中间结果拼接而成。这种一边生成一边输出中间结果的方式称为流式输出。采用流式输出时,您可以在模型进行输出的同时阅读,减少等待模型回复的时间。 OpenAI兼容 DashScope 您只需在代码中将 Python Node.js curl 您可以参考以下示例代码,通过OpenAI或者DashScope的方式调用通义千问VL模型处理本地文件。使用OpenAI SDK或OpenAI兼容的HTTP方式时,请将本地图像编码为Base64数据后再传入;使用DashScope SDK时,直接传入本地图像的路径。以下代码使用的示例图像为:test.png OpenAI兼容 DashScope 使用OpenAI SDK或OpenAI兼容的HTTP方式来处理本地图像文件的步骤如下: 编码图像文件:读取本地图像文件并编码为Base64格式。 传递Base64数据:将编码后的Base64数据传递给 调用模型:调用通义千问VL模型,并处理返回的结果。 Python Node.js HTTP 您可以在一次请求中向通义千问VL模型输入多张图像,模型会根据传入的全部图像进行回答。可传入的图像数量受模型图文总Token上限(即最大输入)的限制,所有图像的总Token数必须小于模型的最大输入,详情请参见图像数量限制。 您可以通过图像的URL或本地文件两种方式传入图像,且可以组合传入。若使用本地文件,可将URL替换为图像的Base64编码数据或本地图像路径,详情可参见使用本地文件(Base64编码或本地路径)。 下列是以图像URL方式传入的代码示例。 OpenAI兼容 DashScope 您可以通过OpenAI SDK或OpenAI兼容的HTTP方式调用通义千问VL模型。 Python Node.js curl 通义千问VL模型会对超出Token上限要求的图像进行预处理,如qwen-vl-max模型,默认单图的Token上限为1280,超出则将图像进行缩放,确保图像Token数不超过1280的上限。 通过设置 参数值 单图Token上限 描述 使用场景 True 16384 表示模型的单图Token限制为16384。 模型能直接处理更高像素的图像,能理解更多的图像细节。同时处理速度会降低,Token用量也会增加。 适合用于内容丰富、需要关注细节的场景。 False(默认值) 1280 表示模型的单图Token限制为1280。 模型的处理速度会提升,Token用量较少。 适用于细节较少、只需用模型理解大致信息或对速度有较高要求的场景。 Python curl 部分通义千问VL模型支持对视频内容的理解,文件形式包括图像列表(视频帧)或视频文件。 图像列表(视频帧):最少传入4张图片,最多可传入80张图片。图像列表可以为图像URL或本地文件。目前仅OpenAI SDK、DashScope Python SDK支持传入本地文件。 视频文件:如果您需要直接输入视频文件,请提交工单进行申请。 通义千问VL模型在进行视频内容的理解时,应将用户消息content参数中的“type”值设为“video”。下列展示的是传入图像URL列表的示例代码。 OpenAI兼容 DashScope 您可以通过OpenAI SDK或HTTP方式实现视频理解。 Python Node.js curl 模型支持的图像格式如下表,需注意在使用OpenAI SDK传入本地图像时,请根据实际的图像格式,将代码中的 图像格式 文件扩展名 Content Type BMP .bmp image/bmp DIB .dib image/bmp ICNS .icns image/icns ICO .ico image/x-icon JPEG .jfif, .jpe, .jpeg, .jpg image/jpeg JPEG2000 .j2c, .j2k, .jp2, .jpc, .jpf, .jpx image/jp2 PNG .apng, .png image/png SGI .bw, .rgb, .rgba, .sgi image/sgi TIFF .tif, .tiff image/tiff WEBP .webp image/webp 图像的URL链接:需确保URL可被公网访问。 说明 您可以将图像上传到OSS,获取图像的公网URL。 如果要传入的是OSS中读写权限为私有的图像,可使用外网endpoint生成签名URL。该URL允许他人临时访问文件,具体请参见使用签名URL下载文件。 由于OSS内网与百炼服务不互通,请勿使用OSS内网URL。 本地图像文件:使用OpenAI SDK时,应传入图像经Base64编码后的数据。使用Dashscope SDK时,应传入本地图像的路径,图像路径创建方法可参见DashScope传入本地文件。 每28x28像素对应一个Token,一张图最少需要4个Token。您可以通过下列代码计算图像的Token: 举例说明,若使用的模型为qwen-vl-max(该模型的单图Token上限1280), 输入图像的宽高 调整后的图像宽高 图像Token数 512 x 512 504 x 504 326 1280 x 1280 980 x 980 1227 单个图像文件的大小不超过10 MB。 图像的宽度和高度均应大于10像素,宽高比不应超过200:1或1:200。 对单图的像素总数量无限制,因为模型在进行图像理解前会对图像进行缩放等预处理。过大的图像不会有更好的理解效果,推荐的像素值如下: 输入 输入 在多图像输入中,图像数量受模型图文总Token上限(即最大输入)的限制,所有图像的总Token数必须小于模型的最大输入。 如:使用的模型为qwen-vl-max,该模型的最大输入为30720个Token,若传入的图像像素均为1280 × 1280: vl_high_resolution_images 调整后的图像宽高 图像Token数 最多可传入的图像数量(张) True 1288 x 1288 2118 14 False 980 x 980 1227 25 关于通义千问VL模型的输入输出参数,请参见文本生成-通义千问。 需要手动删除已上传的图像吗? 在模型完成文本生成后,百炼服务器会自动将图像删除,无需手动删除。 通义千问VL模型是否支持批量提交任务? 目前qwen-vl-max、qwen-vl-plus模型兼容OpenAI Batch 接口,支持以文件方式批量提交任务。任务会以异步形式执行,并在 24 小时内返回结果。使用批量接口的费用为实时调用的 50%。 通义千问VL模型可以处理PDF、XLSX、XLS、DOC等文本文件吗? 不可以,通义千问VL模型属于视觉理解模型,只能处理图像格式的文件,不能处理文本文件。您可以使用Qwen-Long模型解析文档内容。 通义千问VL模型是否支持理解视频内容? 支持,如需使用该功能,请提交工单进行申请以及获取使用方式。 通义千问VL模型可以解答图像中的数学问题吗? 可以。目前有两种方案: 对于简单的数学问题,直接使用通义千问VL模型进行解答; 对于复杂的数学问题,可以先使用通义千问VL模型的OCR能力解析图像中的问题,再使用通义千问数学模型解答问题。 使用专注于视觉推理的QVQ模型:利用QVQ模型的推理能力进行解答图像中的数学问题。 使用通义千问VL通用模型: 通义千问VL模型是如何限流与计费的? 限流 通义千问VL模型的限流条件可以参见限流,阿里云主账号与其RAM子账号共享限流限制,如果您有增加并发量的需求,请前往扩容申请。 免费额度 从开通百炼或模型申请通过之日起计算有效期,有效期180天内,通义千问VL模型提供10万或100万Token的免费额度,具体信息请参见模型列表。 查询模型的剩余额度 您可以访问阿里云百炼控制台的模型广场页面,找到通义千问VL模型并点击查看详情,即可查看免费额度、剩余额度及到期时间。如果没有显示免费额度,说明账号下该模型的免费额度已到期。 计费 总费用 = 输入 Token 数 x 模型输入单价 + 模型输出 Token 数 x 模型输出单价。其中,图像转成Token的方法为每28x28像素对应一个Token,一张图最少4个Token。 查看账单 您可以在阿里云控制台的费用与成本页面查看账单或进行充值。 更多计费问题请参见计费项说明。 如果模型调用失败并返回报错信息,请参见错误信息进行解决。简单示例
import osfrom openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-max-latest",
messages=[
{ "role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}],
},
{ "role": "user", "content": [
{ "type": "image_url", "image_url": { "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
},
},
{"type": "text", "text": "图中描绘的是什么景象?"},
],
},
],
)print(completion.choices[0].message.content)
返回结果
这是一张在海滩上拍摄的照片。照片中,一个人和一只狗坐在沙滩上,背景是大海和天空。人和狗似乎在互动,狗的前爪搭在人的手上。阳光从画面的右侧照射过来,给整个场景增添了一种温暖的氛围。
多轮对话(参考历史对话信息)
from openai import OpenAIimport os
client = OpenAI( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1")
messages = [
{ "role": "system", "content": [{"type": "text", "text": "You are a helpful assistant."}]},
{ "role": "user", "content": [
{ "type": "image_url", "image_url": { "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"
},
},
{"type": "text", "text": "图中描绘的是什么景象?"},
],
}
]
completion = client.chat.completions.create(
model="qwen-vl-max-latest",
messages=messages,
)print(f"第一轮输出:{completion.choices[0].message.content}")
assistant_message = completion.choices[0].message
messages.append(assistant_message.model_dump())
messages.append({ "role": "user", "content": [
{ "type": "text", "text": "做一首诗描述这个场景"
}
]
})
completion = client.chat.completions.create(
model="qwen-vl-max-latest",
messages=messages,
)print(f"第二轮输出:{completion.choices[0].message.content}")
返回结果
第一轮输出:这是一张在海滩上拍摄的照片。照片中,一位穿着格子衬衫的女士坐在沙滩上,与一只戴着项圈的金毛犬互动。背景是大海和天空,阳光洒在她们身上,营造出温暖的氛围。
第二轮输出:沙滩上,阳光洒,
女子与犬,笑语哗。
海浪轻拍,风儿吹,
快乐时光,心儿醉。
流式输出
stream
参数设置为true
,即可通过OpenAI SDK或OpenAI兼容的HTTP方式调用通义千问VL模型,体验流式输出的功能。from openai import OpenAIimport os
client = OpenAI( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-max-latest",
messages=[
{"role": "system", "content": [{"type":"text","text": "You are a helpful assistant."}]},
{"role": "user", "content": [{"type": "image_url", "image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},},
{"type": "text", "text": "图中描绘的是什么景象?"}]}],
stream=True)
full_content = ""print("流式输出内容为:")for chunk in completion: if chunk.choices[0].delta.content is None: continue
full_content += chunk.choices[0].delta.content print(chunk.choices[0].delta.content)print(f"完整内容为:{full_content}")
返回结果
流式输出内容为:
图
中
描绘
的是
一个
女人
......
温暖
和谐
的
氛围
。
完整内容为:图中描绘的是一个女人和一只狗在海滩上互动的场景。女人坐在沙滩上,微笑着与狗握手,显得非常开心。背景是大海和天空,阳光洒在她们身上,营造出一种温暖和谐的氛围。
使用本地文件(Base64编码或本地路径)
image_url
参数,格式为data:image/{format};base64,{base64_image}
,其中:image/{format}
:本地图像的格式。请根据实际的图像格式,将image/{format}
设置为与使用说明表格中Content Type对应的值。如:本地图像为jpg格式,则设置为image/jpeg
。base64_image
:图像的Base64数据。from openai import OpenAIimport osimport base64# base 64 编码格式def encode_image(image_path): with open(image_path, "rb") as image_file: return base64.b64encode(image_file.read()).decode("utf-8")# 将xxxx/test.png替换为你本地图像的绝对路径base64_image = encode_image("xxx/test.png")
client = OpenAI( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-max-latest",
messages=[
{ "role": "system", "content": [{"type":"text","text": "You are a helpful assistant."}]},
{ "role": "user", "content": [
{ "type": "image_url", # 需要注意,传入Base64,图像格式(即image/{format})需要与支持的图片列表中的Content Type保持一致。"f"是字符串格式化的方法。
# PNG图像: f"data:image/png;base64,{base64_image}"
# JPEG图像: f"data:image/jpeg;base64,{base64_image}"
# WEBP图像: f"data:image/webp;base64,{base64_image}"
"image_url": {"url": f"data:image/png;base64,{base64_image}"},
},
{"type": "text", "text": "图中描绘的是什么景象?"},
],
}
],
)print(completion.choices[0].message.content)
返回结果
这是一只飞翔的鹰。鹰是一种猛禽,通常具有强壮的翅膀和锐利的爪子,擅长在高空翱翔和捕猎。图片中的鹰展翅高飞,背景是蓝天白云,显得非常壮观。
多图像输入
import osfrom openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-max-latest",
messages=[
{"role":"system","content":[{"type": "text", "text": "You are a helpful assistant."}]},
{"role": "user","content": [ # 第一张图像链接,如果传入本地文件,请将url的值替换为图像的Base64编码格式
{"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},}, # 第二张图像链接,如果传入本地文件,请将url的值替换为图像的Base64编码格式
{"type": "image_url","image_url": {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},},
{"type": "text", "text": "这些图描绘了什么内容?"},
],
}
],
)print(completion.choices[0].message.content)
返回结果
图1中是一位女士和一只拉布拉多犬在海滩上互动的场景。女士穿着格子衬衫,坐在沙滩上,与狗进行握手的动作,背景是海浪和天空,整个画面充满了温馨和愉快的氛围。
图2中是一只老虎在森林中行走的场景。老虎的毛色是橙色和黑色条纹相间,它正向前迈步,周围是茂密的树木和植被,地面上覆盖着落叶,整个画面给人一种野生自然的感觉。
高分辨率图像理解
vl_high_resolution_images
参数为true
,可将单张图像的Token上限提升至16384。vl_high_resolution_images
参数仅支持DashScope Python SDK及HTTP方式。目前只适用于单图最大Token数为16384的模型,如
qwen-vl-max
、qwen-vl-max-latest
、qwen-vl-max-0125
qwen-vl-max-1230
、qwen-vl-max-1119
、qwen-vl-max-1030
、qwen-vl-max-0809
、qwen-vl-plus-latest
、qwen-vl-plus-0125
qwen-vl-plus-0102
、qwen-vl-plus-0809
、qwen2-vl-72b-instruct
、qwen2-vl-7b-instruct
与qwen2-vl-2b-instruct
,这些模型的单图默认Token上限为1280。import osimport dashscope
messages = [
{ "role": "user", "content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
{"text": "这张图表现了什么内容?"}
]
}
]
response = dashscope.MultiModalConversation.call( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen-vl-max-latest',
messages=messages,
vl_high_resolution_images=True)print("大模型的回复:\n ",response.output.choices[0].message.content[0]["text"])print("Token用量情况:","输入总Token:",response.usage["input_tokens"] , ",输入图像Token:" , response.usage["image_tokens"])
返回结果
大模型的回复:
这张图片展示了一个温馨的圣诞装饰场景。图中可以看到以下元素:
1. **圣诞树**:两棵小型的圣诞树,上面覆盖着白色的雪。
2. **驯鹿摆件**:一只棕色的驯鹿摆件,带有大大的鹿角。
3. **蜡烛和烛台**:几个木制的烛台,里面点燃了小蜡烛,散发出温暖的光芒。
4. **圣诞装饰品**:包括金色的球形装饰、松果、红色浆果串等。
5. **圣诞礼物盒**:一个小巧的金色礼物盒,用金色丝带系着。
6. **圣诞字样**:木质的“MERRY CHRISTMAS”字样,增加了节日气氛。
7. **背景**:木质的背景板,给人一种自然和温暖的感觉。
整体氛围非常温馨和喜庆,充满了浓厚的圣诞节气息。
Token用量情况: 输入总Token: 5368 ,输入图像Token: 5342
视频理解
目前
qwen-vl-plus
、qwen-vl-plus-2023-12-01
、qvq-72b-preview
、qwen-vl-v1
、qwen-vl-chat-v1
模型不支持对视频内容的理解。目前仅部分模型支持直接传入视频文件,具体模型请以工单的回复为准。
import osfrom openai import OpenAI
client = OpenAI( # 若没有配置环境变量,请用百炼API Key将下行替换为:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://dashscope.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen-vl-max-latest",
messages=[{"role": "user","content": [
{"type": "video","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"]},
{"type": "text","text": "描述这个视频的具体过程"},
]}]
)print(completion.choices[0].message.content)
返回结果
这个视频展示了一场足球比赛的瞬间。具体过程如下:
1. **背景**:视频是在一个大型体育场拍摄的,观众席上坐满了观众,灯光明亮,气氛热烈。
2. **球员**:场上有两队球员,一队穿着红色球衣,另一队穿着蓝色球衣。守门员穿着绿色球衣。
3. **动作**:一名穿着红色球衣的球员在禁区内准备射门。守门员试图扑救,但未能成功。
4. **进球**:红色球衣的球员成功将球踢入球门,球网被球击中,显示出进球的瞬间。
整个过程充满了紧张和激动,展示了足球比赛中的精彩瞬间。
使用说明
支持的图像
image/{format}
设置为对应的Content Type值。图像输入方式
图像Token的计算规则
vl_high_resolution_images = False
时:图像大小限制
qwen-vl-max
、qwen-vl-max-latest
、qwen-vl-max-1230
、qwen-vl-max-1119
、qwen-vl-max-1030
、qwen-vl-max-0809
、qwen-vl-plus-latest
、qwen-vl-plus-0102
、qwen-vl-plus-0809
、qwen2-vl-72b-instruct
、qwen2-vl-7b-instruct
与qwen2-vl-2b-instruct
模型的单张图像,像素数推荐不超过 1200万,可以支持标准的 4K 图像。qwen-vl-max-0201
与qwen-vl-plus
模型的单张图像,像素数推荐不超过 1048576,相当于一张宽高均为 1024 的图像。图像数量限制
应用示例
API参考
常见问题
错误码