すべてのプロダクト
Search
ドキュメントセンター

Alibaba Cloud Model Studio:テキスト生成モデルの概要

最終更新日:Feb 17, 2026

テキスト生成モデルは、入力プロンプトから明確で一貫性のあるテキストを生成します。

テキスト生成モデルへの入力として、単純なキーワード、1文の要約、またはより複雑な命令やコンテキストを指定できます。これらのモデルは、膨大なデータセットから言語パターンを学習し、次のようなさまざまなユースケースをサポートします:

  • コンテンツ作成:ニュース記事、プロダクト説明、ショートビデオのスクリプトを生成します。

  • カスタマーサービス:24時間365日のサポートを提供し、よくある質問に答えるチャットボットを強化します。

  • テキスト翻訳:言語間を迅速かつ正確に翻訳します。

  • 要約:長いドキュメント、レポート、またはメールから要点を抽出します。

  • 法務文書の起草:契約書や基本的な法的意見書のテンプレートを生成します。

モデル選択ガイド

サービスリージョン

Alibaba Cloud Model Studio は、北京シンガポール米国 (バージニア) リージョンでモデルサービスを提供しています。各リージョンでは固有の API キーが使用されます。ネットワーク遅延を最小限に抑えるため、ご利用の場所に最も近いリージョンからサービスを呼び出してください。詳細については、「デプロイモードの選択」をご参照ください。

汎用モデル

Qwen テキスト生成モデルは OpenAI 互換です。インテリジェントなカスタマーサービス、テキスト作成、コンテンツの洗練、要約に適しています。

  • QwenPlus: パフォーマンス、速度、コストのバランスが取れており、ほとんどのユースケースで推奨される選択肢となっています。

    最新の Qwen3.5-Plus シリーズは、言語理解、論理的推論、コード生成、エージェントタスク、画像理解、動画理解、グラフィカルユーザーインターフェイス (GUI) タスクに優れています。組み込みのツール呼び出しをサポートしています。そのテキスト機能は Qwen3-Max に匹敵し、このモデルを推奨します。
  • QwenMax:これは、Qwen3 シリーズで最も高いパフォーマンスを発揮するモデルです。複雑なマルチステップタスクに使用します。

  • QwenFlash: Qwen3 シリーズで最も高速でコストが最も低いモデルです。シンプルなタスクに使用してください。

特化型モデル

特定のビジネスニーズに対応するため、Alibaba Cloud Model Studio は、コード生成長文コンテキスト処理翻訳データマイニング意図認識ロールプレイング詳細調査に最適化されたモデルを提供しています。

マルチモーダルモデル

  • QwenPlus (text + image/video → text): Qwen3.5-Plus シリーズは、視覚的およびテキスト入力を両方受け付けます。このシリーズは、言語理解、論理的推論、コード生成、エージェントタスク、画像理解、動画理解、およびグラフィカルユーザーインターフェイス (GUI) タスクにおいて非常に優れたパフォーマンスを発揮します。その視覚的推論能力は、QwenVL シリーズと比較して、大きな飛躍を遂げています。

  • QwenOmni(オムニモーダル → テキスト + 音声):このモデルは、動画、音声、画像、およびテキストを入力として受け付けます。複雑なクロスモーダルタスクを処理するために、テキストと音声の両方の出力を生成します。

  • 音声認識モデル(音声 → テキスト):このモデルは音声をテキストに書き起こします。中国語(広東語やその他の方言を含む)、英語、日本語、韓国語などに対応しています。

サードパーティモデル

Alibaba Cloud Model Studio は、DeepSeekKimi などの有名なサードパーティ製大規模言語モデルをサポートしています。完全なリストについては、「テキスト生成 – サードパーティモデル」をご参照ください。

基本概念

テキスト生成モデルは、プロンプトを入力として受け取ります。プロンプトは1つ以上のメッセージオブジェクトで構成され、それぞれにロールとコンテンツがあります:

  • システムメッセージ:モデルのロールや命令を設定します。指定しない場合、デフォルトのロールは「あなたは役立つアシスタントです」になります。

  • ユーザーメッセージ:これはユーザーからの質問または命令です。

  • アシスタントメッセージ:これはモデルの応答です。

モデルを呼び出す際、これらのメッセージオブジェクトを持つ messages という名前の配列を構築できます。一般的なリクエストには、動作を定義するための1つの system メッセージと、命令を含む1つの user メッセージが含まれます。

system メッセージは任意ですが、推奨されます。モデルのロールと動作を定義することで、安定した一貫性のある出力を確保するのに役立ちます。
[
    {"role": "system", "content": "あなたは、正確で効率的、かつ洞察に満ちた応答を提供する役立つアシスタントです。ユーザーのあらゆるタスクや質問をサポートする準備ができています。"},
    {"role": "user", "content": "あなたは誰ですか?"}
]

応答オブジェクトには、assistant メッセージ内にモデルの返信が含まれています。

{
    "role": "assistant",
    "content": "こんにちは!私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、テキストの作成、論理的推論、コーディングをお手伝いできます。複数の言語を理解し生成でき、マルチターン対話をサポートし、複雑なタスクを処理します。何かお手伝いが必要な場合はお知らせください!"
}

クイックスタート

API を使用するには、まず API キーを取得し、それを環境変数として設定する必要があります。SDK を使用する場合は、OpenAI SDK または DashScope SDK をインストールしてください。

OpenAI 互換 – Responses API

Responses API は、次世代の Chat Completions API です。使用方法、コード例、移行ガイダンスについては、「OpenAI 互換 – Responses」をご参照ください。

Python

import os
from openai import OpenAI

try:
    client = OpenAI(
        # API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
        # 環境変数を設定していない場合は、以下の行を api_key="sk-xxx" に置き換えてください。
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        base_url="https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1",
    )

    response = client.responses.create(
        model="qwen3.5-plus",
        input="あなたに何ができるか簡単に紹介してください。"
    )

    print(response.output_text)
