Skip to main content

概要

テキスト生成モデルは、自然言語プロンプトからテキストを生成し、チャットボット、コンテンツ作成、ドキュメント要約、コード生成などのアプリケーションに利用されます。

入力は、単一のキーワードから、コンテキストを含む複雑な複数ステップのプロンプトまで多岐にわたります。一般的なユースケースは次のとおりです。
  • コンテンツ作成:ニュース記事、製品説明、ショートビデオのスクリプトを生成します。
  • カスタマーサービス:24 時間 365 日対応の自動チャットボットを構築し、よくある質問に回答します。
  • テキスト翻訳:複数の言語間でテキストを翻訳します。
  • 要約:長い記事、レポート、メールを要約します。
  • 法的文書の起草:契約書のテンプレートや法的意見書を起草します。

基本概念

テキスト生成モデルへの入力はプロンプトであり、それぞれがロールとコンテンツを含む 1 つ以上のメッセージオブジェクトで構成されます。
  • システムメッセージ:モデルのペルソナ、動作ガイドライン、またはタスク固有の指示を設定します。デフォルトは「あなたは役に立つアシスタントです。」です。
  • ユーザーメッセージ:ユーザーの質問、指示、またはモデルへの入力です。
  • アシスタントメッセージ:モデルの応答です。マルチターン対話では、コンテキストを維持するために過去のアシスタントメッセージを渡します。
モデルを呼び出すには、これらのメッセージオブジェクトの配列を messages という名前で構築します。一般的なリクエストは、動作ガイドラインを定義する system メッセージと、ユーザーの入力を含む user メッセージで構成されます。
system メッセージは任意ですが、推奨されます。モデルのロールと動作上の制約を定義することで、より一貫性があり予測可能な出力が生成されます。
[
    {"role": "system", "content": "You are a helpful assistant who provides precise, efficient, and insightful responses, ready to assist users with various tasks and questions."},
    {"role": "user", "content": "Who are you?"}
]
応答には、assistant メッセージにモデルの返信が含まれます。
{
    "role": "assistant",
    "content": "Hello! I am Qwen, a large-scale language model developed by Tongyi Lab at Alibaba Group. I can help you with tasks like answering questions, creating text, logical reasoning, and coding. I understand and generate multiple languages, and can handle multi-turn conversations and complex instructions. If there is anything you need help with, just let me know!"
}

クイックスタート

前提条件:API キーの取得とAPI キーを環境変数として設定。SDK を使用する場合は、OpenAI または DashScope SDK のインストールも必要です。サンプルベース URL の {WorkspaceId} は、ご利用のワークスペース ID です。取得方法については、「リージョンとアクセスドメイン」をご参照ください。
  • OpenAI 互換の Chat Completions API
  • OpenAI 互換の Responses API
  • DashScope
  • Python
  • Java
  • Node.js
  • Go
  • C# (HTTP)
  • PHP (HTTP)
  • curl
import os
from openai import OpenAI

try:
    client = OpenAI(
        # API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください
        # 環境変数を設定していない場合は、次の行を Alibaba Cloud Model Studio API キーに置き換えてください:api_key="sk-xxx",
        api_key=os.getenv("DASHSCOPE_API_KEY"),
        # アジアパシフィック SE 1 (シンガポール) リージョンのエンドポイントです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
        base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
    )

    completion = client.chat.completions.create(
        model="qwen3.8-max",
        messages=[
            {"role": "system", "content": "You are a helpful assistant."},
            {"role": "user", "content": "Who are you?"},
        ],
    )
    print(completion.choices[0].message.content)
    # 完全な応答を表示するには、次の行のコメントを解除してください。
    # print(completion.model_dump_json())
except Exception as e:
    print(f"Error message: {e}")
    print("詳細については、ドキュメントをご参照ください:https://www.alibabacloud.com/help/model-studio/error-code")

応答

I am Qwen, a large-scale language model developed by Tongyi Lab at Alibaba Group. I can help you answer questions and create content, such as writing stories, official documents, emails, and scripts. I can also do logical reasoning, program, share opinions, play games, and more. If you have any questions or need help, feel free to ask!

画像および動画データ処理

マルチモーダルモデルは、画像や動画などの非テキストデータを処理し、視覚的質問応答やイベント検出などのタスクを実行します。テキストのみのモデルとは、次の 2 つの点で異なります。
  • ユーザーメッセージの構築:マルチモーダルユーザーメッセージには、テキストと、画像や音声などの非テキストデータが含まれます。
  • DashScope SDK インターフェイス:DashScope Python SDK には MultiModalConversation インターフェイスを使用し、DashScope Java SDK には MultiModalConversation クラスを使用します。
画像および動画ファイルの制限については、「画像と動画の理解」をご参照ください。
  • OpenAI 互換のチャット補完
  • DashScope
  • Python
  • Node.js
  • curl
from openai import OpenAI
import os

