快速开始

通义千问VL

说明

支持的领域 / 任务:aigc

通义千问VL是阿里云研发的大规模视觉语言模型(Large Vision Language Model, LVLM),可以以图像、文本、检测框作为输入,并以文本和检测框作为输出,支持中文多模态对话及多图对话,并具有更好的性能,是首个支持中文开放域的通用定位模型和首个开源448分辨率的大规模视觉语言模型。

通义千问VL模型主要有以下特点:

  1. 强大的性能:在四大类多模态任务的标准英文测评中(Zero-shot Captioning/VQA/DocVQA/Grounding)上,均取得同等通用模型大小下最好效果;

  2. 多语言对话模型:天然支持英文、中文等多语言对话,端到端支持图片里中英双语的长文本识别;

  3. 多图交错对话:支持多图输入和比较,指定图片问答,多图文学创作等;

  4. 首个支持中文开放域定位的通用模型:通过中文开放域语言表达进行检测框标注;

  5. 细粒度识别和理解:相比于目前其它开源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 数据、数据合成和人工标注的图文对齐数据。

快速开始

前提条件

示例代码

以下示例展示了调用通义千问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详情页面进行了解。