except Exception as e:
    print(f"Error: {e}")
    print("ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code")

応答

こんにちは!私は2026年までの知識を持つAIアシスタントです。私ができることの概要は以下の通りです:

*   **コンテンツ作成:** メール、記事、物語、スクリプトなどを執筆します。
*   **コーディングと技術:** 様々なプログラミング言語でコードを生成、デバッグ、説明します。
*   **分析と要約:** ドキュメントを処理し、データを解釈し、主要な洞察を抽出します。
*   **問題解決:** 数学、論理、推論、戦略計画を支援します。
*   **学習と翻訳:** 複雑なトピックを簡単に説明したり、複数の言語間で翻訳したりします。

何でもお気軽にご質問いただくか、タスクを与えて始めてください!

Node.js

// Node.js v18+ が必要で、ES モジュール環境で実行されます
import OpenAI from "openai";

const openai = new OpenAI({
    // API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
    // 環境変数を設定していない場合は、以下の行を apiKey: "sk-xxx" に置き換えてください。
    apiKey: process.env.DASHSCOPE_API_KEY,
    baseURL: "https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1"
});

async function main() {
    try {
        const response = await openai.responses.create({
            model: "qwen3.5-plus",
            input: "あなたに何ができるか簡単に紹介してください。"
        });

        // モデルの応答を取得
        console.log(response.output_text);
    } catch (error) {
        console.error("Error:", error);
    }
}

main();

応答

こんにちは!私は Qwen3.5、Alibaba Cloud が開発した2026年までの知識を持つ大規模言語モデルで、複雑な推論、創造的なタスク、多言語での会話を支援するために設計されています。

curl

curl -X POST https://dashscope-intl.aliyuncs.com/api/v2/apps/protocols/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.5-plus",
    "input": "あなたに何ができるか簡単に紹介してください。",
    "enable_thinking": false
}'

応答

{
    "created_at": 1771165900.0,
    "id": "f75c28fb-4064-48ed-90da-4d2cc4362xxx",
    "model": "qwen3.5-plus",
    "object": "response",
    "output": [
        {
            "content": [
                {
                    "annotations": [],
                    "text": "こんにちは!私は Qwen3.5、Alibaba Cloud が開発した2026年までの知識を持つ大規模言語モデルで、複雑な推論、創造的なタスク、多言語での会話を支援するために設計されています。",
                    "type": "output_text"
                }
            ],
            "id": "msg_89ad23e6-f128-4d4c-b7a1-a786e7880xxx",
            "role": "assistant",
            "status": "completed",
            "type": "message"
        }
    ],
    "parallel_tool_calls": false,
    "status": "completed",
    "tool_choice": "auto",
    "tools": [],
    "usage": {
        "input_tokens": 57,
        "input_tokens_details": {
            "cached_tokens": 0
        },
        "output_tokens": 44,
        "output_tokens_details": {
            "reasoning_tokens": 0
        },
        "total_tokens": 101,
        "x_details": [
            {
                "input_tokens": 57,
                "output_tokens": 44,
                "total_tokens": 101,
                "x_billing_type": "response_api"
            }
        ]
    }
}

OpenAI 互換 – Chat Completions API

Python

import os
from openai import OpenAI

try:
    client = OpenAI(
        # API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
        # 環境変数を設定していない場合は、以下の行を api_key="sk-xxx" に置き換えてください。
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # ベース URL はリージョンごとに異なります
        base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        # モデルリスト: https://www.alibabacloud.com/help/model-studio/models
        model="qwen-plus",
        messages=[
            {"role": "system", "content": "あなたは役立つアシスタントです。"},
            {"role": "user", "content": "あなたは誰ですか?"},
        ],
    )
    print(completion.choices[0].message.content)
    # 完全な応答を表示するには、次の行のコメントを解除してください
    # print(completion.model_dump_json())
except Exception as e:
    print(f"Error: {e}")
    print("ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code")

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

Java

// OpenAI Java SDK バージョン >= 3.5.0 を使用してください
import com.openai.client.OpenAIClient;
import com.openai.client.okhttp.OpenAIOkHttpClient;
import com.openai.models.chat.completions.ChatCompletion;
import com.openai.models.chat.completions.ChatCompletionCreateParams;

public class Main {
    public static void main(String[] args) {
        try {
            OpenAIClient client = OpenAIOkHttpClient.builder()
                    // 環境変数を設定していない場合は、以下の行を .apiKey("sk-xxx") に置き換えてください
                    // API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
                    .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                    // ベース URL はリージョンごとに異なります
                    .baseUrl("https://dashscope-intl.aliyuncs.com/compatible-mode/v1")
                    .build();

            // ChatCompletion パラメーターを作成
            ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
                    .model("qwen-plus")  // モデルを指定
                    .addSystemMessage("あなたは役立つアシスタントです。")
                    .addUserMessage("あなたは誰ですか?")
                    .build();

            // リクエストを送信し、応答を取得
            ChatCompletion chatCompletion = client.chat().completions().create(params);
            String content = chatCompletion.choices().get(0).message().content().orElse("有効なコンテンツが返されませんでした");
            System.out.println(content);
            
        } catch (Exception e) {
            System.err.println("Error: " + e.getMessage());
            System.out.println("ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code");
        }
    }
}

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

Node.js

// Node.js v18+ が必要で、ES モジュール環境で実行されます
import OpenAI from "openai";

const openai = new OpenAI(
    {
        // API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
        // 環境変数を設定していない場合は、以下の行を apiKey: "sk-xxx" に置き換えてください。
        apiKey: process.env.DASHSCOPE_API_KEY,
        // ベース URL はリージョンごとに異なります
        baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
        
    }
);
const completion = await openai.chat.completions.create({
    model: "qwen-plus",  // モデルリスト: https://www.alibabacloud.com/help/model-studio/models
    messages: [
        { role: "system", content: "あなたは役立つアシスタントです。" },
        { role: "user", content: "あなたは誰ですか?" }
    ],
});
console.log(completion.choices[0].message.content);
// 完全な応答を表示するには、次の行のコメントを解除してください
// console.log(JSON.stringify(completion, null, 4));

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

