視覚理解モデルは、お客様が提供する画像および動画についての質問に回答します。画像キャプション、視覚質問応答(VQA)、オブジェクトのローカライズなど、単一または複数の画像入力に対応するタスクをサポートしています。
対応リージョン: シンガポール、米国 (バージニア)、中国 (北京)、中国 (香港)、ドイツ (フランクフルト)。各リージョンには、専用の API キー およびエンドポイントを使用してください。
オンラインで試す: Alibaba Cloud Model Studio コンソール にアクセスし、右上隅からリージョンを選択した後、Vision ページに移動します。
クイックスタート
前提条件
API キーの取得 および 環境変数へのエクスポート を実行します。
SDK を使用してモデルを呼び出す場合は、SDK をインストールします。DashScope Python SDK 1.24.6 以降、または DashScope Java SDK 2.21.10 以降をご利用ください。
以下の例では、画像の内容を説明するためのモデル呼び出し方法を示します。詳細については、「ローカルファイルの渡し方」および「画像の制限事項」をご参照ください。
OpenAI 互換
Python
from openai import OpenAI
import os
client = OpenAI(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
completion = client.chat.completions.create(
model="qwen3.5-plus", # qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[
{
"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)応答
これはビーチで撮影された写真です。写真には、砂の上に座っている人物と犬が写っており、背景には海と空が広がっています。人物と犬は相互に触れ合っている様子で、犬の前足が人物の手の上に乗っています。フレームの右側から差し込む日差しが、シーンに温かみのある雰囲気を加えています。Node.js
import OpenAI from "openai";
const openai = new OpenAI({
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.5-plus", // qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{
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: "この画像には何が描かれていますか?"
}
]
}
]
});
console.log(response.choices[0].message.content);
}
main()応答
これはビーチで撮影された写真です。写真には、砂の上に座っている人物と犬が写っており、背景には海と空が広がっています。人物と犬は相互に触れ合っている様子で、犬の前足が人物の手の上に乗っています。フレームの右側から差し込む日差しが、シーンに温かみのある雰囲気を加えています。curl
# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.5-plus",
"messages": [
{"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": "この画像には何が描かれていますか?"}
]
}]
}'応答
{
"choices": [
{
"message": {
"content": "これはビーチで撮影された写真です。写真には、砂の上に座っている人物と犬が写っており、背景には海と空が広がっています。人物と犬は相互に触れ合っている様子で、犬の前足が人物の手の上に乗っています。フレームの右側から差し込む日差しが、シーンに温かみのある雰囲気を加えています。",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 1270,
"completion_tokens": 54,
"total_tokens": 1324
},
"created": 1725948561,
"system_fingerprint": null,
"model": "qwen3.5-plus",
"id": "chatcmpl-0fd66f46-b09e-9164-a84f-3ebbbedbac15"
}DashScope
Python
import os
import dashscope
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"text": "この画像には何が描かれていますか?"}]
}]
response = dashscope.MultiModalConversation.call(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus', # qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])応答
これはビーチで撮影された写真です。写真には女性と犬が写っており、女性は砂の上に座り、笑顔で犬と触れ合っています。犬は首輪を着けており、女性の手とハイファイブしているように見えます。背景には海と空が広がっており、日差しが二人を照らして、温かみのある雰囲気を演出しています。Java
import java.util.Arrays;
import java.util.Collections;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
static {
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"),
Collections.singletonMap("text", "この画像には何が描かれていますか?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus") // この例では qwen3.5-plus モデルを使用します。他のモデルに置き換えることもできます。利用可能なモデルの一覧については、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}応答
これはビーチで撮影された写真です。写真にはチェック柄のシャツを着た人物と首輪を着けた犬が写っています。人物と犬は向かい合って座っており、相互に触れ合っている様子です。背景には海と空が広がっており、日差しが二人を照らして、温かみのある雰囲気を演出しています。curl
# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"text": "この画像には何が描かれていますか?"}
]
}
]
}
}'応答
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "これはビーチで撮影された写真です。写真にはチェック柄のシャツを着た人物と首輪を着けた犬が写っています。二人は砂の上に座っており、背景には海と空が広がっています。フレームの右側から差し込む日差しが、シーンに温かみのある雰囲気を加えています。"
}
]
}
}
]
},
"usage": {
"output_tokens": 55,
"input_tokens": 1271,
"image_tokens": 1247
},
"request_id": "ccf845a3-dc33-9cda-b581-20fe7dc23f70"
}モデル選択
推奨 Qwen3.5:最新世代の視覚理解モデルです。マルチモーダル推論、2D/3D 画像理解、複雑なドキュメント解析、視覚プログラミング、動画理解、マルチモーダルエージェント構築などのタスクに優れています。中国本土およびシンガポールのリージョンでご利用いただけます。
qwen3.5-plus:Qwen3.5 シリーズ中最も高性能なモデルであり、最高レベルの精度とパフォーマンスを必要とするタスクに推奨されます。qwen3.5-flash:高速かつコスト効率の高いモデルで、パフォーマンスとコストのバランスが取れており、遅延の影響を受けやすいシナリオに最適です。qwen3.5-397b-a17b、qwen3.5-122b-a10b、qwen3.5-27b、およびqwen3.5-35b-a3b:Qwen3.5 シリーズのオープンソースモデルです。
Qwen3-VL シリーズは、高精度のオブジェクト認識およびローカライズ(3D 含む)、エージェントによるツール呼び出し、ドキュメントおよびウェブページの解析、複雑な問題解決、長尺動画の理解などのタスクにも適しています。
qwen3-vl-plus:Qwen3-VL シリーズ中最も強力なモデルです。qwen3-vl-flash:高速かつコスト効率の高いモデルで、パフォーマンスとコストのバランスが取れており、遅延の影響を受けやすいシナリオに最適です。
Qwen2.5-VL シリーズは、シンプルな画像キャプションや短尺動画からの要約抽出などの汎用的なタスクに適しています。
qwen-vl-max(Qwen2.5-VL シリーズ):Qwen2.5-VL シリーズ中最も高性能なモデルです。qwen-vl-plus(Qwen2.5-VL シリーズ):高速なモデルで、パフォーマンスとコストのバランスが取れています。
モデル名、コンテキスト、価格、スナップショットバージョンについては、「モデル一覧」をご参照ください。同時実行数の制限については、「レート制限」をご参照ください。
機能
視覚質問応答(VQA)
人物、場所、動物、植物などを特定するなど、画像の内容を説明・分類します。
太陽がまぶしい場合、この画像からどのアイテムを使えばよいですか? | 太陽がまぶしい場合は、画像にあるピンク色のサングラスをご利用ください。サングラスは強い光を効果的に遮断し、紫外線による目の損傷を軽減し、明るい日差しの中でも快適な視界を確保しながら視力を保護します。 |
クリエイティブライティング
画像または動画の内容から、物語作成、コピーライティング、短尺動画の脚本制作などのクリエイティブなシナリオ向けに、鮮やかなテキスト説明を生成します。
この画像に基づいて、SNS 用の魅力的な投稿文を作成してください。 | 承知しました。この画像には豊かな中秋節の雰囲気が漂っており、古典的要素と現代的要素が巧みに融合しています。画像の主要な要素に基づき、以下にさまざまなスタイルの SNS 投稿文のアイデアをいくつかご提案いたします。 詩的・審美的スタイル 今宵、月は満ちて万人に輝く。秋の想いは君へと届く。嫦娥の飛翔と玉兎の薬——古来より続くロマンスが、今宵再び蘇る。この月明かりが君の帰りを照らし、私の最も深い願いを運んでくれますように。中秋節おめでとうございます! 温かみのある心のこもったスタイル 穏やかな中秋の夜、満月は満ちて家族の団欒を象徴します。花火を見上げ、月を眺め、月餅を味わい、あなたへの祝福を込めて。すべての希望と夢が叶いますように。皆さま、中秋節と家族団欒のお祝いをお楽しみください! |
OCR および情報抽出
画像内のテキストや数式を認識したり、領収書、証明書、フォームなどのドキュメントから情報を抽出したりします。これらのモデルは、整形されたテキスト出力に対応しています。Qwen3.5 および Qwen3-VL モデルは、言語対応範囲を 33 言語まで拡大しています。対応言語の一覧については、「モデル機能比較」をご参照ください。
画像から以下のフィールドを抽出してください:['請求書コード'、'請求書番号'、'宛先'、'燃油サーチャージ'、'運賃'、'旅行日'、'出発時刻'、'列車番号'、'座席番号']。結果を JSON 形式で出力してください。 | { "請求書コード": "221021325353", "請求書番号": "10283819", "宛先": "開発区", "燃油サーチャージ": "2.0", "運賃": "8.00<全額>", "旅行日": "2013-06-29", "出発時刻": "連番", "列車番号": "040", "座席番号": "371" } |
多分野の問題解決
画像に含まれる数学、物理、化学などの教科の問題を解きます。K-12 教育から大人の学習まで、教育用途に幅広く対応しています。
画像の数学の問題をステップ・バイ・ステップで解いてください。 |
|
視覚プログラミング
デザインのモックアップやウェブサイトのスクリーンショットなどの視覚入力から、HTML、CSS、JS コードを生成します。
私のスケッチに基づいて HTML および CSS を使用したウェブページを作成してください。メインのカラーテーマは黒にしてください。 |
ウェブページのプレビュー |
オブジェクトのローカライズ
2D および 3D のローカライズをサポートしており、オブジェクトの向き、視点の変化、被覆関係を判断できます。3D ローカライズは Qwen3-VL モデルの新機能です。
Qwen2.5-VL モデルは、480×480 ~ 2560×2560 ピクセルの解像度範囲内で堅牢なオブジェクトのローカライズを実現します。この範囲外では検出精度が低下し、バウンディングボックスの位置がずれることがあります。
ローカライズ結果を元の画像に描画する方法については、「よくある質問」をご参照ください。
2D ポジショニング
| 2D ポジショニング結果の可視化
|
ドキュメント解析
スキャン画像や画像ベースの PDF などの画像ベースのドキュメントを、QwenVL HTML 形式または QwenVL Markdown 形式に解析します。この形式では、テキストを正確に認識し、画像や表などの要素の位置情報を取得できます。Qwen3-VL モデルは、ドキュメントを Markdown 形式に解析する機能を追加しています。
推奨プロンプト:qwenvl html(HTML 形式で解析する場合)またはqwenvl markdown(Markdown 形式で解析する場合)。
qwenvl markdown。 |
結果の可視化 |
動画理解
動画の内容を分析し、特定のイベントのタイムスタンプを特定したり、重要な時間帯の要約を生成したりします。
動画内の人物が実行する一連の動作を説明してください。結果を start_time、end_time、event フィールドを持つ JSON 形式で出力してください。タイムスタンプには HH:mm:ss 形式を使用します。 | { "events": [ { "start_time": "00:00:00", "end_time": "00:00:05", "event": "人物が段ボール箱を持ち、テーブルに向かって歩き、それをテーブルの上に置きます。" }, { "start_time": "00:00:05", "end_time": "00:00:15", "event": "人物がスキャナーを取り、それを箱のラベルに向けてスキャンします。" }, { "start_time": "00:00:15", "end_time": "00:00:21", "event": "人物がスキャナーを元の場所に戻し、その後ノートブックに情報を記録するためにペンを取ります。"}] } |
コア機能
思考モードの有効化/無効化
qwen3.5、qwen3-vl-plus、およびqwen3-vl-flashシリーズのモデルは、推論後に応答するか、直接応答するかを選択できるハイブリッド思考モデルです。enable_thinkingパラメーターを使用して、思考モードの有効化/無効化を制御できます。true:思考モードを有効化します。qwen3.5シリーズのデフォルト値はtrueです。false:思考モードを無効化します。qwen3-vl-plusおよびqwen3-vl-flashシリーズのデフォルト値はfalseです。
thinkingサフィックス付きのモデル(例:qwen3-vl-235b-a22b-thinking)は、専用の推論モデルです。応答前に必ず推論を実行し、この機能を無効化することはできません。
モデル構成: ツール呼び出しを伴わない一般的な会話シナリオでは、最適なパフォーマンスを得るために、
System Messageを設定しないでください。代わりに、モデルの役割設定や出力フォーマット要件などの指示をUser Messageを通じて渡してください。ストリーミング出力の使用: 思考モードを有効化すると、ストリーミング出力および非ストリーミング出力 の両方がサポートされます。長い応答によりタイムアウトが発生するのを防ぐために、ストリーミング出力を使用してください。
思考長の制限: 深層的思考モデルは、冗長な推論を生成することがあります。
thinking_budgetパラメーターを使用して、推論の長さを制限できます。推論中に生成されるトークン数がthinking_budgetを超えた場合、推論は途中で打ち切られ、モデルは即座に最終応答の生成を開始します。thinking_budgetのデフォルト値は、モデルの最大 Chain-of-Thought 長です。「モデル一覧」をご参照ください。
OpenAI 互換
enable_thinking パラメーターは、標準の OpenAI パラメーターではありません。OpenAI Python SDK を使用する場合は、extra_body を介して渡してください。
import os
from openai import OpenAI
client = OpenAI(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
reasoning_content = "" # 全体の推論プロセスを格納します。
answer_content = "" # 全体の応答を格納します。
is_answering = False # モデルが最終応答を生成中かどうかを追跡します。
enable_thinking = True
# チャット完了リクエストを作成します。
completion = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
},
},
{"type": "text", "text": "この問題をどうやって解けばよいですか?"},
],
},
],
stream=True,
# `thinking mode` は `qwen3.5`/`qwen3-vl-plus`/`qwen3-vl-flash` で切り替え可能ですが、'thinking' サフィックス付きのモデルでは必須であり、その他の Qwen-VL モデルには適用されません。
# `thinking_budget` パラメーターは、推論プロセスにおける最大トークン数を設定します。
extra_body={
'enable_thinking': enable_thinking,
"thinking_budget": 81920},
# 最後のチャンクでトークン使用量を返す場合は、次のコードのコメントを解除してください。
# stream_options={
# "include_usage": True
# }
)
if enable_thinking:
print("\n" + "=" * 20 + "推論プロセス" + "=" * 20 + "\n")
for chunk in completion:
# chunk.choices が空の場合、使用量を表示します。
if not chunk.choices:
print("\n使用量:")
print(chunk.usage)
else:
delta = chunk.choices[0].delta
# 推論プロセスを表示します。
if hasattr(delta, 'reasoning_content') and delta.reasoning_content is not None:
print(delta.reasoning_content, end='', flush=True)
reasoning_content += delta.reasoning_content
else:
# 応答の表示を開始します。
if delta.content != "" and is_answering is False:
print("\n" + "=" * 20 + "完全な応答" + "=" * 20 + "\n")
is_answering = True
# 応答コンテンツを表示します。
if delta.content is not None:
print(delta.content, end='', flush=True)
answer_content += delta.content
# print("=" * 20 + "完全な推論プロセス" + "=" * 20 + "\n")
# print(reasoning_content)
# print("=" * 20 + "完全な応答" + "=" * 20 + "\n")
# print(answer_content)import OpenAI from "openai";
// OpenAI クライアントを初期化します。
const openai = new OpenAI({
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
let reasoningContent = '';
let answerContent = '';
let isAnswering = false;
let enableThinking = true;
let messages = [
{
role: "user",
content: [
{ type: "image_url", image_url: { "url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg" } },
{ type: "text", text: "この問題をどうやって解けばよいですか?" },
]
}]
async function main() {
try {
const stream = await openai.chat.completions.create({
model: 'qwen3.5-plus',
messages: messages,
stream: true,
// 注意:Node.js SDK では、enable_thinking のような非標準パラメーターを extra_body ではなくトップレベルで渡します。
enable_thinking: enableThinking,
thinking_budget: 81920
});
if (enableThinking){console.log('\n' + '='.repeat(20) + '推論プロセス' + '='.repeat(20) + '\n');}
for await (const chunk of stream) {
if (!chunk.choices?.length) {
console.log('\n使用量:');
console.log(chunk.usage);
continue;
}
const delta = chunk.choices[0].delta;
// 推論コンテンツを処理します。
if (delta.reasoning_content) {
process.stdout.write(delta.reasoning_content);
reasoningContent += delta.reasoning_content;
}
// 応答コンテンツを処理します。
else if (delta.content) {
if (!isAnswering) {
console.log('\n' + '='.repeat(20) + '完全な応答' + '='.repeat(20) + '\n');
isAnswering = true;
}
process.stdout.write(delta.content);
answerContent += delta.content;
}
}
} catch (error) {
console.error('エラー:', error);
}
}
main();# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.5-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"
}
},
{
"type": "text",
"text": "この問題をどうやって解けばよいですか?"
}
]
}
],
"stream":true,
"stream_options":{"include_usage":true},
"enable_thinking": true,
"thinking_budget": 81920
}'DashScope
import os
import dashscope
from dashscope import MultiModalConversation
# エンドポイントはリージョンによって異なります。お使いのリージョンに応じてエンドポイントを変更してください。
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"
enable_thinking=True
messages = [
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "この問題を解決するにはどうすればよいですか?"}
]
}
]
response = MultiModalConversation.call(
# 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください: api_key="sk-xxx",
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください: https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model="qwen3.5-plus",
messages=messages,
stream=True,
# `思考モード` は `qwen3.5`/`qwen3-vl-plus`/`qwen3-vl-flash` で切り替え可能です。'thinking' サフィックスが付いたモデルでは必須であり、他の Qwen-VL モデルには適用されません。
enable_thinking=enable_thinking,
# `thinking_budget` パラメーターは、推論プロセスにおけるトークン数の最大値を設定します。
thinking_budget=81920,
)
# 完全な推論プロセスを格納します。
reasoning_content = ""
# 完全な応答を格納します。
answer_content = ""
# モデルが最終的な応答を生成しているかどうかを追跡します。
is_answering = False
if enable_thinking:
print("=" * 20 + "思考プロセス" + "=" * 20)
for chunk in response:
# 空のチャンクは無視します。
message = chunk.output.choices[0].message
reasoning_content_chunk = message.get("reasoning_content", None)
if (chunk.output.choices[0].message.content == [] and
reasoning_content_chunk == ""):
pass
else:
# 推論プロセス中です。
if reasoning_content_chunk is not None and chunk.output.choices[0].message.content == []:
print(chunk.output.choices[0].message.reasoning_content, end="")
reasoning_content += chunk.output.choices[0].message.reasoning_content
# 応答中です。
elif chunk.output.choices[0].message.content != []:
if not is_answering:
print("\n" + "=" * 20 + "完全な応答" + "=" * 20)
is_answering = True
print(chunk.output.choices[0].message.content[0]["text"], end="")
answer_content += chunk.output.choices[0].message.content[0]["text"]
# 完全な推論プロセスと完全な応答を出力するには、次のコードのコメントを解除して実行してください。
# print("=" * 20 + "完全な思考プロセス" + "=" * 20 + "\n")
# print(f"{reasoning_content}")
# print("=" * 20 + "完全な応答" + "=" * 20 + "\n")
# print(f"{answer_content}")// DashScope SDK バージョン >= 2.21.10
import java.util.*;
import org.slf4j.Logger;
import org.slf4j.LoggerFactory;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import io.reactivex.Flowable;
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.common.MultiModalMessage;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.exception.InputRequiredException;
import java.lang.System;
import com.alibaba.dashscope.utils.Constants;
public class Main {
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
static {Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";}
private static final Logger logger = LoggerFactory.getLogger(Main.class);
private static StringBuilder reasoningContent = new StringBuilder();
private static StringBuilder finalContent = new StringBuilder();
private static boolean isFirstPrint = true;
private static void handleGenerationResult(MultiModalConversationResult message) {
String re = message.getOutput().getChoices().get(0).getMessage().getReasoningContent();
String reasoning = Objects.isNull(re)?"":re; // 推論コンテンツが null の場合は、空文字列をデフォルト値として使用します。
List<Map<String, Object>> content = message.getOutput().getChoices().get(0).getMessage().getContent();
if (!reasoning.isEmpty()) {
reasoningContent.append(reasoning);
if (isFirstPrint) {
System.out.println("====================推論プロセス====================");
isFirstPrint = false;
}
System.out.print(reasoning);
}
if (Objects.nonNull(content) && !content.isEmpty()) {
Object text = content.get(0).get("text");
finalContent.append(content.get(0).get("text"));
if (!isFirstPrint) {
System.out.println("\n====================完全な応答====================");
isFirstPrint = true;
}
System.out.print(text);
}
}
public static MultiModalConversationParam buildMultiModalConversationParam(MultiModalMessage Msg) {
return MultiModalConversationParam.builder()
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:.apiKey("sk-xxx")
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus")
.messages(Arrays.asList(Msg))
.enableThinking(true)
.thinkingBudget(81920)
.incrementalOutput(true)
.build();
}
public static void streamCallWithMessage(MultiModalConversation conv, MultiModalMessage Msg)
throws NoApiKeyException, ApiException, InputRequiredException, UploadFileException {
MultiModalConversationParam param = buildMultiModalConversationParam(Msg);
Flowable<MultiModalConversationResult> result = conv.streamCall(param);
result.blockingForEach(message -> {
handleGenerationResult(message);
});
}
public static void main(String[] args) {
try {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMsg = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(Collections.singletonMap("image", "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"),
Collections.singletonMap("text", "この問題をどうやって解けばよいですか?")))
.build();
streamCallWithMessage(conv, userMsg);
// 最終結果を出力します。
// if (reasoningContent.length() > 0) {
// System.out.println("\n====================完全な応答====================");
// System.out.println(finalContent.toString());
// }
} catch (ApiException | NoApiKeyException | UploadFileException | InputRequiredException e) {
logger.error("例外が発生しました:{}", e.getMessage());
}
System.exit(0);
}
}# ======= 重要 =======
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-H 'X-DashScope-SSE: enable' \
-d '{
"model": "qwen3.5-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://img.alicdn.com/imgextra/i1/O1CN01gDEY8M1W114Hi3XcN_!!6000000002727-0-tps-1024-406.jpg"},
{"text": "この問題をどうやって解けばよいですか?"}
]
}
]
},
"parameters":{
"enable_thinking": true,
"incremental_output": true,
"thinking_budget": 81920
}
}'複数画像入力
視覚理解モデルでは、製品比較や複数ページのドキュメント処理などのタスクにおいて、単一のリクエストで複数の画像を渡すことができます。そのためには、user message の content 配列に複数の画像オブジェクトを含めます。
画像の枚数は、テキストおよび画像の合計トークン数がモデルの最大入力トークン数を超えないように制限されます。
OpenAI 互換
Python
import os
from openai import OpenAI
client = OpenAI(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.5-plus", # qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=[
{"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": "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 には、森を歩いているトラが描かれています。トラの毛並みは黒い縞模様入りのオレンジ色で、周囲は木々や植物で密集しており、地面には落ち葉が散らばっています。このシーンからは、野生の雰囲気が感じられます。Node.js
import OpenAI from "openai";
const openai = new OpenAI(
{
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.5-plus", // qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{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: "image_url",image_url: {"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"}},
{type: "text", text: "これらの画像には何が描かれていますか?" },
]}]
});
console.log(response.choices[0].message.content);
}
main()応答
最初の画像には、ビーチで相互に触れ合っている人物と犬が描かれています。人物はチェック柄のシャツを着ており、犬は首輪を着けています。二人はハイファイブまたはハンドシェイクをしているようです。
2 番目の画像には、森を歩いているトラが描かれています。トラの毛並みは黒い縞模様入りのオレンジ色で、背景は緑の木々や植物で構成されています。curl
# ======= 重要 =======
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"messages": [
{
"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": "image_url",
"image_url": {
"url": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"
}
},
{
"type": "text",
"text": "これらの画像には何が描かれていますか?"
}
]
}
]
}'応答
{
"choices": [
{
"message": {
"content": "画像 1 には、ビーチで相互に触れ合っている女性とラブラドール・レトリバーが描かれています。女性はチェック柄のシャツを着ており、砂の上に座って犬の前足とハイファイブしています。背景には海と夕焼けの空が広がっており、非常に温かく調和の取れた雰囲気を演出しています。\n\n画像 2 には、森を歩いているトラが描かれています。トラの毛並みは黒い縞模様入りのオレンジ色で、前方へと歩き進んでいます。周囲は木々や植物で密集しており、地面には落ち葉が散らばっています。このシーンからは、野生の雰囲気と生命力が感じられます。",
"role": "assistant"
},
"finish_reason": "stop",
"index": 0,
"logprobs": null
}
],
"object": "chat.completion",
"usage": {
"prompt_tokens": 2497,
"completion_tokens": 109,
"total_tokens": 2606
},
"created": 1725948561,
"system_fingerprint": null,
"model": "qwen3.5-plus",
"id": "chatcmpl-0fd66f46-b09e-9164-a84f-3ebbbedbac15"
}DashScope
Python
import os
import dashscope
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},
{"text": "これらの画像には何が描かれていますか?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:api_key="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus', # qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])応答
これらの画像には自然のシーンにいる動物が描かれています。画像 1 には、ビーチで相互に触れ合っている人物と犬が描かれています。画像 2 には、森を歩いているトラが描かれています。Java
import java.util.Arrays;
import java.util.Collections;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
Collections.singletonMap("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"),
Collections.singletonMap("image", "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"),
Collections.singletonMap("text", "これらの画像には何が描かれていますか?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus") // qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text")); }
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}応答
これらの画像には自然のシーンにいる動物が描かれています。
1. 最初の画像:女性と犬がビーチで相互に触れ合っています。女性はチェック柄のシャツを着ており、砂の上に座っており、犬は首輪を着けており、彼女の手とハイファイブしています。
2. 2 番目の画像:トラが森を歩いている様子が描かれています。トラの毛並みは黒い縞模様入りのオレンジ色で、背景には木々や落ち葉があります。curl
# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.5-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241022/emyrja/dog_and_girl.jpeg"},
{"image": "https://dashscope.oss-cn-beijing.aliyuncs.com/images/tiger.png"},
{"text": "これらの画像には何が描かれていますか?"}
]
}
]
}
}'応答
{
"output": {
"choices": [
{
"finish_reason": "stop",
"message": {
"role": "assistant",
"content": [
{
"text": "これらの画像には自然のシーンにいる動物が描かれています。画像 1 には、ビーチで相互に触れ合っている人物と犬が描かれています。画像 2 には、森を歩いているトラが描かれています。"
}
]
}
}
]
},
"usage": {
"output_tokens": 81,
"input_tokens": 1277,
"image_tokens": 2497
},
"request_id": "ccf845a3-dc33-9cda-b581-20fe7dc23f70"
}動画理解
視覚理解モデルは、動画ファイルまたは画像リスト(動画フレーム)から動画の内容を分析します。以下の例では、オンライン動画または URL で指定された画像リストを分析する方法を示します。動画または画像リストの枚数に関する制限については、「動画の制限事項」セクションをご参照ください。
最適なパフォーマンスを得るには、動画ファイルの分析には最新版または最近のスナップショット版のモデルをご利用ください。
動画ファイル
視覚理解モデルは、動画フレームのシーケンスを抽出することで内容分析を行います。フレーム抽出ポリシーは、以下の 2 つのパラメーターで制御できます。
fps:フレーム抽出頻度を制御します。1 秒あたり
秒ごとに 1 フレームを抽出します。有効値は [0.1, 10] です。デフォルト値は 2.0 です。 高速で動きのあるシーンでは、より多くのディテールを捉えるために、より高い fps 値を設定してください。
静止画または長尺の動画では、処理効率を向上させるために、より低い fps 値を設定することを検討してください。
max_frames:動画から抽出するフレーム数の上限を制限します。fps 値に基づいて計算されたフレーム総数がこの上限を超える場合、システムは max_frames の上限内に収まるよう、フレームを均等にサンプリングします。このパラメーターは DashScope SDK のみで利用可能です。
OpenAI 互換
OpenAI SDK または HTTP リクエストを使用して、視覚理解モデルに動画ファイルを直接提供する場合、ユーザー メッセージの"type"パラメーターを"video_url"に設定します。
Python
import os
from openai import OpenAI
client = OpenAI(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{
"role": "user",
"content": [
# 動画ファイルを直接提供する場合、type を video_url に設定します。
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps": 2
},
{
"type": "text",
"text": "この動画の内容は何ですか?"
}
]
}
]
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
const openai = new OpenAI(
{
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:apiKey: "sk-xxx"
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.5-plus",
messages: [
{
role: "user",
content: [
// 動画ファイルを直接提供する場合、type を video_url に設定します。
{
type: "video_url",
video_url: {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps": 2
},
{
type: "text",
text: "この動画の内容は何ですか?"
}
]
}
]
});
console.log(response.choices[0].message.content);
}
main();curl
# ======= 重要 =======
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "video_url",
"video_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4"
},
"fps":2
},
{
"type": "text",
"text": "この動画の内容は何ですか?"
}
]
}
]
}'DashScope
Python
import dashscope
import os
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{"role": "user",
"content": [
# fps パラメーターはフレームレートを制御します。1 秒あたり 1/fps 秒ごとに 1 フレームを抽出します。詳細については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/use-qwen-by-calling-api?#2ed5ee7377fum
{"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4","fps":2},
{"text": "この動画の内容は何ですか?"}
]
}
]
response = dashscope.MultiModalConversation.call(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:api_key ="sk-xxx"
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus',
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])Java
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// fps パラメーターはフレームレートを制御します。1 秒あたり 1/fps 秒ごとに 1 フレームを抽出します。詳細については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/use-qwen-by-calling-api?#2ed5ee7377fum
Map<String, Object> params = new HashMap<>();
params.put("video", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4");
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "この動画の内容は何ですか?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 中国 (北京) リージョンのモデルを使用する場合、そのリージョンの API キーを使用する必要があります。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
# ======= 重要事項 =======
# 構成はリージョンによって異なります。実際のリージョンに基づいて構成を変更してください。
# API キーはリージョンによって異なります。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"input":{
"messages":[
{"role": "user","content": [{"video": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20241115/cqqkru/1.mp4","fps":2},
{"text": "この画像に描かれているシーンは何ですか?"}]}]}
}'画像リスト
動画を画像リスト(事前に抽出された動画フレーム)として提供する場合、fps パラメーターを使用して、フレーム間の時間間隔をモデルに通知します。これにより、イベントのシーケンス、持続時間、動的変化をより正確に理解できます。このモデルでは、fps パラメーターを使用して元の動画のフレーム抽出レート(1 秒あたり
OpenAI 互換
OpenAI SDK または HTTP リクエストを使用して、動画を画像リストとして提供する場合、ユーザー メッセージの"type"パラメーターを"video"に設定します。
Python
import os
from openai import OpenAI
client = OpenAI(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.5-plus", # qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/models
messages=[{"role": "user","content": [
# 画像リストを提供する場合、ユーザー メッセージの 'type' パラメーターは 'video' になります。
{"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"],
"fps":2},
{"type": "text","text": "この動画に示されているプロセスを説明してください。"},
]}]
)
print(completion.choices[0].message.content)Node.js
// package.json で "type": "module" を指定していることを確認してください。
import OpenAI from "openai";
const openai = new OpenAI({
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:apiKey: "sk-xxx",
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const response = await openai.chat.completions.create({
model: "qwen3.5-plus", // qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/models
messages: [{
role: "user",
content: [
{
// 画像リストを提供する場合、ユーザー メッセージの 'type' パラメーターは 'video' になります。
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"],
"fps": 2
},
{
type: "text",
text: "この動画に示されているプロセスを説明してください。"
}
]
}]
});
console.log(response.choices[0].message.content);
}
main();curl
# ======= 重要 =======
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"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"],
"fps":2},
{"type": "text","text": "この動画に示されているプロセスを説明してください。"}]}]
}'DashScope
Python
import os
import dashscope
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [{"role": "user",
"content": [
# 画像リストを提供する場合、fps パラメーターは Qwen3.5、Qwen3-VL、および Qwen2.5-VL モデルに適用されます。
{"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"],
"fps":2},
{"text": "この動画に示されているプロセスを説明してください。"}]}]
response = dashscope.MultiModalConversation.call(
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:api_key="sk-xxx",
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen3.5-plus', # qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages
)
print(response.output.choices[0].message.content[0]["text"])Java
// DashScope SDK バージョン 2.21.10 以降が必要です。
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen3.5-plus"; // qwen3.5-plus モデルを使用します。その他のモデルについては、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
public static void videoImageListSample() throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
// 画像リストを提供する場合、fps パラメーターは Qwen3.5、Qwen3-VL、および Qwen2.5-VL モデルに適用されます。
Map<String, Object> params = new HashMap<>();
params.put("video", Arrays.asList("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"));
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(
params,
Collections.singletonMap("text", "この動画に示されているプロセスを説明してください。")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合は、次の行を Model Studio の API キーに置き換えます:.apiKey("sk-xxx")
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL_NAME)
.messages(Arrays.asList(userMessage)).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
videoImageListSample();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご使用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには固有の API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"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"
],
"fps":2
},
{
"text": "この動画に示されているプロセスを説明してください。"
}
]
}
]
}
}'ローカルファイルの渡し方(Base64 エンコーディングまたはファイルパス)
視覚理解モデルでは、ローカルファイルをアップロードする方法として、Base64 エンコードによるアップロードと、ファイルパスを直接渡す方法の 2 つを提供しています。ファイルサイズや SDK の種類に応じて、適切な方法を選択できます。具体的な推奨事項については、「ファイルアップロード方法の選択方法」をご参照ください。どちらの方法も、「画像の制限事項」に記載されている要件を満たしている必要があります。
Base64 エンコーディングによるアップロード
ファイルを Base64 エンコードされた文字列に変換し、それをモデルに渡します。この方法は、OpenAI SDK および DashScope SDK、HTTP リクエストすべてで使用できます。
ファイルパスによるアップロード
ローカルファイルのパスを直接モデルに渡します。この方法は、DashScope Python SDK および Java SDK のみでサポートされています。DashScope HTTP または OpenAI 互換のリクエストでは使用できません。
以下の表を使用して、プログラミング言語およびオペレーティングシステムに基づいてファイルパスを指定します。
画像
ファイルパス
Python
import os
import dashscope
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# xxx/eagle.png をローカル画像の絶対パスに置き換えます。
local_path = "xxx/eagle.png"
image_path = f"file://{local_path}"
messages = [
{'role':'user',
'content': [{'image': image_path},
{'text': 'この画像には何が描かれていますか?'}]}]
response = dashscope.MultiModalConversation.call(
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
# 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus', # この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルの一覧については、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void callWithLocalFile(String localPath)
throws ApiException, NoApiKeyException, UploadFileException {
String filePath = "file://"+localPath;
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>(){{put("image", filePath);}},
new HashMap<String, Object>(){{put("text", "この画像には何が描かれていますか?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を .apiKey("sk-xxx") に置き換えてください。
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus") // この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルの一覧については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));}
public static void main(String[] args) {
try {
// xxx/eagle.png をローカル画像の絶対パスに置き換えます。
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Base64 エンコーディング
OpenAI 互換
Python
from openai import OpenAI
import os
import base64
# この関数はローカルファイルを Base64 エンコードされた文字列に変換します。
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# xxx/eagle.png をローカル画像の絶対パスに置き換えます。
base64_image = encode_image("xxx/eagle.png")
client = OpenAI(
# API キーはリージョンごとに異なります。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
# 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv('DASHSCOPE_API_KEY'),
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.5-plus", # この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルの一覧については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages=[
{
"role": "user",
"content": [
{
"type": "image_url",
# 注意:Base64 エンコードされたデータを渡す場合、data URI フォーマット(例:data:image/png;base64)が実際の画像フォーマットと一致している必要があります。
# 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)Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を apiKey: "sk-xxx" に置き換えてください。
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
// xxx/eagle.png をローカル画像の絶対パスに置き換えます。
const base64Image = encodeImage("xxx/eagle.png")
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen3.5-plus", // この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルの一覧については、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages: [
{"role": "user",
"content": [{"type": "image_url",
// 注意:Base64 エンコードされたデータを渡す場合、data URI フォーマット(例:data:image/png;base64)が実際の画像フォーマットと一致している必要があります。
// PNG 画像: `data:image/png;base64,${base64Image}`
// JPEG 画像:`data:image/jpeg;base64,${base64Image}`
// WEBP 画像:`data:image/webp;base64,${base64Image}`
"image_url": {"url": `data:image/png;base64,${base64Image}`},},
{"type": "text", "text": "この画像には何が描かれていますか?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();curl
ファイルを Base64 エンコードされた文字列に変換する例については、「サンプルコード」をご参照ください。
コード内の Base64 エンコードされた文字列
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は、表示のために省略されています。実際のリクエストでは、完全なエンコード文字列を渡す必要があります。
# ======= 重要 =======
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.5-plus",
"messages": [
{
"role": "user",
"content": [
{"type": "image_url", "image_url": {"url": "data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA"}},
{"type": "text", "text": "この画像には何が描かれていますか?"}
]
}]
}'DashScope
Python
import base64
import os
import dashscope
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# この関数はローカルファイルを Base64 エンコードされた文字列に変換します。
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
# xxxx/eagle.png をローカル画像の絶対パスに置き換えます。
base64_image = encode_image("xxxx/eagle.png")
messages = [
{
"role": "user",
"content": [
# 注意:Base64 エンコードされたデータを渡す場合、data URI フォーマット(例:data:image/png;base64)が実際の画像フォーマットと一致している必要があります。
# 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": f"data:image/png;base64,{base64_image}"},
{"text": "この画像には何が描かれていますか?"},
],
},
]
response = dashscope.MultiModalConversation.call(
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv("DASHSCOPE_API_KEY"),
model="qwen3.5-plus", // この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルの一覧については、こちらをご参照ください:https://www.alibabacloud.com/help/model-studio/getting-started/models
messages=messages,
)
print(response.output.choices[0].message.content[0]["text"])Java
import java.io.IOException;
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Base64;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.*;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static String encodeImageToBase64(String imagePath) throws IOException {
Path path = Paths.get(imagePath);
byte[] imageBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(imageBytes);
}
public static void callWithLocalFile(String localPath) throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Image = encodeImageToBase64(localPath); // Base64 エンコード済み
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
new HashMap<String, Object>() {{ put("image", "data:image/png;base64," + base64Image); }},
new HashMap<String, Object>() {{ put("text", "この画像には何が描かれていますか?"); }}
)).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// xxx/eagle.png をローカル画像の絶対パスに置き換えます。
callWithLocalFile("xxx/eagle.png");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
ファイルを Base64 エンコードされた文字列に変換する例については、「サンプルコード」をご参照ください。
コード内の Base64 エンコードされた文字列
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は、表示のために省略されています。実際のリクエストでは、完全なエンコード文字列を渡す必要があります。
# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
{"text": "この画像には何が描かれていますか?"}
]
}
]
}
}'動画ファイル
この例では、ローカルファイル test.mp4 を使用します。
ファイルパス
Python
import os
import dashscope
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
// xxx/test.mp4 をローカル動画ファイルの絶対パスに置き換えます。
local_path = "xxx/test.mp4"
video_path = f"file://{local_path}"
messages = [
{'role':'user',
// fps パラメーターは 1 秒あたりに抽出するフレーム数を指定します。
'content': [{'video': video_path,"fps":2},
{'text': 'この動画には何が描かれていますか?'}]}]
response = MultiModalConversation.call(
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus',
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void callWithLocalFile(String localPath)
throws ApiException, NoApiKeyException, UploadFileException {
String filePath = "file://"+localPath;
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>()
{{
put("video", filePath); // fps パラメーターは 1 秒あたりに抽出するフレーム数を指定します。
put("fps", 2);
}},
new HashMap<String, Object>(){{put("text", "この動画には何が描かれていますか?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を .apiKey("sk-xxx") に置き換えてください。
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));}
public static void main(String[] args) {
try {
// xxx/test.mp4 をローカル動画ファイルの絶対パスに置き換えます。
callWithLocalFile("xxx/test.mp4");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Base64 エンコーディング
OpenAI 互換
Python
from openai import OpenAI
import os
import base64
// エンコード関数:ローカルファイルを Base64 エンコードされた文字列に変換します。
def encode_video(video_path):
with open(video_path, "rb") as video_file:
return base64.b64encode(video_file.read()).decode("utf-8")
// xxx/test.mp4 をローカル動画ファイルの絶対パスに置き換えます。
base64_video = encode_video("xxx/test.mp4")
client = OpenAI(
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv('DASHSCOPE_API_KEY'),
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{
"role": "user",
"content": [
{
// Base64 エンコードされた動画データの場合、type は "video_url" を使用します。
"type": "video_url",
"video_url": {"url": f"data:video/mp4;base64,{base64_video}"},
"fps":2
},
{"type": "text", "text": "この動画には何が描かれていますか?"},
],
}
],
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を apiKey: "sk-xxx" に置き換えてください。
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeVideo = (videoPath) => {
const videoFile = readFileSync(videoPath);
return videoFile.toString('base64');
};
// xxx/test.mp4 をローカル動画ファイルの絶対パスに置き換えます。
const base64Video = encodeVideo("xxx/test.mp4")
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen3.5-plus",
messages: [
{"role": "user",
"content": [{
// Base64 エンコードされた動画データの場合、type は "video_url" を使用します。
"type": "video_url",
"video_url": {"url": `data:video/mp4;base64,${base64Video}`},
"fps":2},
{"type": "text", "text": "この動画には何が描かれていますか?"}]}]
});
console.log(completion.choices[0].message.content);
}
main();
curl
詳細については、「サンプルコード」をご参照ください。
コード内の Base64 エンコードされた文字列
"data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は、表示のために省略されています。実際のリクエストでは、完全な文字列を使用する必要があります。
# ======= 重要事項 =======
# API キーはリージョンごとに異なります。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# 構成はリージョンによって異なります。実際のリージョンに基づいて構成を変更してください。
# === 実行前にこのコメントを削除してください ===
curl --location 'https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions' \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header 'Content-Type: application/json' \
--data '{
"model": "qwen3.5-plus",
"messages": [
{
"role": "user",
"content": [
{"type": "video_url", "video_url": {"url": "data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},"fps":2},
{"type": "text", "text": "この画像に描かれているシーンは何ですか?"}
]
}]
}'DashScope
Python
import base64
import os
import dashscope
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
// ローカルファイルを Base64 エンコードされた文字列に変換します。
def encode_video(video_path):
with open(video_path, "rb") as video_file:
return base64.b64encode(video_file.read()).decode("utf-8")
// xxxx/test.mp4 をローカル動画ファイルの絶対パスに置き換えます。
base64_video = encode_video("xxxx/test.mp4")
messages = [{'role':'user',
// fps パラメーターは 1 秒あたりに抽出するフレーム数を指定します。
'content': [{'video': f"data:video/mp4;base64,{base64_video}","fps":2},
{'text': 'この動画には何が描かれていますか?'}]}]
response = dashscope.MultiModalConversation.call(
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus',
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.io.IOException;
import java.util.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.*;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static String encodeVideoToBase64(String videoPath) throws IOException {
Path path = Paths.get(videoPath);
byte[] videoBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(videoBytes);
}
public static void callWithLocalFile(String localPath)
throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Video = encodeVideoToBase64(localPath); // Base64 エンコード済み
MultiModalConversation conv = new MultiModalConversation();
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(new HashMap<String, Object>()
{{
put("video", "data:video/mp4;base64," + base64Video); // fps パラメーターは 1 秒あたりに抽出するフレーム数を指定します。
put("fps", 2);
}},
new HashMap<String, Object>(){{put("text", "この動画には何が描かれていますか?");}})).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を .apiKey("sk-xxx") に置き換えてください。
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// xxx/test.mp4 をローカル動画ファイルの絶対パスに置き換えます。
callWithLocalFile("xxx/test.mp4");
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
「サンプルコード」では、ファイルを Base64 エンコードされた文字列に変換する方法を示しています。
コード内の Base64 エンコードされた文字列
"f"data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は、表示のために省略されています。実際のリクエストでは、完全な文字列を使用する必要があります。
# ======= 重要 =======
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"video": "data:video/mp4;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."},
{"text": "この動画には何が描かれていますか?"}
]
}
]
}
}'画像リスト
この例では、以下のローカルファイルを使用します:football1.jpg、football2.jpg、football3.jpg、および football4.jpg。
ファイルパス
Python
import os
import dashscope
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
local_path1 = "football1.jpg"
local_path2 = "football2.jpg"
local_path3 = "football3.jpg"
local_path4 = "football4.jpg"
image_path1 = f"file://{local_path1}"
image_path2 = f"file://{local_path2}"
image_path3 = f"file://{local_path3}"
image_path4 = f"file://{local_path4}"
messages = [{'role':'user',
// 画像リストを提供する場合、fps パラメーターは Qwen3.5、Qwen3-VL、および Qwen2.5-VL シリーズのモデルで利用可能です。
'content': [{'video': [image_path1,image_path2,image_path3,image_path4],"fps":2},
{'text': 'この動画に示されているプロセスを説明してください。'}]}]
response = MultiModalConversation.call(
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus', // この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルについては、モデル一覧をご参照ください:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
// DashScope SDK バージョン 2.21.10 以降が必要です。
import java.util.Arrays;
import java.util.Collections;
import java.util.HashMap;
import java.util.Map;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static final String MODEL_NAME = "qwen3.5-plus"; // この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルについては、モデル一覧をご参照ください:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
public static void videoImageListSample(String localPath1, String localPath2, String localPath3, String localPath4)
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
String filePath1 = "file://" + localPath1;
String filePath2 = "file://" + localPath2;
String filePath3 = "file://" + localPath3;
String filePath4 = "file://" + localPath4;
Map<String, Object> params = new HashMap<>();
params.put("video", Arrays.asList(filePath1,filePath2,filePath3,filePath4));
// 画像リストを提供する場合、fps パラメーターは Qwen3.5、Qwen3-VL、および Qwen2.5-VL シリーズのモデルで利用可能です。
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(params,
Collections.singletonMap("text", "この動画に示されているプロセスを説明してください。")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を .apiKey("sk-xxx") に置き換えてください。
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model(MODEL_NAME)
.messages(Arrays.asList(userMessage)).build();
MultiModalConversationResult result = conv.call(param);
System.out.print(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
videoImageListSample(
"xxx/football1.jpg",
"xxx/football2.jpg",
"xxx/football3.jpg",
"xxx/football4.jpg");
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}Base64 エンコーディング
OpenAI 互換
Python
import os
from openai import OpenAI
import base64
// ローカルファイルを Base64 エンコードされた文字列に変換します。
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
base64_image1 = encode_image("football1.jpg")
base64_image2 = encode_image("football2.jpg")
base64_image3 = encode_image("football3.jpg")
base64_image4 = encode_image("football4.jpg")
client = OpenAI(
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を api_key="sk-xxx" に置き換えてください。
api_key=os.getenv("DASHSCOPE_API_KEY"),
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.5-plus", // この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルについては、モデル一覧をご参照ください:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages=[
{"role": "user","content": [
{"type": "video","video": [
f"data:image/jpeg;base64,{base64_image1}",
f"data:image/jpeg;base64,{base64_image2}",
f"data:image/jpeg;base64,{base64_image3}",
f"data:image/jpeg;base64,{base64_image4}",]},
{"type": "text","text": "この動画に示されているプロセスを説明してください。"},
]}]
)
print(completion.choices[0].message.content)Node.js
import OpenAI from "openai";
import { readFileSync } from 'fs';
const openai = new OpenAI(
{
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
// 環境変数を設定していない場合、Model Studio API キーを直接渡すために、次の行を apiKey: "sk-xxx" に置き換えてください。
apiKey: process.env.DASHSCOPE_API_KEY,
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const encodeImage = (imagePath) => {
const imageFile = readFileSync(imagePath);
return imageFile.toString('base64');
};
const base64Image1 = encodeImage("football1.jpg")
const base64Image2 = encodeImage("football2.jpg")
const base64Image3 = encodeImage("football3.jpg")
const base64Image4 = encodeImage("football4.jpg")
async function main() {
const completion = await openai.chat.completions.create({
model: "qwen3.5-plus", // この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換えることができます。利用可能なモデルについては、モデル一覧をご参照ください:https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages: [
{"role": "user",
"content": [{"type": "video",
"video": [
`data:image/jpeg;base64,${base64Image1}`,
`data:image/jpeg;base64,${base64Image2}`,
`data:image/jpeg;base64,${base64Image3}`,
`data:image/jpeg;base64,${base64Image4}`]},
{"type": "text", "text": "この動画に描かれているシーンを説明してください。"}]}]
});
console.log(completion.choices[0].message.content);
}
main();curl
ファイルを Base64 エンコードされた文字列に変換する例については、「サンプルコード」をご参照ください。
Base64 エンコードされた文字列
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は、表示のために省略されています。実際のリクエストでは、完全な文字列を渡す必要があります。
# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"messages": [{"role": "user",
"content": [{"type": "video",
"video": [
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA...",
"data:image/jpeg;base64,nEpp6jpnP57MoWSyOWwrkXMJhHRCWYeFYb...",
"data:image/jpeg;base64,JHWQnJPc40GwQ7zERAtRMK6iIhnWw4080s...",
"data:image/jpeg;base64,adB6QOU5HP7dAYBBOg/Fb7KIptlbyEOu58..."
]},
{"type": "text",
"text": "この動画に示されているプロセスを説明してください。"}]}]
}'DashScope
Python
import base64
import os
import dashscope
# エンドポイントはリージョンによって異なります。お使いのリージョンに応じてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
# ローカルファイルを Base64 エンコードされた文字列に変換します。
def encode_image(image_path):
with open(image_path, "rb") as image_file:
return base64.b64encode(image_file.read()).decode("utf-8")
base64_image1 = encode_image("football1.jpg")
base64_image2 = encode_image("football2.jpg")
base64_image3 = encode_image("football3.jpg")
base64_image4 = encode_image("football4.jpg")
messages = [{'role':'user',
'content': [
{'video':
[f"data:image/jpeg;base64,{base64_image1}",
f"data:image/jpeg;base64,{base64_image2}",
f"data:image/jpeg;base64,{base64_image3}",
f"data:image/jpeg;base64,{base64_image4}"
]
},
{'text': 'この動画で示されているプロセスを説明してください。'}]}]
response = dashscope.MultiModalConversation.call(
# 各リージョンでは API キーが必要です。API キーの取得方法については、以下をご参照ください: https://www.alibabacloud.com/help/en/model-studio/get-api-key
# 環境変数を設定していない場合は、以下の行を Model Studio API キーで置き換えてください: api_key="sk-xxx"
api_key=os.getenv("DASHSCOPE_API_KEY"),
model='qwen3.5-plus', # この例では qwen3.5-plus モデルを使用しています。必要に応じて置き換え可能です。利用可能なモデルの一覧については、モデル一覧をご参照ください: https://www.alibabacloud.com/help/en/model-studio/getting-started/models
messages=messages)
print(response.output.choices[0].message.content[0]["text"])Java
import java.io.IOException;
import java.util.*;
import java.nio.file.Files;
import java.nio.file.Path;
import java.nio.file.Paths;
import com.alibaba.dashscope.aigc.multimodalconversation.*;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
private static String encodeImageToBase64(String imagePath) throws IOException {
Path path = Paths.get(imagePath);
byte[] imageBytes = Files.readAllBytes(path);
return Base64.getEncoder().encodeToString(imageBytes);
}
public static void videoImageListSample(String localPath1,String localPath2,String localPath3,String localPath4)
throws ApiException, NoApiKeyException, UploadFileException, IOException {
String base64Image1 = encodeImageToBase64(localPath1); // Base64 エンコード済み
String base64Image2 = encodeImageToBase64(localPath2);
String base64Image3 = encodeImageToBase64(localPath3);
String base64Image4 = encodeImageToBase64(localPath4);
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> params = new HashMap<>();
params.put("video", Arrays.asList(
"data:image/jpeg;base64," + base64Image1,
"data:image/jpeg;base64," + base64Image2,
"data:image/jpeg;base64," + base64Image3,
"data:image/jpeg;base64," + base64Image4));
// 画像リストを提供する場合、fps パラメーターは Qwen3.5、Qwen3-VL、および Qwen2.5-VL シリーズのモデルで利用可能です。
params.put("fps", 2);
MultiModalMessage userMessage = MultiModalMessage.builder()
.role(Role.USER.getValue())
.content(Arrays.asList(params,
Collections.singletonMap("text", "この動画に示されている特定のプロセスを説明してください。")))
.build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus")
.messages(Arrays.asList(userMessage))
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
}
public static void main(String[] args) {
try {
// "xxx/football1.jpg" などのプレースホルダーを、ローカル画像ファイルの絶対パスに置き換えてください。
videoImageListSample(
"xxx/football1.jpg",
"xxx/football2.jpg",
"xxx/football3.jpg",
"xxx/football4.jpg"
);
} catch (ApiException | NoApiKeyException | UploadFileException | IOException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
ファイルを Base64 エンコードされた文字列に変換する例については、「サンプルコード」をご参照ください。
Base64 エンコードされた文字列
"data:image/jpg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA..."は、表示のために省略されています。実際のリクエストでは、完全な文字列を渡す必要があります。
# ======= 重要 =======
# エンドポイントはリージョンによって異なります。ご利用のリージョンに合わせてエンドポイントを変更してください。
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/en/model-studio/get-api-key
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"input": {
"messages": [
{
"role": "user",
"content": [
{
"video": [
"data:image/jpeg;base64,/9j/4AAQSkZJRgABAQAAAQABAAD/2wBDAA...",
"data:image/jpeg;base64,nEpp6jpnP57MoWSyOWwrkXMJhHRCWYeFYb...",
"data:image/jpeg;base64,JHWQnJPc40GwQ7zERAtRMK6iIhnWw4080s...",
"data:image/jpeg;base64,adB6QOU5HP7dAYBBOg/Fb7KIptlbyEOu58..."
],
"fps":2
},
{
"text": "この動画に示されているプロセスを説明してください。"
}
]
}
]
}
}'高解像度画像の処理
視覚理解モデル API は、エンコードされた画像ごとのビジュアルトークン数に上限があります。デフォルトでは、高解像度画像は圧縮されるため、ディテールが失われ、理解精度が低下する可能性があります。vl_high_resolution_images を有効にするか、max_pixels を調整することで、ビジュアルトークン数を増やすことができます。これにより、より多くの画像ディテールが保持され、理解が向上します。
vl_high_resolution_images=trueの場合、API は固定解像度ポリシーを使用し、max_pixels設定を無視します。画像内の細かいテキスト、小さなオブジェクト、豊かなディテールの認識が必要なタスクに使用してください。vl_high_resolution_images=falseの場合、max_pixelsパラメーターが最終的なピクセル上限を決定します。処理速度が重要であったり、コストに敏感なアプリケーションでは、
max_pixelsのデフォルト値を使用するか、より小さい値に設定してください。一部のディテールを保持したいが、処理速度の低下を受け入れられる場合は、
max_pixelsの値を大きくしてください。
OpenAI 互換
vl_high_resolution_images パラメーターは、標準の OpenAI パラメーターではありません。SDK ごとに渡す方法が異なります。
Python SDK:
extra_body辞書内でパラメーターを渡します。Node.js SDK: パラメーターをトップレベルのパラメーターとして直接渡します。
Python
import os
import time
from openai import OpenAI
client = OpenAI(
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv("DASHSCOPE_API_KEY"),
// ご利用のリージョンに合わせてエンドポイントを変更してください。
base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
model="qwen3.5-plus",
messages=[
{"role": "user","content": [
{"type": "image_url","image_url": {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
// max_pixels:入力画像の最大ピクセル数を設定します。vl_high_resolution_images=True の場合は無視されます。最大値はモデルによって異なります。
// "max_pixels": 16384 * 32 * 32
},
{"type": "text", "text": "この画像にはどの祝日が描かれていますか?"},
],
}
],
extra_body={"vl_high_resolution_images":True}
)
print(f"モデルの出力:{completion.choices[0].message.content}")
print(f"合計入力トークン数:{completion.usage.prompt_tokens}")Node.js
import OpenAI from "openai";
const openai = new OpenAI(
{
// 環境変数を使用しない場合は、ここに Model Studio API キーを設定します:apiKey: "sk-xxx"
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
apiKey: process.env.DASHSCOPE_API_KEY,
// ご利用のリージョンに合わせてエンドポイントを変更してください。
baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
}
);
const response = await openai.chat.completions.create({
model: "qwen3.5-plus",
messages: [
{role: "user",content: [
{type: "image_url",
image_url: {"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
// max_pixels:入力画像の最大ピクセル数を設定します。vl_high_resolution_images=True の場合は無視されます。最大値はモデルによって異なります。
// "max_pixels": 2560 * 32 * 32
},
{type: "text", text: "この画像にはどの祝日が描かれていますか?" },
]}],
vl_high_resolution_images:true
})
console.log("モデルの出力:",response.choices[0].message.content);
console.log("合計入力トークン数:",response.usage.prompt_tokens);
curl
# ======= 重要 =======
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# ご利用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"messages": [
{
"role": "user",
"content": [
{
"type": "image_url",
"image_url": {
"url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"
}
},
{
"type": "text",
"text": "この画像にはどの祝日が描かれていますか?"
}
]
}
],
"vl_high_resolution_images":true
}'DashScope
Python
import os
import time
import dashscope
// ご利用のリージョンに合わせてエンドポイントを変更してください。
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'
messages = [
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg",
// max_pixels:入力画像の最大ピクセル数を設定します。vl_high_resolution_images=True の場合は無視されます。最大値はモデルによって異なります。
// "max_pixels": 16384 * 32 * 32
},
{"text": "この画像にはどの祝日が描かれていますか?"}
]
}
]
response = dashscope.MultiModalConversation.call(
// 環境変数を使用しない場合は、ここに Model Studio API キーを設定します:api_key="sk-xxx"
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
api_key=os.getenv('DASHSCOPE_API_KEY'),
model='qwen3.5-plus',
messages=messages,
vl_high_resolution_images=True
)
print("モデルの出力:",response.output.choices[0].message.content[0]["text"])
print("合計入力トークン数:",response.usage.input_tokens)Java
import java.util.Arrays;
import java.util.Collections;
import java.util.Map;
import java.util.HashMap;
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.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.exception.UploadFileException;
import com.alibaba.dashscope.utils.Constants;
public class Main {
static {
// ご利用のリージョンに合わせてエンドポイントを変更してください。
Constants.baseHttpApiUrl="https://dashscope-intl.aliyuncs.com/api/v1";
}
public static void simpleMultiModalConversationCall()
throws ApiException, NoApiKeyException, UploadFileException {
MultiModalConversation conv = new MultiModalConversation();
Map<String, Object> map = new HashMap<>();
map.put("image", "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg");
// max_pixels:入力画像の最大ピクセル数を設定します。vl_high_resolution_images=True の場合は無視されます。最大値はモデルによって異なります。
// map.put("max_pixels", 2621440);
MultiModalMessage userMessage = MultiModalMessage.builder().role(Role.USER.getValue())
.content(Arrays.asList(
map,
Collections.singletonMap("text", "この画像にはどの祝日が描かれていますか?"))).build();
MultiModalConversationParam param = MultiModalConversationParam.builder()
// 環境変数を使用しない場合は、ここに Model Studio API キーを設定します:.apiKey("sk-xxx")
// 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
.apiKey(System.getenv("DASHSCOPE_API_KEY"))
.model("qwen3.5-plus")
.message(userMessage)
.vlHighResolutionImages(true)
.build();
MultiModalConversationResult result = conv.call(param);
System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent().get(0).get("text"));
System.out.println(result.getUsage().getInputTokens());
}
public static void main(String[] args) {
try {
simpleMultiModalConversationCall();
} catch (ApiException | NoApiKeyException | UploadFileException e) {
System.out.println(e.getMessage());
}
System.exit(0);
}
}curl
# ======= 重要 =======
# 各リージョンには API キーが必要です。API キーの取得方法については、こちらをご参照ください:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
# ご利用のリージョンに合わせてエンドポイントを変更してください。
# === 実行前にこのコメントを削除してください ===
curl -X POST https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/multimodal-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H 'Content-Type: application/json' \
-d '{
"model": "qwen3.5-plus",
"input":{
"messages":[
{
"role": "user",
"content": [
{"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20250212/earbrt/vcg_VCG211286867973_RF.jpg"},
{"text": "この画像にはどの祝日が描かれていますか?"}
]
}
]
},
"parameters": {
"vl_high_resolution_images": true
}
}'その他の使用方法
制限事項
入力ファイルの制限事項
画像の制限事項
解決方法:
最小寸法:画像の幅と高さはいずれも
10ピクセルより大きい必要があります。縦横比:画像の長い辺と短い辺の比率は
200:1を超えてはなりません。ピクセル上限:
画像解像度は
8K (7680x4320)以内にすることを推奨します。この解像度を超える画像は、ファイルサイズが大きかったりネットワーク伝送時間が長かったりするために、API 呼び出しでタイムアウトが発生する可能性があります。自動スケーリング:モデルは、
max_pixelsおよびmin_pixelsパラメーターを使用して画像サイズを調整します。超高解像度の画像を提供しても認識精度は向上せず、呼び出し失敗のリスクが高まります。クライアント側で事前に画像を適切なサイズにスケーリングしてください。
対応画像フォーマット
4K
(3840x2160)未満の解像度の場合、対応画像フォーマットは以下のとおりです。画像フォーマット
一般的な拡張子
MIME Type
BMP
.bmp
image/bmp
JPEG
.jpe, .jpeg, .jpg
image/jpeg
PNG
.png
image/png
TIFF
.tif, .tiff
image/tiff
WEBP
.webp
image/webp
HEIC
.heic
image/heic
4K (3840x2160)以上8K (7680x4320)未満の解像度の場合、JPEG、JPG、PNG のみがサポートされています。
サイズ:
公開 URL として渡す場合:単一の画像は、Qwen3.5 シリーズでは
20 MB、その他のモデルでは10 MBを超えてはなりません。ローカルファイルパスとして渡す場合(DashScope SDK のみ):単一の画像は
10 MBを超えてはなりません。Base64 エンコードされた文字列として渡す場合:エンコードされた文字列は
10 MBを超えてはなりません。
ファイルを圧縮する方法については、「画像または動画を必要なサイズに圧縮する方法」をご参照ください。
枚数: 許容される画像の最大枚数は、入力方法によって異なります。
公開 URL またはローカルファイルパスとして渡す場合:最大 256 枚の画像。
Base64 エンコードされた文字列として渡す場合:最大 250 枚の画像。
すべての画像およびテキストの合計トークン数は、モデルの最大入力を下回る必要があります。
動画の制限事項
イメージがリストとして渡される場合、イメージの数は以下の制限の対象となります:
qwen3.5シリーズ:最小 4 枚、最大 8000 枚の画像。qwen3-vl-plusシリーズ、qwen3-vl-flashシリーズ、qwen3-vl-235b-a22b-thinking、およびqwen3-vl-235b-a22b-instruct:最小 4 枚、最大 2000 枚の画像。その他の
Qwen3-VLオープンソース、Qwen2.5-VL(商用およびオープンソース版を含む)、およびQVQシリーズのモデル:最小 4 枚、最大 512 枚の画像。その他のモデル:最小 4 枚、最大 80 枚の画像。
動画を単一ファイルとして送信する場合:
サイズ:
公開 URL として渡す場合:
qwen3.5シリーズ、Qwen3-VLシリーズ、およびqwen-vl-max(qwen-vl-max-latest、qwen-vl-max-2025-04-08、およびそれ以降のすべてのバージョンを含む):2 GB を超えてはなりません。qwen-vl-plusシリーズ、その他のqwen-vl-maxモデル、Qwen2.5-VLオープンソースシリーズ、およびQVQシリーズのモデル:1 GB を超えてはなりません。その他のモデル:150 MB を超えてはなりません。
Base64 エンコードされた文字列として渡す場合:エンコードされた文字列は 10 MB 未満である必要があります。
ローカルファイルパスとして渡す場合(DashScope SDK のみ):動画ファイル自体は 100 MB を超えてはなりません。
ファイルを圧縮する方法については、「画像または動画を必要なサイズに圧縮する方法」をご参照ください。
再生時間:
qwen3.5シリーズ:2 秒から 2 時間。qwen3-vl-plusシリーズ、qwen3-vl-flashシリーズ、qwen3-vl-235b-a22b-thinking、およびqwen3-vl-235b-a22b-instruct:2 秒から 1 時間。その他の
Qwen3-VLオープンソースシリーズおよびqwen-vl-max(qwen-vl-max-latest、qwen-vl-max-2025-04-08、およびそれ以降のすべてのバージョンを含む):2 秒から 20 分。qwen-vl-plusシリーズ、その他のqwen-vl-maxモデル、Qwen2.5-VLオープンソースシリーズ、およびQVQシリーズのモデル:2 秒から 10 分。その他のモデル:2 秒から 40 秒。
フォーマット: MP4、AVI、MKV、MOV、FLV、WMV がサポートされています。
寸法: 特定の制限はありません。モデルは、
max_pixelsおよびmin_pixelsパラメーターを使用して動画の寸法を自動的に調整します。より大きな動画の寸法を使用しても、理解度は向上しません。動画の枚数制限: 最大 64 本の動画を送信できます。
音声の理解: モデルは動画ファイルから音声を処理しません。
ファイル入力方法
公開 URL: HTTP または HTTPS プロトコルを使用した、公開アクセス可能な URL を提供します。 安定性とパフォーマンスを最適化するために、ファイルを OSS ことを推奨します。
重要モデルがファイルを正常にダウンロードできるようにするため、公開 URL のレスポンスヘッダーには 必ず Content-Length(ファイルサイズ)および Content-Type(メディアタイプ、例:image/jpeg)を含める必要があります。いずれかのフィールドが欠落または不正確な場合、モデルはファイルをダウンロードできません。
Base64 エンコーディング: ファイルを Base64 エンコードされた文字列に変換し、その結果の文字列を渡します。
ローカルファイルパスを渡す(DashScope SDK のみ): ローカルファイルへのパスを指定します。
ファイル入力方法に関する推奨事項については、「ファイルアップロード方法の選択方法?
本番環境での使用
画像/動画の前処理: 視覚理解モデルには入力ファイルのサイズ制限があります。圧縮方法については、「画像または動画の圧縮方法」をご参照ください。
テキストファイルの処理: 視覚理解モデルは画像フォーマットのみをサポートしており、テキストファイルを直接処理することはできません。以下の代替方法をご利用ください。
フォールトトレランスと安定性
タイムアウト処理:非ストリーミング呼び出しの場合、モデルが 180 秒以内に出力の生成を完了できないと、通常はタイムアウトエラーが発生します。ユーザーエクスペリエンスを向上させるために、レスポンス本文にはタイムアウト前に生成されたコンテンツが含まれます。レスポンスヘッダーに
x-dashscope-partialresponse:trueが含まれている場合、タイムアウトが発生したことを示します。「部分補完モード」機能(一部のモデルで利用可能)を使用して、生成されたコンテンツを messages 配列に追加し、リクエストを再送信することで、モデルが中断したところからコンテンツの生成を継続できます。「不完全な出力に基づく書き込みの継続」をご参照ください。リトライメカニズム:ネットワークの変動や一時的なサービスの停止を処理するために、指数バックオフなどの合理的な API 呼び出しリトライメカニズムを実装します。
課金とレート制限
課金: 総コストは、入力トークンと出力トークンの合計数に基づいて算出されます。入力および出力の価格設定については、「モデル一覧」をご参照ください。
トークンの構成: 入力トークンはテキストトークンと画像または動画から変換されたトークンで構成されます。出力トークンはモデルが生成したテキストです。思考モードでは、モデルの推論プロセスも出力トークンとしてカウントされます。推論プロセスが出力されない思考モードの場合、ノンシンキングモードの価格が適用されます。
画像および動画のトークン数の計算: 以下のコードを使用して、画像または動画のトークン消費量を推定できます。この推定値は参考用です。実際の課金は API レスポンスに基づきます。
API リファレンス
視覚理解モデルの入力および出力パラメーターについては、「Qwen」をご参照ください。
よくある質問
ファイルアップロード方法
画像または動画を必要なサイズに圧縮する方法は?
モデルがオブジェクトのローカライズ結果を出力した後、検出フレームを元の画像に描画するにはどうすればよいですか?
エラーコード
モデルの呼び出しに失敗し、エラーメッセージが返された場合は、「エラーメッセージ」で解決策をご確認ください。












