通义千问VL
支持的领域 / 任务:aigc
通义千问VL是阿里云研发的大规模视觉语言模型(Large Vision Language Model, LVLM),可以以图像、文本、检测框作为输入,并以文本和检测框作为输出,支持中文多模态对话及多图对话,并具有更好的性能,是首个支持中文开放域的通用定位模型和首个开源448分辨率的大规模视觉语言模型。
通义千问VL模型主要有以下特点:
强大的性能:在四大类多模态任务的标准英文测评中(Zero-shot Captioning/VQA/DocVQA/Grounding)上,均取得同等通用模型大小下最好效果;
多语言对话模型:天然支持英文、中文等多语言对话,端到端支持图片里中英双语的长文本识别;
多图交错对话:支持多图输入和比较,指定图片问答,多图文学创作等;
首个支持中文开放域定位的通用模型:通过中文开放域语言表达进行检测框标注;
细粒度识别和理解:相比于目前其它开源LVLM使用的224分辨率,Qwen-VL是首个开源的448分辨率的LVLM模型。更高分辨率可以提升细粒度的文字识别、文档问答和检测框标注。
目前,我们提供了 Qwen-VL 系列的两个模型:
Qwen-VL: Qwen-VL 以 Qwen-7B 的预训练模型作为语言模型的初始化,并以Openclip ViT-bigG作为视觉编码器的初始化,中间加入单层随机初始化的 cross-attention,经过约1.5B的图文数据训练得到。最终图像输入分辨率为448。
Qwen-VL-Chat: 在 Qwen-VL 的基础上,我们使用对齐机制打造了基于大语言模型的视觉AI助手Qwen-VL-Chat,其训练数据涵盖了 QWen-7B 的纯文本 SFT 数据、开源 LVLM 的 SFT 数据、数据合成和人工标注的图文对齐数据。
快速开始
前提条件
已开通服务并获得API-KEY:开通DashScope并创建API-KEY。
已安装最新版SDK:安装DashScope SDK。
示例代码
以下示例展示了调用通义千问VL API对一个用户指令进行响应的代码。
需要使用您的API-KEY替换示例中的 YOUR_DASHSCOPE_API_KEY,代码才能正常运行。
设置API-KEY
export DASHSCOPE_API_KEY=YOUR_DASHSCOPE_API_KEY
from http import HTTPStatus
import dashscope
def simple_multimodal_conversation_call():
"""Simple single round multimodal conversation call.
"""
messages = [
{
"role": "user",
"content": [
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg"},
{"text": "这是什么?"}
]
}
]
response = dashscope.MultiModalConversation.call(model=dashscope.MultiModalConversation.Models.qwen_vl_chat_v1,
messages=messages)
# The response status_code is HTTPStatus.OK indicate success,
# otherwise indicate request is failed, you can get error code
# and message from code and message.
if response.status_code == HTTPStatus.OK:
print(response)
else:
print(response.code) # The error code.
print(response.message) # The error message.
if __name__ == '__main__':
simple_multimodal_conversation_call()
// Copyright (c) Alibaba, Inc. and its affiliates.
import java.util.Arrays;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversation;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationParam;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationResult;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalConversationMessage;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalMessageItemImage;
import com.alibaba.dashscope.aigc.multimodalconversation.MultiModalMessageItemText;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
public class Main {
public static void simpleMultiModalConversationCall() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessageItemImage userImage = new MultiModalMessageItemImage(
"https://dashscope.oss-cn-beijing.aliyuncs.com/images/dog_and_girl.jpeg");
MultiModalMessageItemText userText = new MultiModalMessageItemText("这是什么?");
MultiModalConversationMessage userMessage =
MultiModalConversationMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(userImage, userText)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
.model(MultiModalConversation.Models.QWEN_VL_CHAT_V1)
.message(userMessage).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(result);
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}
python 调用成功后,将会返回如下示例结果。
{
"status_code": 200,
"request_id": "69cee41a-8e6a-9471-8e71-e1ad62d164c9",
"code": "",
"message": "",
"output": {
"text": null,
"finish_reason": null,
"choices": [
{
"finish_reason": null,
"message": {
"role": "assistant",
"content": "图中是一名女性和一只狗在沙滩上玩,女性拿着一个黑色的包。"
}
}
]
},
"usage": {
"input_tokens": 0,
"output_tokens": 19
}
}
了解更多
有关通义千问VL API的详细调用文档可前往API详情页面进行了解。