Go

// OpenAI Go SDK のバージョンは v2.4.0 以上である必要があります
package main

import (
	"context"
	// 完全な応答を表示するには、次の行のコメントを解除してください
	// "encoding/json"
	"fmt"
	"os"

	"github.com/openai/openai-go/v2"
	"github.com/openai/openai-go/v2/option"
)

func main() {
	// 環境変数を設定していない場合は、以下の行を apiKey := "sk-xxx" に置き換えてください
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	client := openai.NewClient(
		option.WithAPIKey(apiKey),
		// API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
		// ベース URL はリージョンごとに異なります
		option.WithBaseURL("https://dashscope-intl.aliyuncs.com/compatible-mode/v1"),
	)
	chatCompletion, err := client.Chat.Completions.New(
		context.TODO(), openai.ChatCompletionNewParams{
			Messages: []openai.ChatCompletionMessageParamUnion{
				openai.SystemMessage("あなたは役立つアシスタントです。"),
				openai.UserMessage("あなたは誰ですか?"),
			},
			Model: "qwen-plus",
		},
	)

	if err != nil {
		fmt.Fprintf(os.Stderr, "リクエストに失敗しました: %v\n", err)
		// エラーの詳細については、ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code
		os.Exit(1)
	}

	if len(chatCompletion.Choices) > 0 {
		fmt.Println(chatCompletion.Choices[0].Message.Content)
	}
	// 完全な応答を表示するには、次の行のコメントを解除してください
	// jsonData, _ := json.MarshalIndent(chatCompletion, "", "  ")
	// fmt.Println(string(jsonData))

}

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

C# (HTTP)

using System.Net.Http.Headers;
using System.Text;
using System.Text.Json;

class Program
{
    private static readonly HttpClient httpClient = new HttpClient();

    static async Task Main(string[] args)
    {
        // 環境変数を設定していない場合は、以下の行を string? apiKey = "sk-xxx"; に置き換えてください。
        string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
        // ベース URL はリージョンごとに異なります
        string url = "https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions";
        // モデルリスト: https://www.alibabacloud.com/help/model-studio/getting-started/models
        string jsonContent = @"{
            ""model"": ""qwen-plus"",
            ""messages"": [
                {
                    ""role"": ""system"",
                    ""content"": ""あなたは役立つアシスタントです。""
                },
                {
                    ""role"": ""user"", 
                    ""content"": ""あなたは誰ですか?""
                }
            ]
        }";

        // リクエストを送信し、応答を取得
        string result = await SendPostRequestAsync(url, jsonContent, apiKey);
        
        // 完全な応答を表示するには、次の行のコメントを解除してください
        // Console.WriteLine(result);

        // JSON を解析し、コンテンツのみを出力
        using JsonDocument doc = JsonDocument.Parse(result);
        JsonElement root = doc.RootElement;
        
        if (root.TryGetProperty("choices", out JsonElement choices) && 
            choices.GetArrayLength() > 0)
        {
            JsonElement firstChoice = choices[0];
            if (firstChoice.TryGetProperty("message", out JsonElement message) &&
                message.TryGetProperty("content", out JsonElement content))
            {
                Console.WriteLine(content.GetString());
            }
        }
    }

    private static async Task<string> SendPostRequestAsync(string url, string jsonContent, string apiKey)
    {
        using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"))
        {
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));
            HttpResponseMessage response = await httpClient.PostAsync(url, content);
            if (response.IsSuccessStatusCode)
            {
                return await response.Content.ReadAsStringAsync();
            }
            else
            {   
                // エラーの詳細については、ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code
                return $"リクエストに失敗しました: {response.StatusCode}";
            }
        }
    }
}

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

PHP (HTTP)

<?php
// リクエスト URL を設定
// ベース URL はリージョンごとに異なります
$url = 'https://dashscope-intl.aliyuncs.com/compatible-mode/v1/chat/completions';
// API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
// 環境変数を設定していない場合は、以下の行を $apiKey = "sk-xxx"; に置き換えてください。
$apiKey = getenv('DASHSCOPE_API_KEY');
// リクエストヘッダーを設定
$headers = [
    'Authorization: Bearer '.$apiKey,
    'Content-Type: application/json'
];
// リクエストボディを設定
$data = [
    "model" => "qwen-plus",
    "messages" => [
        [
            "role" => "system",
            "content" => "あなたは役立つアシスタントです。"
        ],
        [
            "role" => "user",
            "content" => "あなたは誰ですか?"
        ]
    ]
];
// cURL セッションを初期化
$ch = curl_init();
// cURL オプションを設定
curl_setopt($ch, CURLOPT_URL, $url);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, json_encode($data));
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_HTTPHEADER, $headers);
// cURL セッションを実行
$response = curl_exec($ch);
// エラーをチェック
// エラーの詳細については、ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code
if (curl_errno($ch)) {
    echo 'Curl error: ' . curl_error($ch);
}
// cURL リソースを閉じる
curl_close($ch);
// 応答を出力
$dataObject = json_decode($response);
$content = $dataObject->choices[0]->message->content;
echo $content;
// 完全な応答を表示するには、次の行のコメントを解除してください
//echo $response;
?>

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

curl

ベース URL と API キーはリージョンごとに異なります。詳細については、「OpenAI Chat」および「API キーの取得」をご参照ください。

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": "qwen-plus",
    "messages": [
        {
            "role": "system",
            "content": "あなたは役立つアシスタントです。"
        },
        {
            "role": "user", 
            "content": "あなたは誰ですか?"
        }
    ]
}'

応答