client = OpenAI(
    # API キーはリージョンによって異なります。API キーを取得するには:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数が設定されていない場合は、Model Studio API キーを直接指定してください。例:api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # これはシンガポールリージョンのエンドポイントです。{WorkspaceId} をご利用の WorkspaceId に置き換えてください。エンドポイントはリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.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": "What products are shown in the image?"},
        ],
    }
]
completion = client.chat.completions.create(
    model="qwen3.6-plus",
    messages=messages,
)
print(completion.choices[0].message.content)

非同期呼び出し

非同期呼び出しは、高い同時実行性が求められるワークロードのスループットを向上させます。
  • OpenAI 互換の Chat Completions API
  • DashScope
Python
import os
import asyncio
from openai import AsyncOpenAI
import platform

# 非同期クライアントインスタンスを作成します。
client = AsyncOpenAI(
    # API キーはリージョンによって異なります。API キーを取得するには、https://www.alibabacloud.com/help/model-studio/get-api-key をご参照ください
    # 環境変数を設定していない場合は、次の行を Model Studio API キーに置き換えてください:api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # これはシンガポールリージョンの URL です。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

# 非同期タスクを定義します。
async def task(question):
    print(f"Sending question: {question}")
    response = await client.chat.completions.create(
        messages=[
            {"role": "user", "content": question}
        ],
        model="qwen-plus",  # モデルのリストについては、https://www.alibabacloud.com/help/model-studio/getting-started/models をご参照ください
    )
    print(f"Model response: {response.choices[0].message.content}")

# メインの非同期関数。
async def main():
    questions = ["Who are you?", "What can you do?", "What's the weather like?"]
    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)

応答のサンプル
呼び出しは非同期であるため、応答の順序はこの例と異なる場合があります。
Sending question: Who are you?
Sending question: What can you do?
Sending question: What's the weather like?
Model response: Hello! I'm Qwen, a large-scale language model developed by Tongyi Lab at Alibaba Group. I can help you answer questions and create content, such as writing stories, official documents, emails, and scripts. I can also do logical reasoning, programming, share opinions, play games, and more. If you have any questions or need help, feel free to ask!
Model response: Hello! I am currently unable to access real-time weather information. You can tell me your city or region, and I will do my best to provide you with general weather advice or information. Alternatively, you can use a weather app to check the real-time weather conditions.
Model response: I have many skills, for example:

1. Answering questions: Whether it's academic questions, general knowledge, or professional topics, I can try to help you find answers.
2. Creating text: I can write various types of text, such as stories, official documents, emails, and scripts.
3. Logical reasoning: I can help you solve logical reasoning problems, such as math problems and riddles.
4. Programming: I can provide programming assistance, including code writing, debugging, and optimization.
5. Multilingual support: I support multiple languages, including but not limited to Chinese, English, French, and Spanish.
6. Expressing opinions: I can offer you some perspectives and suggestions to help you make decisions.
7. Playing games: We can play text-based games together, such as riddles or idiom solitaire.

If you have any specific needs or questions, feel free to let me know, and I will do my best to help you!

本番運用

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

大量の生データをモデルに供給すると、コストが増加し、コンテキストウィンドウの制限によりパフォーマンスが低下する可能性があります。コンテキストエンジニアリング (正確な知識を動的に読み込むこと) は、生成の品質と効率を向上させます。主要な手法は次のとおりです。
  • プロンプトエンジニアリング:テキストプロンプトを設計・最適化し、モデルを目的の出力に導きます。詳細については、「テキスト生成のためのプロンプトガイド」ページをご参照ください。
  • RAG (Retrieval-Augmented Generation):製品ドキュメントや技術マニュアルなどの外部ナレッジベースからモデルが質問に回答できるようにします。
  • ツール呼び出し:リアルタイム情報 (天気、交通状況) を取得したり、モデルに代わってアクション (API 呼び出し、メール送信) を実行したりします。
  • メモリ:長期および短期メモリを提供し、モデルがマルチターン対話全体でコンテキストを記憶できるようにします。

応答の多様性の制御

temperature と top_p パラメーターは、生成されるテキストの多様性を制御します。値が高いほど多様性が増し、低いほど決定性が増します。各パラメーターの効果を分離するには、一度に 1 つだけを調整してください。
  • temperature:範囲:[0, 2)。主にランダム性を調整します。
  • top_p:範囲:[0, 1]。確率のしきい値に基づいて応答をフィルタリングします。
以下の例は、パラメーター設定が出力にどのように影響するかを示しています。入力プロンプト:「主人公が猫と太陽の光である 3 文の短い物語を書いてください。」
  • 高い多様性 (例:temperature=0.9):創造的な執筆、ブレインストーミング、またはマーケティングコピーに最適です。
