alibaba-image-models について
Alibaba Cloud Model Studioでの画像生成・編集を扱う制作ガイドです。モデルとエンドポイントの選定、リクエスト作成、反復レビューを支援し、画像の手順をWan動画ワークフローと区別します。
主な機能
- 01画像タスクに適した現行モデルの選択
- 02画像生成と編集への対応
- 03リージョン別エンドポイントとリクエスト方式の説明
- 04参照画像とプロンプト設計の案内
- 05レビューと反復手順の整理
活用シーン
- 01ポスターや商品画像向けモデルの選択
- 02参照画像を使う編集の計画
- 03リージョンに合ったModel Studioリクエストの設定
- 04正確な文字やブランド要件を含む画像の準備
インストール
コマンドをコピーしてターミナルで実行します。
npx skills add https:/ / github.com/ calesthio/ generative-media-skills --skill alibaba-image-modelsインストール後、Claude Code で/alibaba-image-modelsを入力して読み込まれたか確認します。
同梱ファイルEVAL.md
詳細
Alibaba の画像モデル
このスキルは、Alibaba Cloud Model Studio の画像推論に関する本番運用ガイドとして扱ってください。ローカルの Wan チェックポイント、画像から動画への変換、モデルのトレーニング、旧式の単機能 Wan 編集エンドポイントは対象外です。本番環境に統合する前に、必ず最新のモデル一覧を確認してください。モデル ID、エイリアス、リージョン、料金、クォータは変更されるためです。
本番運用の要件を定める
生成する前に、次の内容を記録してください。
- 納品物と掲載先:ヒーロー画像、ポスター、商品画像、キャラクターシート、ストーリーボード、ソーシャルメディア用のトリミング画像、編集画像など;
- 必要なピクセル寸法、アスペクト比、枚数、ファイル形式;
- 正確なテキスト、ブランドカラー、保護領域、レイアウトの階層;
- 参照画像の役割と、各参照画像の使用許可;
- 許容できる人物や商品の同一性のずれ、正確なタイポグラフィを後から合成する必要があるかどうか;
- 対象リージョン、ワークスペース、モデル ID または固定したスナップショット、予算上限、保持要件;
- 承認ゲート:低コストのサンプル、採用する方向性、編集工程、最終 QA。
有料リクエストを実行する前に、プロバイダー、モデル、リージョン、リクエストする画像の枚数、推定料金を伝えてください。まず、低コストの候補を 1~2 枚生成してください。選定済みのモデル、リージョン、プロンプト書き換えポリシーを、通知せずに変更しないでください。
用途に応じて選択する
以下の情報は、2026-07-09 に Alibaba Cloud のドキュメントで確認済みです。
| ニーズ | 推奨 | 理由と制約 |
|---|---|---|
| 幅広い画像生成、テキスト描画、ブランドパレット、編集、最大 9 枚の参照画像、バウンディングボックス編集、または一貫性のある画像セット | wan2.7-image-pro | 現行 Wan のルートで最も機能が充実しています。純粋なテキストからの画像生成は 4K 仕様に対応し、編集と画像セットは 2K に制限されます。標準モードでは 1~4 枚、シーケンシャルモードでは最大 12 枚の画像を返します。 |
| 同様の Wan ワークフローで、より高速かつ低コストな出力 | wan2.7-image | 同じワークフローファミリーですが、最大 2K です。実際の依頼内容で品質を検証してください。 |
| ネガティブプロンプト、または 1 回の同期リクエストで最大 6 種類のバリエーション | qwen-image-2.0-pro | 生成と編集を組み合わせたルートで、1~6 枚の PNG 出力と、ドキュメントに記載されたネガティブプロンプトに対応しています。編集では 1~3 枚の画像を受け付けます。 |
| より高速な Qwen の画像生成・編集 | qwen-image-2.0 | 高速化された 2.0 ルートです。同じ同期プロトコルを使用し、Pro と比較して品質をテストしてください。 |
| 低コストで素早く生成する、生成専用の人物写真または商品写真 | z-image-turbo | PNG を 1 枚出力し、編集には対応していません。対応範囲は 512×512~2048×2048 です。プロンプトの書き換えを有効にすると、ドキュメント記載の画像 1 枚あたりの料金が 2 倍になります。 |
慣例だけを理由に、旧式の wanx2.1-*、Qwen Plus/Max、または個別の Qwen 編集 ID を呼び出さないでください。明示的な互換性要件や移行要件がある場合に限り、現在のリージョンとプロトコルを確認してから使用してください。現行の 2.0 モデルは同期呼び出し専用です。非同期の Qwen 画像呼び出しに対応するのは qwen-image-plus と qwen-image であり、Qwen-Image 2.0 ではありません。
プロバイダーの説明を、独立した品質の証明と見なさないでください。「高速」「Pro」「推奨」は、ドキュメントに記載された製品上の位置付けです。選択が重要な場合は、個別の依頼内容に合わせたサンプルを実行してください。
リージョン、キー、ワークスペース、エンドポイントを一致させる
モデルと同じリージョンの Model Studio API キーを使用します。キーは DASHSCOPE_API_KEY に保存し、ソース、プロンプト、ログ、パッチ、成果物には決して含めないでください。最小権限のワークスペースを使用し、開発用と本番用のキーを分けてください。
現在の Wan 2.7、Qwen-Image 2.0、Z-Image の同期ネイティブ呼び出しには、以下を使用します。
| リージョン | エンドポイント |
|---|---|
| シンガポール | https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation |
| 中国(北京) | https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation |
Authorization: Bearer $DASHSCOPE_API_KEY と Content-Type: application/json を送信します。ワークスペース専用ドメインは Alibaba が推奨する本番環境向けの選択肢です。共有 DashScope ドメインやトライアル用ドメインには、それぞれ異なるトレードオフがあります。ここに示すネイティブ画像ペイロードには、OpenAI 互換の /compatible-mode/v1 パスを決して使用しないでください。
モデル、キー、リージョン、デプロイ範囲、エンドポイントを一体の設定として扱ってください。401 やサービスエラーは、これらが一致していないことを示す場合がよくあります。すべてのモデルがすべてのリージョンで利用できると決めつけず、コンソールやモデル一覧で利用可否を確認してください。
同期と非同期を意図的に選択する
現在の Wan 2.7 は両方のネイティブプロトコルに対応しています。Qwen-Image 2.0 と Z-Image Turbo は同期のみです。
| ワークロード | 作成ルート | 必須ヘッダー | 完了 |
|---|---|---|---|
| Wan 2.7 の短い対話型呼び出し | POST .../api/v1/services/aigc/multimodal-generation/generation | 通常の JSON/Bearer ヘッダー | レスポンスに結果が含まれます |
| Wan 2.7 の長時間生成、編集、バウンディングボックス編集、または連続セット | POST .../api/v1/services/aigc/image-generation/generation | X-DashScope-Async: enable を追加 | output.task_id を保存してからポーリングします |
| Qwen-Image 2.0 または Z-Image Turbo | 同期マルチモーダルルートのみ | 非同期ヘッダーは追加しないでください | レスポンスに結果が含まれます |
Wan の非同期呼び出しでは、ほかの作業を始める前に、作成時の request_id、output.task_id、初期の task_status を保存してください。Bearer 認証を使用し、上限付きのバックオフ、ジッター、期限を設定して、GET https://{WorkspaceId}.{region}.maas.aliyuncs.com/api/v1/tasks/{task_id} をポーリングします。PENDING と RUNNING の間はポーリングを続け、SUCCEEDED の場合にのみ出力を受け入れてください。FAILED、CANCELED、UNKNOWN の場合は処理を停止し、code/message を記録してください。ポーリングが中断されたからといって、新しいタスクを作成しないでください。タスク ID、タスクデータ、結果 URL は 24 時間有効と記載されているため、その期間内に状態を照合し、ダウンロードしてください。
ドキュメント上の既知の曖昧さに留意する
- 現在の Qwen テキストから画像への生成ページでは、北京のエンドポイントと記載されている行および一部の SDK コメントに、シンガポールのホストが示されています。Alibaba のほかの最新ページでは、北京向けに
cn-beijing.maas.aliyuncs.comが示されています。これはドキュメントのコピー時に生じた誤りと考えられます。デプロイ前にコンソールでエンドポイントを確認してください。 - Alibaba は
qwen-image-2.0-pro-2026-06-22を推奨としている一方で、可変のqwen-image-2.0-proエイリアスは現在...-2026-04-22と同等であるとも記載しています。可変エイリアスが最新のスナップショットを指すと決めつけないでください。再現性が重要な場合は、リージョンで利用可能か確認したうえで、日付付き ID を固定してください。 - Qwen ではカスタムサイズの範囲を総ピクセル数で「512×512 から 2048×2048」と説明していますが、推奨プリセットには一辺が 2048 を超えるものも含まれています。ドキュメントに記載されたプリセットを使用するか、要求された寸法を検証してください。この説明を一辺あたりの上限として解釈しないでください。
- Z-Image のページには現在、北京向けの共有 DashScope エンドポイントが示されていますが、より新しいプラットフォームのガイダンスではワークスペース専用ドメインが推奨されています。リリース前に、選択したリージョンで Z-Image がサポートする正確なエンドポイントを確認してください。
リクエストを正しく構築する
user メッセージは 1 つだけ使用します。各参照画像は image オブジェクトに、指示は 1 つの text オブジェクトに入れてください。"widthxheight" ではなく、アスタリスクを使った "width*height" を指定してください。
Wan 2.7
- アルファチャンネルなしのJPEG/JPG/PNG、BMP、WEBP画像を0~9枚受け付けます。各画像は20 MB以下、各辺240~8000ピクセル、縦横比1:8~8:1である必要があります。
- プロンプトは中国語または英語で記述し、最大5,000文字まで入力できます。超過分は切り捨てられます。
size: "1K"、"2K"、"4K"、またはカスタムの"width*height"を使用します。wan2.7-image-proで4Kを使用できるのは、シーケンシャルモード以外のテキストのみから画像を生成する場合に限られます。wan2.7-imageの上限は2Kです。- Wanで指定したサイズは目標値として扱い、出力ピクセル数が正確に一致する保証とは見なさないでください。プロバイダーが選択した寸法はわずかに異なる場合があるため、デコードした出力と使用量を確認してください。
- 標準モードでは
n: 1..4を使用します。enable_sequential: trueの場合はn: 1..12を使用します。モデルがnより少ない数の画像を返す場合があります。 - インタラクティブな編集には
bbox_listを使用します。入力画像ごとに外側のリストを1つ用意し、元画像上の絶対座標[x1,y1,x2,y2]を使用します。対象がない画像には[]を指定し、画像あたりのボックスは最大2つにしてください。 - 遅延が許容できる場合、難しいテキストのみからの画像生成では
thinking_mode: trueのままにします。これは画像入力がなく、シーケンシャルモードでもない場合にのみ適用されます。 color_paletteはシーケンシャルモード以外でのみ使用します。HEXカラーを3~10色指定し、各色の比率は小数点以下2桁で記述し、合計を正確に100.00%にしてください。prompt_extendは送信しないでください。現在のWan 2.7では代わりにthinking_modeを使用します。
Qwen-Image 2.0
- テキストオブジェクト1つから画像を生成します。2.0のプロンプトは最大1,300トークンまで入力できます。超過分は切り捨てられます。
- 編集には、JPG/JPEG/PNG/BMP/TIFF/WEBP/GIF画像を1~3枚使用でき、各画像は10 MB以下である必要があります。GIFは最初のフレームのみ使用されます。最良の結果を得るには、各辺を384~3072ピクセルにしてください。
- 入力画像は順番に「Image 1」「Image 2」「Image 3」として参照します。各画像の役割と、変更せずに保持するものを明記してください。
n: 1..6、最大500文字のnegative_prompt、seed: 0..2147483647、size: "width*height"を指定します。出力形式はPNGです。- 短い試行用プロンプトでは
prompt_extend: trueのままにします。正確な文言、ブランド上の制約、再現可能なプロンプト監査、または慎重に指定したレイアウトが必要な場合はfalseに設定してください。書き換えによってネガティブプロンプトが変わることはありません。 - 同じシードは安定性を高める手段として扱い、決定論的な再現を保証するものとは見なさないでください。
- Qwenで編集する場合、サービスは指定した寸法を近い16の倍数に調整します。公式例では
1033*1032が1040*1024に変換されます。実際のサイズをデコードして記録してください。出力ピクセル数を厳密に合わせる必要がある場合は、モデルが指定値をそのまま返したと主張するのではなく、生成後に決定論的にクロップまたはリサイズしてください。
Z-Image Turbo
- 中国語または英語のテキストオブジェクトを1つ使用し、最大800文字まで入力できます。PNGが必ず1枚返されます。
size: "width*height"を使用します。ドキュメントに記載された範囲は512×512~2048×2048で、デフォルトは1024*1536です。- 最速かつ低コストで直接生成するには、
prompt_extend: falseのままにします。LLMによる書き換えや推論に追加の遅延と記載された2倍の料金をかける価値がある場合のみ、trueに設定してください。 - 編集用の画像を渡したり、複数の出力を要求したりしないでください。
制御可能な制作のためのプロンプト
以下はプロバイダーの保証ではなく、制作上のヒューリスティックとして扱ってください。
重要度の高い順にプロンプトを記述します。
- 成果物と主題を明示します。
- 構図を固定します:視点、フレーミング、被写体の配置、ネガティブスペース、奥行きの各平面。
- アイデンティティや製品に関する不変要素と、参照画像の役割を説明します。
- 素材、照明、色、表現媒体、仕上げを指定します。
- 必須の文字列はすべて正確に引用し、その階層、位置、配置、大文字・小文字の使い方、コントラストを説明します。
- 除外事項や維持すべき制約を明記します。
形容詞を並べるより、具体的な空間表現を優先します。編集では、変更点のリストと維持する点のリストを作成します:「X を Y に置き換え、顔、ポーズ、カメラ、影、パッケージの形状、ロゴの配置、背景は維持します。」複数の参照画像を使う場合は、各入力にそれぞれ1つの役割を割り当て、2つの画像に同じ特性を指定しないようにします。
キャラクターの一貫性を保つには、まずニュートラルなアイデンティティシートを承認します。それを最初の参照画像として再利用し、アイデンティティの不変要素を繰り返し指定します。シーンの変数は一度に1つだけ変更し、対応している場合はシードを固定します。また、セット全体を通して顔、髪、体の比率、衣装の基準となる要素、特徴的な印を比較します。物語の一貫性が重要な場合は Wan の sequential mode を使用しますが、すべてのフレームをそのまま採用せず、選別が必要になることを想定してください。
ブランドカラーでは、パレットの比率が重要な場合に Wan の color_palette を使用し、見た目の印象を鵜呑みにせず、返されたアセットを測定します。逸脱が許容されない場合、最終的なロゴの形状、法的表記、小さなラベル、正確な色の値は、決定論的な合成処理に任せます。
タイポグラフィとレイアウトについて:
- 文字列をそのまま引用し、1回の生成で使う文言は短くします。
- 1回につき1つの階層を指定します:見出し、サブタイトル、ラベル、フッター。
- 明確なグリッド、マージン、セーフゾーン、配置、コントラストを定義します。
- 長文や規制対象の文言とは別に、背景やイラストを生成します。
- スペル、フォントライセンス、カーニング、アクセシビリティ、法的な正確性が必須の場合は、デザインツールで正確な文言を合成します。
ゲート付きの反復ループを使用する
- ローカルで検証します: 必須の変数、リージョンとエンドポイントの一致、モデル ID、入力形式、画像数、サイズ、推定最大出力料金を確認します。まだ API を呼び出さないでください。
- 低コストで試します: 適切な低解像度で、サンプルを1つか2つリクエストします。モデル、プロンプト、パラメーター、シード、リクエスト ID、ソースハッシュをマニフェストに記録します。
- 構造を基準に選定します: 表面的な仕上がりより先に、構図、アイデンティティ、テキストの配置、編集の忠実度、ブランドとの適合性を評価します。
- 1つの要素だけを修正します: 各回で変更するのは、プロンプト、参照画像、クロップ、シード、パレット、モデルのいずれか1つだけにします。承認済みの変数は維持します。
- 決定論的な方法で仕上げます: 正確なタイポグラフィやロゴを合成し、バリエーションをクロップし、色を管理して、必要なプロファイルとメタデータを付けて書き出します。
- 最終 QA を実施します: 100%表示、サムネイルサイズ、すべての納品用クロップで確認します。文字列、人体の構造、反射、製品の形状、参照画像からの漏れ、エッジのアーティファクト、ウォーターマークのポリシー、来歴記録を検証します。
- すぐに保存します: 返された URL は24時間の有効期限が切れる前にダウンロードし、ジョブを完了としてマークする前に、ステータス、MIME タイプ、マジックバイト、バイト数、画像のデコード、実際の寸法を検証します。元データを保持してから、決定論的なクロップやリサイズを適用します。
寸法、ファイル形式、アルファチャンネル、空ファイルや破損ファイル、重複ハッシュの確認には、自動チェックを使用します。意味、類似性、知的財産権・商標の問題、誤解を招く文脈、文化的な配慮、美的品質の確認には、人によるレビューを使用します。
例:Wan 生成をドライラン優先で行う
この完全な例では、デフォルトでリクエストハッシュと秘匿化された概要のみをログに記録し、SEND_DASHSCOPE_REQUEST=1 の場合にのみ送信します。送信すると課金対象の呼び出しが発生します。まず requests と Pillow をインストールしてください。
import hashlib
import ipaddress
import json
import os
import socket
import tempfile
from pathlib import Path
from urllib.parse import urljoin, urlsplit
import requests
from PIL import Image, UnidentifiedImageError
MAX_JSON_BYTES = 8 * 1024 * 1024
MAX_IMAGE_BYTES = 25 * 1024 * 1024
MAX_IMAGE_PIXELS = 20_000_000
Image.MAX_IMAGE_PIXELS = MAX_IMAGE_PIXELS
def require_safe_https(url):
parsed = urlsplit(url)
if parsed.scheme != "https" or not parsed.hostname:
raise RuntimeError("Artifact URL must use HTTPS")
if parsed.username or parsed.password or parsed.fragment:
raise RuntimeError("Artifact URL contains credentials or a fragment")
addresses = {
info[4][0] for info in socket.getaddrinfo(parsed.hostname, parsed.port or 443)
}
if not addresses or any(not ipaddress.ip_address(value).is_global for value in addresses):
raise RuntimeError("Artifact host did not resolve exclusively to public addresses")
def download_verified_image(url, destination):
current = url
response = None
for _ in range(6):
require_safe_https(current)
response = requests.get(
current,
headers={"Accept": "image/png"}, # Never forward the Ark bearer token.
timeout=(10, 120),
stream=True,
allow_redirects=False,
)
if response.status_code in {301, 302, 303, 307, 308}:
location = response.headers.get("Location")
response.close()
if not location:
raise RuntimeError("Artifact redirect omitted Location")
current = urljoin(current, location)
continue
response.raise_for_status()
break
else:
raise RuntimeError("Too many artifact redirects")
content_type = response.headers.get("Content-Type", "").split(";", 1)[0].lower()
if content_type != "image/png":
response.close()
raise RuntimeError(f"Unexpected artifact Content-Type: {content_type}")
declared = response.headers.get("Content-Length")
if declared and int(declared) > MAX_IMAGE_BYTES:
response.close()
raise RuntimeError("Artifact exceeds declared byte cap")
destination.parent.mkdir(parents=True, exist_ok=True)
handle, temporary = tempfile.mkstemp(dir=destination.parent, prefix=".wan-")
total = 0
digest = hashlib.sha256()
try:
with os.fdopen(handle, "wb") as output:
for chunk in response.iter_content(64 * 1024):
if not chunk:
continue
total += len(chunk)
if total > MAX_IMAGE_BYTES:
raise RuntimeError("Artifact exceeded byte cap while streaming")
digest.update(chunk)
output.write(chunk)
output.flush()
os.fsync(output.fileno())
response.close()
with open(temporary, "rb") as source:
prefix = source.read(8)
if prefix != b"\x89PNG\r\n\x1a\n":
raise RuntimeError("Artifact signature is not PNG")
source.seek(0)
try:
with Image.open(source) as image:
actual_format = image.format
actual_size = image.size
if actual_size[0] * actual_size[1] > MAX_IMAGE_PIXELS:
raise RuntimeError(f"Artifact exceeds pixel cap: {actual_size}")
image.verify()
with Image.open(temporary) as image:
image.load()
except (UnidentifiedImageError, OSError, Image.DecompressionBombError) as exc:
raise RuntimeError("Artifact failed bounded image decode") from exc
if actual_format != "PNG" or actual_size[0] * actual_size[1] > MAX_IMAGE_PIXELS:
raise RuntimeError(f"Unexpected decoded image: {actual_format} {actual_size}")
os.replace(temporary, destination)
except Exception:
response.close()
try:
os.unlink(temporary)
except FileNotFoundError:
pass
raise
return {"bytes": total, "sha256": digest.hexdigest(), "dimensions": actual_size}
key = os.environ.get("DASHSCOPE_API_KEY")
workspace = os.environ.get("DASHSCOPE_WORKSPACE_ID")
region = os.environ.get("DASHSCOPE_REGION", "ap-southeast-1")
hosts = {
"ap-southeast-1": f"https://{workspace}.ap-southeast-1.maas.aliyuncs.com",
"cn-beijing": f"https://{workspace}.cn-beijing.maas.aliyuncs.com",
}
if region not in hosts:
raise SystemExit("DASHSCOPE_REGION must be ap-southeast-1 or cn-beijing")
payload = {
"model": "wan2.7-image-pro",
"input": {"messages": [{"role": "user", "content": [{
"text": "Editorial product hero for a matte navy travel bottle, three-quarter view on a pale stone plinth, bottle centered left with clean negative space on the right, soft window light, restrained shadows, premium realistic photography, no text, no logo invention"
}]}]},
"parameters": {"size": "2K", "n": 1, "thinking_mode": True,
"watermark": False, "seed": 18427},
}
payload_bytes = json.dumps(payload, separators=(",", ":")).encode("utf-8")
print({"model": payload["model"], "request_sha256": hashlib.sha256(payload_bytes).hexdigest(),
"n": payload["parameters"]["n"], "size": payload["parameters"]["size"]})
if os.environ.get("SEND_DASHSCOPE_REQUEST") != "1":
raise SystemExit("Dry run only; set SEND_DASHSCOPE_REQUEST=1 to send a paid call")
if not key or not workspace:
raise SystemExit("Set DASHSCOPE_API_KEY and DASHSCOPE_WORKSPACE_ID")
url = hosts[region] + "/api/v1/services/aigc/multimodal-generation/generation"
r = requests.post(url, headers={"Authorization": f"Bearer {key}",
"Content-Type": "application/json"}, data=payload_bytes,
timeout=(10, 180), stream=True)
raw_response = r.raw.read(MAX_JSON_BYTES + 1, decode_content=True)
r.close()
if len(raw_response) > MAX_JSON_BYTES:
raise RuntimeError("API response exceeded JSON byte cap")
try:
data = json.loads(raw_response)
except (UnicodeDecodeError, ValueError):
raise RuntimeError(f"Non-JSON response: HTTP {r.status_code}")
if not r.ok or data.get("code"):
raise RuntimeError({"http": r.status_code, "request_id": data.get("request_id"),
"code": data.get("code"), "message": data.get("message")})
items = data["output"]["choices"][0]["message"]["content"]
urls = [item["image"] for item in items if item.get("type") == "image" or "image" in item]
if not urls:
raise RuntimeError("Successful response contained no image URL")
out = Path("wan-output.png")
artifact = download_verified_image(urls[0], out)
print({"saved": str(out), **artifact,
"request_id": data.get("request_id"), "usage": data.get("usage")})
Qwen の複数画像編集では、同じトランスポートを維持したまま、モデルとメッセージの内容を置き換えてください。
payload = {
"model": "qwen-image-2.0-pro",
"input": {"messages": [{"role": "user", "content": [
{"image": os.environ["PRODUCT_IMAGE_URL"]},
{"image": os.environ["MATERIAL_IMAGE_URL"]},
{"text": "Use Image 1 as the product geometry and camera reference. Apply only the brushed copper material from Image 2 to the product shell. Preserve silhouette, controls, label position, perspective, lighting direction, shadows, and background. Do not add objects or text."}
]}]},
"parameters": {"n": 2, "size": "1536*1024", "prompt_extend": False,
"negative_prompt": "warped geometry, altered controls, extra text, extra objects",
"watermark": False, "seed": 18427},
}
機密性のない参照には、公開 HTTPS URL のみを使用するか、ポリシーで許可されている場合は、文書化された Base64 データ URL を使用してください。URL にシークレットを埋め込まないでください。
重複課金を避けて失敗に対処する
- 401/認証エラー: キー、リージョン、ワークスペース ID、エンドポイント、モデルのデプロイ範囲をまとめて確認してください。キーを出力しないでください。
- InvalidParameter: アスタリスクを使ったサイズ指定の構文、個数、モデル固有のフィールド、入力順序、Wan の
color_paletteと sequential モードの併用など、サポートされていない組み合わせを検証してください。 DataInspectionFailed: これをモデレーションによる拒否として扱ってください。プロンプトと参照にポリシー違反のコンテンツがないか確認してください。制御を回避するためにリクエストを偽装したり、難読化したりしないでください。- レート制限またはバースト: 呼び出しをキューに入れ、同時実行数に上限を設け、ランダム化した指数バックオフを追加し、再試行に関する指示があれば従ってください。検証エラーやモデレーションエラーをむやみに再試行しないでください。
- タイムアウトまたは結果が不明な場合:
request_idを保持し、再送信する前に結果が存在するか確認してください。現在の非同期 Wan 2.7 またはそれ以前の非同期 Qwen のルートでは、重複を作成するのではなく、既存のtask_idをポーリングしてください。Qwen-Image 2.0 と Z-Image Turbo には、非同期の復旧ルートはありません。 - URL の欠落または破損: 返された画像項目が少なくとも 1 つあることを必須とし、すぐにダウンロードして MIME タイプとデコード結果を検証してください。失敗した単位のみを再試行してください。
2026-07-09 に確認したところ、上限は RAM ユーザー、ワークスペース、キーをまたぐアカウント単位です。レート制限のページには、シンガポールと北京における Wan 2.7 のタスク送信数が毎秒 5 件、同時実行数が 5、Z-Image Turbo の送信数が毎秒 2 件、Qwen-Image 2.0 の送信数の上限は Pro と accelerated ID で異なると記載されています。これらの値をハードコーディングせず、コンソールと最新のレート制限ページを正式な情報源として扱ってください。レート制限が制御するのはスループットであり、合計料金ではありません。
コスト、データ、権利、安全性を管理する
2026-07-09時点で確認した情報では、Alibabaは入力画像ではなく、正常に生成された出力画像に対して課金し、処理に失敗した場合は課金されません。現在のシンガポールの価格表では、wan2.7-image-pro は1画像あたり$0.075、wan2.7-image は1画像あたり$0.03、qwen-image-2.0-pro は1画像あたり$0.075、qwen-image-2.0 は1画像あたり$0.035、Z-Image Turboはプロンプトの書き換えなしで1画像あたり$0.015、書き換えありで1画像あたり$0.03です。北京の価格と無料枠は異なります。参照先の画像料金表に記載された無料枠は、国際デプロイにのみ適用され、利用開始から90日後に期限切れになります。見積もりや呼び出しの直前に、価格と無料枠を再確認してください。
リクエスト数ではなく、Wanの連続生成におけるnも含め、リクエストされた出力数に基づいて最悪の場合の料金を計算してください。アカウントの予算とアラートを設定し、アプリケーション側でも生成数と支出の上限を設けてください。
返される画像のURLとWanのタスクデータは、24時間利用可能であると文書に記載されています。ただし、これはサービス全体における入力・出力データの保持期間を完全に示すものではありません。承認済みのストレージにダウンロードしてから、組織の削除、アクセス制御、暗号化、バックアップのルールを適用してください。モデルのモニタリングでは、アカウントやワークスペースの呼び出しデータが収集される場合があります。また、推論ログを有効にすると、入力と出力がLog Serviceに記録されます。基本および高度なモニタリングデータは、デフォルトで30日間保持されると記載されていますが、参照先のページでは推論ログの保持期間は明らかにされていません。Log Serviceの設定を確認してください。
現在のAlibaba Cloud International Model Studioの規約が適用されるアカウントについて、Alibabaは、別途同意がない限り、Model Studioのモデルの開発や改善にメンバーコンテンツを使用しないと述べています。また、現行のModel Studioのプライバシー関連資料にも、顧客データはモデルのトレーニングに使用されないと記載されています。この確約をすべてのAlibaba関連会社や将来の規約に一般化せず、適用される契約、アカウント、確認日を記録してください。このトレーニングに関する確約は、保持が一切ないことを意味するものではありません。
エンドポイントのリージョンだけでは、厳密なデータ所在地の保証にはなりません。国際規約では、Alibaba、その関連会社、または委託先が設備を運用する地域でのデータの転送、保存、処理が認められています。機密データ、生体データ、健康データ、顧客データ、または未公開の製品データを送信する前に、コンソールの設定、デプロイの範囲、越境移転に関する規約、再委託先、リージョン要件、契約、DPA/セキュリティレビューを確認してください。保持やデータ所在地について公開資料で答えが得られない場合は、不確実であることを明示してエスカレーションし、保持が一切ないと約束しないでください。
ユーザーが処理する権利と同意を得ている参照資料とコピーのみを使用してください。個人を特定できる人物については明示的な同意を得て、未成年者やセンシティブな状況については、さらに厳格な承認を得てください。推薦を受けているかのように示したり、ドキュメンタリー証拠を捏造したり、欺く目的で来歴情報を取り除いたり、モデレーションを回避するために生成を利用したりしないでください。公開前に、商標、有名人の肖像、著作権で保護されたキャラクター、パッケージ、フォント、ライセンス対象の素材を確認してください。Alibaba自身のテキストから画像を生成するガイドでは、商標、有名人の肖像、著作権に関するリスクの評価は顧客の責任とされています。
watermark: trueは、完全な来歴情報や権利保護の解決策ではなく、プロバイダーが表示する透かし(Wan 2.7ではAI Generated、QwenではQwen-Image)として扱ってください。表示される透かしがオフの場合も、素材の使用許可、モデル/スナップショット、リージョン、プロンプト、パラメーター、シード、リクエストID、作成日時、編集内容、人による承認を含む内部マニフェストを保持してください。サービス規約では、出力が意図しないもの、独自性のないもの、または顧客間で類似するものとなる可能性が警告されているため、すべての出力を個別に確認してください。
主な情報源
上記の変動する情報はすべて、2026-07-09 に以下の公式情報源を照合して確認しました。