{
    "choices": [
        {
            "message": {
                "role": "assistant",
                "content": "私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!"
            },
            "finish_reason": "stop",
            "index": 0,
            "logprobs": null
        }
    ],
    "object": "chat.completion",
    "usage": {
        "prompt_tokens": 26,
        "completion_tokens": 66,
        "total_tokens": 92
    },
    "created": 1726127645,
    "system_fingerprint": null,
    "model": "qwen-plus",
    "id": "chatcmpl-81951b98-28b8-9659-ab07-xxxxxx"
}

DashScope

Python

import json
import os
from dashscope import Generation
import dashscope

# ベース URL はリージョンごとに異なります
dashscope.base_http_api_url = "https://dashscope-intl.aliyuncs.com/api/v1"

messages = [
    {"role": "system", "content": "あなたは役立つアシスタントです。"},
    {"role": "user", "content": "あなたは誰ですか?"},
]
response = Generation.call(
    # API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、以下の行を api_key = "sk-xxx" に置き換えてください。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen-plus",
    messages=messages,
    result_format="message",
)

if response.status_code == 200:
    print(response.output.choices[0].message.content)
    # 完全な応答を表示するには、次の行のコメントを解除してください
    # print(json.dumps(response, default=lambda o: o.__dict__, indent=4))
else:
    print(f"HTTP ステータスコード: {response.status_code}")
    print(f"エラーコード: {response.code}")
    print(f"エラー: {response.message}")
    print("ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code")

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

Java

import java.util.Arrays;
import java.lang.System;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.exception.ApiException;
import com.alibaba.dashscope.exception.InputRequiredException;
import com.alibaba.dashscope.exception.NoApiKeyException;
import com.alibaba.dashscope.protocol.Protocol;
import com.alibaba.dashscope.utils.JsonUtils;

public class Main {
    public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
        // ベース URL はリージョンごとに異なります
        Generation gen = new Generation(Protocol.HTTP.getValue(), "https://dashscope-intl.aliyuncs.com/api/v1");
        Message systemMsg = Message.builder()
                .role(Role.SYSTEM.getValue())
                .content("あなたは役立つアシスタントです。")
                .build();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content("あなたは誰ですか?")
                .build();
        GenerationParam param = GenerationParam.builder()
                // API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数を設定していない場合は、以下の行を .apiKey("sk-xxx") に置き換えてください。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen-plus")
                .messages(Arrays.asList(systemMsg, userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .build();
        return gen.call(param);
    }
    public static void main(String[] args) {
        try {
            GenerationResult result = callWithMessage();
            System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
            // 完全な応答を表示するには、次の行のコメントを解除してください
            // System.out.println(JsonUtils.toJson(result));
        } catch (ApiException | NoApiKeyException | InputRequiredException e) {
            System.err.println("Error: "+e.getMessage());
            System.out.println("ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code");
        }
    }
}

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

Node.js (HTTP)

// Node.js v18+ が必要です
// 環境変数を設定していない場合は、以下の行を const apiKey = "sk-xxx"; に置き換えてください。
const apiKey = process.env.DASHSCOPE_API_KEY;

const data = {
    model: "qwen-plus",
    input: {
        messages: [
            {
                role: "system",
                content: "あなたは役立つアシスタントです。"
            },
            {
                role: "user",
                content: "あなたは誰ですか?"
            }
        ]
    },
    parameters: {
        result_format: "message"
    }
};

async function callApi() {
    try {
            // ベース URL はリージョンごとに異なります
            const response = await fetch('https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation', {
            method: 'POST',
            headers: {
                'Authorization': `Bearer ${apiKey}`,
                'Content-Type': 'application/json'
            },
            body: JSON.stringify(data)
        });

        const result = await response.json();
        console.log(result.output.choices[0].message.content);
        // 完全な応答を表示するには、次の行のコメントを解除してください
        // console.log(JSON.stringify(result));
    } catch (error) {
        // エラーの詳細については、ドキュメントを参照してください: https://www.alibabacloud.com/help/model-studio/error-code
        console.error('呼び出しに失敗しました:', error.message);
    }
}

callApi();

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

Go (HTTP)

package main

import (
	"bytes"
	"encoding/json"
	"fmt"
	"io"
	"log"
	"net/http"
	"os"
)

func main() {
	requestBody := map[string]interface{}{
		"model": "qwen-plus",
		"input": map[string]interface{}{
			"messages": []map[string]string{
				{
					"role":    "system",
					"content": "あなたは役立つアシスタントです。",
				},
				{
					"role":    "user",
					"content": "あなたは誰ですか?",
				},
			},
		},
		"parameters": map[string]string{
			"result_format": "message",
		},
	}

	// JSON にシリアライズ
	jsonData, _ := json.Marshal(requestBody)

	// HTTP クライアントとリクエストを作成
	client := &http.Client{}
	// ベース URL はリージョンごとに異なります
	req, _ := http.NewRequest("POST", "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation", bytes.NewBuffer(jsonData))

	// リクエストヘッダーを設定
	apiKey := os.Getenv("DASHSCOPE_API_KEY")
	req.Header.Set("Authorization", "Bearer "+apiKey)
	req.Header.Set("Content-Type", "application/json")

	// リクエストを送信
	resp, err := client.Do(req)
	if err != nil {
		log.Fatal(err)
	}
	defer resp.Body.Close()

	// 応答ボディを読み取り
	bodyText, _ := io.ReadAll(resp.Body)

	// JSON を解析し、コンテンツを出力
	var result map[string]interface{}
	json.Unmarshal(bodyText, &result)
	content := result["output"].(map[string]interface{})["choices"].([]interface{})[0].(map[string]interface{})["message"].(map[string]interface{})["content"].(string)
	fmt.Println(content)

	// 完全な応答を表示するには、次の行のコメントを解除してください
	// fmt.Printf("%s\n", bodyText)
}

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

C# (HTTP)

using System.Net.Http.Headers;
using System.Text;

class Program
{
    private static readonly HttpClient httpClient = new HttpClient();

