如何調用通義萬相的 API

作者:youqing · 2025-02-17 · 閱讀時間:4分鐘
要調用通義萬相的 API,首先需要在阿里云控制臺獲取 API Key,并配置到環境變量中。然后,您可以選擇通過 HTTP 協議或 DashScope SDK 調用 API。使用 HTTP 調用時,需發送 POST 請求以創建任務并獲取任務 ID,隨后通過任務 ID 查詢生成結果。SDK 提供了更高層次的封裝,支持 Python 和 Java 語言的同步或異步調用。確保 API Key 配置正確,以避免調用錯誤。

模型概覽

通義萬相 V2 版模型是一個廣泛應用于圖像生成的人工智能模型。該模型提供了多種版本,以滿足不同的生成需求,包括速度和細節的平衡。通義萬相官網提供了豐富的示例和使用體驗。

模型版本概括:

  • wanx2.1-t2i-turbo:生成速度更快,適用于通用場景。
  • wanx2.1-t2i-plus:生成圖像細節更豐富,適用于需要高度細節的場景。
  • wanx2.0-t2i-turbo:擅長質感人像與創意設計,性價比高。

前提條件

在開始調用通義萬相的 API 之前,必須完成一些前期準備工作:

  1. API Key 獲取:您需要訪問阿里云控制臺獲取 API Key,并將其配置到環境變量中。
  2. SDK 安裝:如需通過 SDK 進行調用,請先安裝 DashScope SDK,支持 Python 和 Java 語言。

HTTP 調用簡介

調用通義萬相 API 可以通過 HTTP 協議進行異步操作,以下是調用過程的基本步驟。

創建任務

使用 HTTP POST 方法創建任務,發送請求并獲取任務 ID。

curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/text2image/image-synthesis
    -H 'X-DashScope-Async: enable'
    -H "Authorization: Bearer $DASHSCOPE_API_KEY"
    -H 'Content-Type: application/json'
    -d '{
    "model": "wanx2.1-t2i-turbo",
    "input": {
        "prompt": "一間有著精致窗戶的花店,漂亮的木質門,擺放著花朵"
    },
    "parameters": {
        "size": "1024*1024",
        "n": 1
    }
}'

查詢任務結果

一旦任務創建成功,您可以通過任務 ID 查詢生成的圖像結果。

curl -X GET
--header "Authorization: Bearer $DASHSCOPE_API_KEY"
https://dashscope.aliyuncs.com/api/v1/tasks/{task_id}

使用 SDK 調用

DashScope SDK 提供了更高層次的封裝,支持同步和異步兩種方式調用。

Python SDK 調用

Python SDK 提供了便捷的接口,以下是一個簡單的同步調用示例:

from dashscope import ImageSynthesis
import os

prompt = "一間有著精致窗戶的花店,漂亮的木質門,擺放著花朵"rsp = ImageSynthesis.call(api_key=os.getenv("DASHSCOPE_API_KEY"),
                          model="wanx2.1-t2i-turbo",
                          prompt=prompt,
                          n=1,
                          size='1024*1024')for result in rsp.output.results:
    print('Image URL:', result.url)

Java SDK 調用

Java SDK 提供了類似的功能,以下是一個異步調用示例:

import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesis;
import com.alibaba.dashscope.aigc.imagesynthesis.ImageSynthesisParam;

public class Main {
    public void asyncCall() {
        ImageSynthesisParam param = ImageSynthesisParam.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("wanx2.1-t2i-turbo")
                .prompt("一間有著精致窗戶的花店,漂亮的木質門,擺放著花朵")
                .n(1)
                .size("1024*1024")
                .build();        ImageSynthesis imageSynthesis = new ImageSynthesis();
        imageSynthesis.asyncCall(param);
    }
}

常見問題 (FAQ)

FAQ

  1. 問:如何獲取 API Key?

  2. 問:通義萬相 API 支持同步調用嗎?

    • 答:HTTP 調用僅支持異步獲取結果,但通過 SDK 可以實現同步調用。
  3. 問:調用 API 時出現超時錯誤怎么辦?

    • 答:由于圖像生成時間較長,建議使用異步調用方式,并檢查網絡連接穩定性。
  4. 問:如何解決“Invalid API-key provided”錯誤?

    • 答:請確保 API Key 配置正確,且在請求頭中正確傳遞。
  5. 問:生成的圖像鏈接如何訪問?

    • 答:生成的圖像存儲在阿里云 OSS 中,OSS 鏈接允許公開訪問,您可以通過鏈接查看或下載圖像

通過本文的詳細介紹,您現在應該對如何使用通義萬相的 API 有了清晰的理解,并能夠在您的項目中有效地集成和調用這些功能。