窓辺に太陽の光が差し込み、オレンジ色の猫がその明るい斑点に忍び寄ると、その毛皮は溶けた蜂蜜の色に変わった。
猫は光に手を伸ばして軽くたたくと、まるで暖かいプールに足を踏み入れるかのようにその中に沈み込み、太陽の光は静かな潮のようにその背中を流れ上った。
午後は重くなり、漂う金色の中に丸まって、猫はゴロゴロという喉の音の中で時間が静かに溶けていくのを聞いた。
  • 高い決定性 (例:temperature=0.1):事実に基づく質疑応答、コード生成、または法的文書に最適です。
午後、年老いた猫が窓辺で丸くなり、光の斑点を数えながらうたた寝をしていた。
太陽の光がそのまだら模様の背中を飛び跳ね、まるで古い写真アルバムのページをめくるようだった。
埃が舞い上がり、また落ちていく。まるで時間が「君もかつては若かったし、私もかつては猛々しかった」と囁いているかのようだった。
temperature:
  • temperature が高いと、トークンの確率分布が平坦化され、確率の低いトークンが出現しやすくなり、出力のランダム性が増します。
  • temperature が低いと、分布がシャープになり、確率の高いトークンがさらに出やすくなり、出力のランダム性が減少します。
top_p:top_p (ニュークリアス) サンプリングは、累積確率が top_p のしきい値以上になる最小のトークンセットから選択します。トークンは確率順にソートされ、しきい値に達するまで累積されます。その後、この縮小されたセットから次のトークンがランダムにサンプリングされます。
  • top_p が高いと、トークン選択のプールが広がり、より多様なテキストが生成されます。
  • top_p が低いと、プールが狭まり、より焦点を絞った決定論的なテキストが生成されます。
# 一般的なシナリオで推奨されるパラメーター設定
SCENARIO_CONFIGS = {
    # 創造的な執筆
    "creative_writing": {
        "temperature": 0.9,
        "top_p": 0.95
    },
    # コード生成
    "code_generation": {
        "temperature": 0.2,
        "top_p": 0.8
    },
    # 事実に基づく Q&A
    "factual_qa": {
        "temperature": 0.1,
        "top_p": 0.7
    },
    # 翻訳
    "translation": {
        "temperature": 0.3,
        "top_p": 0.8
    }
}

# OpenAI の例
# completion = client.chat.completions.create(
#     model="qwen-plus",
#     messages=[{"role": "user", "content": "Write a poem about the moon"}],
#     **SCENARIO_CONFIGS["creative_writing"]
# )
# DashScope の例
# response = client.chat.completions.create(
#     model="qwen-plus",
#     messages=[{"role": "user", "content": "Write a Python function that determines whether the input n is a prime number. Output code only."}],
#     **SCENARIO_CONFIGS["code_generation"]
# )

その他の機能

より複雑なシナリオでは、以下の機能が利用可能です。
  • マルチターン対話:フォローアップの質問や情報収集など、継続的な対話に使用します。
  • ストリーミング出力:トークンが生成されると同時に逐次的に返すことで、チャットボットやリアルタイムのコード生成でのタイムアウトを防ぎます。
  • ディープシンキング:複雑な推論や戦略分析のために、より高品質で構造化された回答を生成します。
  • 構造化出力:プログラムでの使用やデータ解析のために、応答を一貫した JSON 形式に制約します。
  • プレフィックス補完:既存のテキストから生成を継続し、コード補完や長文執筆に役立ちます。

API リファレンス

すべてのパラメーターについては、「OpenAI 互換 API リファレンス」および「DashScope API リファレンス」をご参照ください。

よくある質問

Q:なぜ入力トークン数が送信したテキストのトークン数より多いのですか?

A:会話を処理する際、システムはチャットテンプレートを使用して生の入力テキストをラップし、ロール識別子やメッセージ境界などの制御マーカーを追加します。これらのシステムが生成したマーカーもトークンとしてカウントされます。 例えば、メッセージ {"role": "user", "content": "Hi"} を qwen3.8-max に送信すると、テキスト「Hi」はトークン化後、1 トークンにしか対応しません。しかし、システム処理中、実際の完全な入力テキストは次のようにフォーマットされます:<|im_start|>user\nHi<|im_end|>\n<|im_start|>assistant\n<think>。トークン化後、この完全なテキストにより、総入力トークン数は 11 に増加します。

Q:なぜ Qianwen API は Web ページのリンクを分析できないのですか?

A:Qianwen API は Web ページのコンテンツに直接アクセスできません。代わりに、関数呼び出し、または Python の Beautiful Soup のような Web スクレイピングツールを使用してコンテンツを抽出し、モデルに渡してください。

Q:応答の違い:Qianwen (Web)vs. Qianwen API

A:Qianwen (Web) は、Qianwen API の上に、Web ページ解析、Web 検索、画像生成、PPT 生成などの機能を追加しています。これらはベース API には含まれていませんが、、関数呼び出し を使用して同様の機能を構築できます。

Q:Word、Excel、PDF、または PPT ファイルの生成

A:いいえ。テキスト生成モデルはプレーンテキストのみを出力します。独自のコードやサードパーティのライブラリを使用して、出力を目的の形式に変換してください。