    static async Task Main(string[] args)
    {
        // API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
        // 環境変数を設定していない場合は、以下の行を string? apiKey = "sk-xxx"; に置き換えてください。
        string? apiKey = Environment.GetEnvironmentVariable("DASHSCOPE_API_KEY");
        // リクエスト URL とコンテンツを設定
        // ベース URL はリージョンごとに異なります
        string url = "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation";
        string jsonContent = @"{
            ""model"": ""qwen-plus"",
            ""input"": {
                ""messages"": [
                    {
                        ""role"": ""system"",
                        ""content"": ""あなたは役立つアシスタントです。""
                    },
                    {
                        ""role"": ""user"",
                        ""content"": ""あなたは誰ですか?""
                    }
                ]
            },
            ""parameters"": {
                ""result_format"": ""message""
            }
        }";

        // リクエストを送信し、応答を取得
        string result = await SendPostRequestAsync(url, jsonContent, apiKey);
        var jsonResult = System.Text.Json.JsonDocument.Parse(result);
        var content = jsonResult.RootElement.GetProperty("output").GetProperty("choices")[0].GetProperty("message").GetProperty("content").GetString();
        Console.WriteLine(content);
        // 完全な応答を表示するには、次の行のコメントを解除してください
        // Console.WriteLine(result);
    }

    private static async Task<string> SendPostRequestAsync(string url, string jsonContent, string apiKey)
    {
        using (var content = new StringContent(jsonContent, Encoding.UTF8, "application/json"))
        {
            // リクエストヘッダーを設定
            httpClient.DefaultRequestHeaders.Authorization = new AuthenticationHeaderValue("Bearer", apiKey);
            httpClient.DefaultRequestHeaders.Accept.Add(new MediaTypeWithQualityHeaderValue("application/json"));

            // リクエストを送信し、応答を取得
            HttpResponseMessage response = await httpClient.PostAsync(url, content);

            // 応答を処理
            if (response.IsSuccessStatusCode)
            {
                return await response.Content.ReadAsStringAsync();
            }
            else
            {
                return $"リクエストに失敗しました: {response.StatusCode}";
            }
        }
    }
}

応答

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": "私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!"
                }
            }
        ]
    },
    "usage": {
        "total_tokens": 92,
        "output_tokens": 66,
        "input_tokens": 26
    },
    "request_id": "09dceb20-ae2e-999b-85f9-xxxxxx"
}

PHP (HTTP)

<?php
// ベース URL はリージョンごとに異なります
$url = "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation";
// API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
$apiKey = getenv('DASHSCOPE_API_KEY');

$data = [
    "model" => "qwen-plus",
    "input" => [
        "messages" => [
            [
                "role" => "system",
                "content" => "あなたは役立つアシスタントです。"
            ],
            [
                "role" => "user",
                "content" => "あなたは誰ですか?"
            ]
        ]
    ],
    "parameters" => [
        "result_format" => "message"
    ]
];

$jsonData = json_encode($data);

$ch = curl_init($url);
curl_setopt($ch, CURLOPT_RETURNTRANSFER, true);
curl_setopt($ch, CURLOPT_POST, true);
curl_setopt($ch, CURLOPT_POSTFIELDS, $jsonData);
curl_setopt($ch, CURLOPT_HTTPHEADER, [
    "Authorization: Bearer $apiKey",
    "Content-Type: application/json"
]);

$response = curl_exec($ch);
$httpCode = curl_getinfo($ch, CURLINFO_HTTP_CODE);

if ($httpCode == 200) {
    $jsonResult = json_decode($response, true);
    $content = $jsonResult['output']['choices'][0]['message']['content'];
    echo $content;
    // 完全な応答を表示するには、次の行のコメントを解除してください
    // echo "モデルの応答: " . $response;
} else {
    echo "リクエストエラー: " . $httpCode . " - " . $response;
}

curl_close($ch);
?>

応答

私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!

curl

ベース URL と API キーはリージョンごとに異なります。詳細については、「DashScope」および「API キーの取得」をご参照ください。

curl --location "https://dashscope-intl.aliyuncs.com/api/v1/services/aigc/text-generation/generation" \
--header "Authorization: Bearer $DASHSCOPE_API_KEY" \
--header "Content-Type: application/json" \
--data '{
    "model": "qwen-plus",
    "input":{
        "messages":[      
            {
                "role": "system",
                "content": "あなたは役立つアシスタントです。"
            },
            {
                "role": "user",
                "content": "あなたは誰ですか?"
            }
        ]
    },
    "parameters": {
        "result_format": "message"
    }
}'

応答

{
    "output": {
        "choices": [
            {
                "finish_reason": "stop",
                "message": {
                    "role": "assistant",
                    "content": "私は Qwen、Alibaba Group の Tongyi Lab によって開発された大規模言語モデルです。質問への回答、物語、公式文書、メール、スクリプトなどのテキスト作成、論理的推論、コーディングができます。また、意見を述べたり、ゲームをしたりすることもできます。ご質問やお手伝いが必要なことがあれば、お気軽にお尋ねください!"
                }
            }
        ]
    },
    "usage": {
        "total_tokens": 92,
        "output_tokens": 66,
        "input_tokens": 26
    },
    "request_id": "09dceb20-ae2e-999b-85f9-xxxxxx"
}

画像と動画の処理

マルチモーダルモデルは、画像や動画などのテキスト以外のデータを受け付けます。視覚的な質問応答やイベント検出などのタスクをサポートします。その使用方法は、テキストのみのモデルと主に2つの点で異なります:

  • ユーザーメッセージの構築方法:マルチモーダルモデルのユーザーメッセージには、テキストとともに画像、音声、またはその他のモダリティが含まれます。

  • DashScope SDK インターフェイス:DashScope Python SDK を使用する場合、MultiModalConversation インターフェイスを呼び出します。DashScope Java SDK を使用する場合、MultiModalConversation クラスを呼び出します。

画像および動画ファイルの制限については、「画像と動画の理解」をご参照ください。

OpenAI 互換 – Chat Completions API

Python

from openai import OpenAI
import os

client = OpenAI(
    # API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、以下の行を api_key="sk-xxx" に置き換えてください
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # ベース URL はリージョンごとに異なります
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)
messages = [
    {
        "role": "user",
        "content": [
            {
                "type": "image_url",
                "image_url": {
                    "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251031/ownrof/f26d201b1e3f4e62ab4a1fc82dd5c9bb.png"
                },
            },
            {"type": "text", "text": "画像に表示されているプロダクトは何ですか?"},
        ],
    }
]
completion = client.chat.completions.create(
    model="qwen3-vl-plus",  # 必要に応じて別のマルチモーダルモデルに置き換え、メッセージを適宜更新してください
    messages=messages,
)
print(completion.choices[0].message.content)

Node.js

import OpenAI from "openai";

const openai = new OpenAI(
    {
        // API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
        // 環境変数を設定していない場合は、以下の行を apiKey: "sk-xxx" に置き換えてください。
        apiKey: process.env.DASHSCOPE_API_KEY,
        // ベース URL はリージョンごとに異なります
        baseURL: "https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
    }
);

let messages = [
    {
        role: "user",
        content: [
            { type: "image_url", image_url: { "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251031/ownrof/f26d201b1e3f4e62ab4a1fc82dd5c9bb.png" } },
            { type: "text", text: "画像に表示されているプロダクトは何ですか?" },
        ]
    }]
async function main() {
    let response = await openai.chat.completions.create({
        model: "qwen3-vl-plus",   // 必要に応じて別のマルチモーダルモデルに置き換え、メッセージを適宜更新してください
        messages: messages
    });
    console.log(response.choices[0].message.content);
}

main()

curl

ベース URL と API キーはリージョンごとに異なります。詳細については、「OpenAI Chat」および「API キーの取得」をご参照ください。

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-vl-plus",
  "messages": [
    {
      "role": "user",
      "content": [
        {
          "type": "image_url",
          "image_url": {
            "url": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251031/ownrof/f26d201b1e3f4e62ab4a1fc82dd5c9bb.png"
          }
        },
        {
          "type": "text",
          "text": "画像に表示されているプロダクトは何ですか?"
        }
      ]
    }
  ]
}'

DashScope

Python

import os
from dashscope import MultiModalConversation
import dashscope
# ベース URL はリージョンごとに異なります
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/20251031/ownrof/f26d201b1e3f4e62ab4a1fc82dd5c9bb.png"
            },
            {"text": "画像に表示されているプロダクトは何ですか?"},
        ],
    }
]
response = MultiModalConversation.call(
    # API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数を設定していない場合は、以下の行を api_key="sk-xxx" に置き換えてください。
    api_key=os.getenv('DASHSCOPE_API_KEY'),
    model='qwen3-vl-plus',  # 必要に応じて別のマルチモーダルモデルに置き換え、メッセージを適宜更新してください
    messages=messages
)

print(response.output.choices[0].message.content[0]['text'])

Java

import java.util.ArrayList;
import java.util.Arrays;
import java.util.Collections;
import java.util.List;

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 {
        // ベース URL はリージョンごとに異なります
        Constants.baseHttpApiUrl = "https://dashscope-intl.aliyuncs.com/api/v1";
    }

    private static final String modelName = "qwen3-vl-plus";  // 必要に応じて別のマルチモーダルモデルに置き換え、メッセージを適宜更新してください

    public static void MultiRoundConversationCall() 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/20251031/ownrof/f26d201b1e3f4e62ab4a1fc82dd5c9bb.png"),
                        Collections.singletonMap("text", "画像に表示されているプロダクトは何ですか?"))).build();
        List<MultiModalMessage> messages = new ArrayList<>();
        messages.add(userMessage);
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                // API キーはリージョンごとに異なります。API キーの取得: https://www.alibabacloud.com/help/model-studio/get-api-key
                // 環境変数を設定していない場合は、以下の行を .apiKey("sk-xxx") に置き換えてください。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model(modelName)
                .messages(messages)
                .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 {
            MultiRoundConversationCall();
        } catch (ApiException | NoApiKeyException | UploadFileException e) {
            System.out.println(e.getMessage());
        }
        System.exit(0);
    }
}

curl

ベース URL と API キーはリージョンごとに異なります。詳細については、「DashScope」および「API キーの取得」をご参照ください。

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-vl-plus",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": [
                    {"image": "https://help-static-aliyun-doc.aliyuncs.com/file-manage-files/zh-CN/20251031/ownrof/f26d201b1e3f4e62ab4a1fc82dd5c9bb.png"},
                    {"text": "画像に表示されているプロダクトは何ですか?"}
                ]
            }
        ]
    }
}'

非同期モデル呼び出し

非同期 API は、高同時実行リクエストにおけるスループットを向上させます。

OpenAI 互換 – チャット完了 API

Python

import os
import asyncio
from openai import AsyncOpenAI
import platform

# 非同期クライアントインスタンスを作成します
client = AsyncOpenAI(
    # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
    # 環境変数が設定されていない場合は、下記の行を api_key="sk-xxx" に置き換えてください。
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # ベース URL はリージョンによって異なります
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1"
)

# 非同期タスクのリストを定義します
async def task(question):
    print(f"質問を送信: {question}")
    response = await client.chat.completions.create(
        messages=[
            {"role": "user", "content": question}
        ],
        model="qwen-plus",  # モデル一覧:https://www.alibabacloud.com/help/zh/model-studio/getting-started/models
    )
    print(f"モデル応答: {response.choices[0].message.content}")

# 主要な非同期関数
async def main():
    questions = ["あなたは誰ですか?", "何ができますか?", "天気はどうですか?"]
    tasks = [task(q) for q in questions]
    await asyncio.gather(*tasks)

if __name__ == '__main__':
    # イベントループポリシーを設定します
    if platform.system() == 'Windows':
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    # 主要なコルーチンを実行します
    asyncio.run(main(), debug=False)
    

Java

import com.openai.client.OpenAIClientAsync;
import com.openai.client.okhttp.OpenAIOkHttpClientAsync;
import com.openai.models.chat.completions.ChatCompletionCreateParams;

import java.util.Arrays;
import java.util.List;
import java.util.concurrent.CompletableFuture;

public class Main {
    public static void main(String[] args) {
        // DashScope の互換性エンドポイントに接続された OpenAI クライアントを作成します
        OpenAIClientAsync client = OpenAIOkHttpClientAsync.builder()
                // API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/zh/model-studio/get-api-key
                // 環境変数が設定されていない場合は、下記の行を .apiKey("sk-xxx") に置き換えてください。
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // ベース URL はリージョンによって異なります
                .baseUrl("https://dashscope-intl.aliyuncs.com/compatible-mode/v1")
                .build();

        // 質問のリストを定義します
        List<String> questions = Arrays.asList("あなたは誰ですか?", "何ができますか?", "天気はどうですか?");

        // 非同期タスクのリストを作成します
        CompletableFuture<?>[] futures = questions.stream()
                .map(question -> CompletableFuture.supplyAsync(() -> {
                    System.out.println("質問を送信: " + question);
                    // ChatCompletion パラメーターを作成します
                    ChatCompletionCreateParams params = ChatCompletionCreateParams.builder()
                            .model("qwen-plus")  // モデルを指定
                            .addSystemMessage("あなたは親切なアシスタントです。")
                            .addUserMessage(question)
                            .build();

                    // 非同期リクエストを送信し、応答を処理します
                    return client.chat().completions().create(params)
                        .thenAccept(chatCompletion -> {
                            String content = chatCompletion.choices().get(0).message().content().orElse("応答内容なし");
                            System.out.println("モデル応答: " + content);
                        })
                        .exceptionally(e -> {
                            System.err.println("エラー: " + e.getMessage());
                            System.out.println("ドキュメントをご参照ください: https://www.alibabacloud.com/help/zh/model-studio/error-code");
                            return null;
                        });
                }).thenCompose(future -> future))
                .toArray(CompletableFuture[]::new);

        // すべての非同期操作が完了するまで待機します
        CompletableFuture.allOf(futures).join();
    }
}

DashScope

DashScope SDK では、非同期テキスト生成呼び出しは Python のみでサポートされています。

# DashScope Python SDK のバージョンは 1.19.0 以上である必要があります
import asyncio
import platform
from dashscope.aigc.generation import AioGeneration
import os
import dashscope
# ベース URL はリージョンによって異なります
dashscope.base_http_api_url = 'https://dashscope-intl.aliyuncs.com/api/v1'

# 非同期タスクのリストを定義します
async def task(question):
    print(f"質問を送信: {question}")
    response = await AioGeneration.call(
        # 環境変数が設定されていない場合は、下記の行を api_key="sk-xxx" に置き換えてください。
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        model="qwen-plus",  # モデル一覧:https://www.alibabacloud.com/help/zh/model-studio/models
        messages=[{"role": "system", "content": "あなたは親切なアシスタントです。"},
                  {"role": "user", "content": question}],
        result_format="message",
    )
    print(f"モデル応答: {response.output.choices[0].message.content}")

# 主要な非同期関数
async def main():
    questions = ["あなたは誰ですか?", "何ができますか?", "天気はどうですか?"]
    tasks = [task(q) for q in questions]
    await asyncio.gather(*tasks)

if __name__ == '__main__':
    # イベントループポリシーを設定します
    if platform.system() == 'Windows':
        asyncio.set_event_loop_policy(asyncio.WindowsSelectorEventLoopPolicy())
    # 主要なコルーチンを実行します
    asyncio.run(main(), debug=False)

応答

呼び出しが非同期であるため、応答の順序は例と異なる場合があります。
質問を送信: あなたは誰ですか?
質問を送信: 何ができますか?
質問を送信: 天気はどうですか?
モデル応答: こんにちは!私はアリババグループの通義実験室が開発した大規模言語モデル「Qwen(通義千問)」です。質問への回答、物語や公式文書・メール・脚本・論理的推論・コード作成などのテキスト生成、意見表明、ゲームなどを行うことができます。何かご質問やお手伝いが必要な場合は、いつでもお気軽にお知らせください!
モデル応答: 私はリアルタイムの天気情報を取得できません。お住まいの都市またはリージョンをお知らせいただければ、一般的な天気に関するアドバイスを提供いたします。また、ライブの天気状況を確認するには、天気アプリをご利用ください。
モデル応答: 私には以下のようなスキルがあります。

1. **質問への回答**: 学術的・日常的・専門的な質問にお答えできます。
2. **テキスト作成**: 物語、公式文書、メール、脚本などを作成できます。
3. **論理的推論**: 数学の問題、なぞなぞ、論理パズルを解くことができます。
4. **プログラミング**: コードの作成、デバッグ、最適化を支援できます。
5. **多言語対応**: 中国語、英語、フランス語、スペイン語などに対応しています。
6. **意見表明**: ご判断を支援するための見解や提案を提供できます。
7. **ゲーム**: なぞなぞや四字熟語連想などの言葉遊びができます。

特定のことでお手伝いが必要な場合は、お知らせください!

本番環境への適用

高品質なコンテキストの構築

大規模言語モデルに生データを直接供給すると、コンテキスト長の制限によりコストが増加し、品質が低下します。コンテキストエンジニアリングは、正確な知識を動的にロードすることで、出力品質と効率を向上させます。コア技術は次のとおりです。

  • プロンプトエンジニアリング:モデルを目的の出力に導くために、テキスト命令 (プロンプト) を設計および改良します。詳細については、「テキスト-テキストプロンプトガイド」をご参照ください。

  • 検索拡張生成 (RAG):プロダクトドキュメントや技術マニュアルなどの外部ナレッジベースを使用してモデルが質問に回答する必要がある場合に、この技術を使用します。

  • ツール呼び出し:モデルが天気や交通情報などのリアルタイムデータをフェッチしたり、API の呼び出しやメールの送信などの操作を実行したりできるようにします。

  • メモリメカニズム:会話履歴を理解するために、モデルに短期メモリと長期メモリを提供します。

応答の多様性のコントロール

temperaturetop_p パラメーターは、生成されるテキストの多様性をコントロールします。値が高いほど多様性が増し、値が低いほど予測可能性が増します。これらのパラメーターの効果を評価するには、一度に1つだけ調整してください。

  • temperature:ランダム性を調整する [0, 2) の範囲の値です。

  • top_p:確率しきい値で応答をフィルタリングする [0, 1] の範囲の値です。

次の例は、異なる設定がどのように出力に影響するかを示しています。プロンプトは「猫と日差しを主役にした3文の物語を書いてください」です。

  • 高い多様性 (例:temperature=0.9):斬新さと想像力が重要なクリエイティブライティング、ブレインストーミング、またはマーケティングコピーにこの設定を使用します。

    Sunlight sliced through the window, and the ginger cat crept toward the glowing square, its fur instantly gilded like molten honey.  
    It tapped the light with a paw, sinking into warmth as if stepping into a sunlit pool, and the golden tide flowed up its spine.  
    The afternoon grew heavy—the cat curled in liquid gold, hearing time melt softly in its purr.
  • 高い予測可能性 (例:temperature=0.1):正確性と一貫性が重要な事実に基づくQ&A、コード生成、または法的文書にこの設定を使用します。

    An old cat napped on the windowsill, counting sunbeams.  
    The sunlight hopped across its mottled back like pages turning in an old photo album.  
    Dust rose and settled, whispering: you were young once, and I burned bright.

仕組み

temperature

  • temperature が高いほど、トークン確率分布が平坦化されます。これにより、高確率トークンは発生しにくくなり、低確率トークンは発生しやすくなり、モデルは次のトークンを選択する際にランダム性が高まります。

  • temperature が低いほど、トークン確率分布がシャープになります。これにより、高確率トークンはさらに発生しやすくなり、低確率トークンは発生しにくくなり、モデルは高確率トークンを優先します。

top_p

Top-p サンプリングは、累積確率が 0.8 などの指定されたしきい値を超えるトップトークンの最小セットから選択します。このメソッドは、すべての可能な次のトークンを確率でソートし、合計がしきい値に達するまで確率を高いものから低いものへと累積します。その後、モデルはこのセットからランダムに1つのトークンを選択します。

  • top_p 値が高いほど、より多くのトークンが考慮され、多様性が高まります。

  • top_p 値が低いほど、考慮されるトークンが少なくなり、フォーカスと予測可能性が高まります。

一般的なシナリオのパラメーター設定

# Recommended parameter settings for different scenarios
SCENARIO_CONFIGS = {
    # Creative writing
    "creative_writing": {
        "temperature": 0.9,
        "top_p": 0.95
    },
    # Code generation
    "code_generation": {
        "temperature": 0.2,
        "top_p": 0.8
    },
    # Factual Q&A
    "factual_qa": {
        "temperature": 0.1,
        "top_p": 0.7
    },
    # Translation
    "translation": {
        "temperature": 0.3,
        "top_p": 0.8
    }
}

# OpenAI usage example
# completion = client.chat.completions.create(
#     model="qwen-plus",
#     messages=[{"role": "user", "content": "Write a poem about the moon"}],
#     **SCENARIO_CONFIGS["creative_writing"]
# )
# DashScope usage example
# response = Generation.call(
#     # If you have not set an environment variable, replace the line below with: api_key = "sk-xxx",
#     api_key=os.getenv("DASHSCOPE_API_KEY"),
#     model="qwen-plus",
#     messages=[{"role": "user", "content": "Write a Python function that checks if input n is prime. Output only code."}],
#     result_format="message",
#     **SCENARIO_CONFIGS["code_generation"]
# )

その他の特徴

以前のセクションでは基本的なインタラクションについて説明しました。複雑なシナリオについては、次のトピックをご参照ください。

  • マルチターン会話:継続的な対話が必要なフォローアップの質問や情報収集にこの機能を使用します。

  • ストリーミング出力:ユーザーエクスペリエンスを向上させ、長い応答によるタイムアウトを回避するために、チャットボットやリアルタイムコード生成にこの機能を使用します。

  • ディープシンキング:高品質で構造化された回答が必要な複雑な推論やポリシー分析にこの機能を使用します。

  • 構造化出力:プログラムによる使用やデータ解析のために、モデルが安定した JSON フォーマットで応答する必要がある場合に、この機能を使用します。

  • 部分モード:モデルが既存のテキストから継続するコード補完や長文作成にこの機能を使用します。

APIリファレンス

モデル呼び出しパラメーターの完全なリストについては、「OpenAI 互換 API リファレンス」および「DashScope API リファレンス」をご参照ください。

よくある質問

Q: Qwen API が Web リンクを解析できないのはなぜですか?

A: Qwen API は、直接 Web リンクにアクセスしたり、解析したりすることはできません。Function Callingを使用するか、Python の Beautiful Soup などの Web スクレイピングツールと組み合わせて Web ページのコンテンツを読み取ることができます。

Q: なぜ Qwen Web アプリ の応答は Qwen API の応答と異なるのですか?

A: Qwen Web アプリには、Qwen API にはない追加のエンジニアリング最適化が含まれており、Web ページ解析、Web 検索、画像描画、PPT 作成などの機能が有効になっています。これらの機能は、コアの大規模言語モデル API の一部ではありません。Function Callingを使用してこれらを再現し、モデルのパフォーマンスを向上させることができます。

Q: モデルは Word、Excel、PDF、または PPT ファイルを直接生成できますか?

A: いいえ、できません。Alibaba Cloud Model Studio のテキスト生成モデルは、プレーンテキストのみを出力します。コードやサードパーティのライブラリを使用するか、テキストを目的のフォーマットに変換できます。