Skip to main content

パーシャルモード

コード補完やテキスト継続などのシナリオでは、既存のテキストフラグメント (プレフィックス) から新しいコンテンツの生成を開始できます。パーシャルモードを使用すると、モデルの出力がプレフィックスとシームレスに接続され、精度と制御が向上します。

仕組み

パーシャルモードを使用するには、messages 配列を設定します。配列の最後のメッセージで、role を assistant に設定し、content フィールドにプレフィックスを指定します。また、そのメッセージに "partial": true パラメーターを設定する必要があります。messages のフォーマットは次のとおりです。
[
    {
        "role": "user",
        "content": "Complete this Fibonacci function. Do not add anything else."
    },
    {
        "role": "assistant",
        "content": "def calculate_fibonacci(n):\n    if n <= 1:\n        return n\n    else:\n",
        "partial": true
    }
]
その後、モデルは指定されたプレフィックスからテキストの生成を開始します。

サポート対象モデル

  • テキスト生成モデル
    • Qwen4-Max シリーズ (Token Plan 限定):qwen4-max-preview
    • Qwen-Max (ノンシンキングモード):Qwen3.7-Max シリーズ、Qwen3.6-Max シリーズ、Qwen3-Max シリーズ、Qwen-Max シリーズ
    • Qwen-Plus (ノンシンキングモード):Qwen3.7-Plus シリーズ、Qwen3.6-Plus シリーズ、Qwen3.5-Plus シリーズ、Qwen-Plus シリーズ
    • Qwen-Flash (ノンシンキングモード):Qwen3.7-Flash シリーズ、Qwen3.6-Flash シリーズ、Qwen3.5-Flash シリーズ、Qwen-Flash シリーズ
    • Qwen-Coder:Qwen3-Coder シリーズ、Qwen2.5-Coder シリーズ
    • Qwen-Turbo (ノンシンキングモード):Qwen-Turbo シリーズ
    • Qwen3.6 オープンソースシリーズ (ノンシンキングモード)
    • Qwen3.5 オープンソースシリーズ (ノンシンキングモード)
    • Qwen3 オープンソースシリーズ (ノンシンキングモード)
    • Qwen2.5 オープンソースシリーズ
  • マルチモーダルモデル
    • Qwen-VL:Qwen3-VL-Plus シリーズ、Qwen3-VL-Flash シリーズ、Qwen-VL-Max シリーズ、Qwen-VL-Plus シリーズ
    • Qwen3-VL オープンソースシリーズ (ノンシンキングモード)

利用開始

前提条件

開始する前に、API キーを取得し、API キーを環境変数として設定してください。OpenAI SDK または DashScope SDK を使用してサービスを呼び出す場合は、SDK をインストールする必要があります。サブワークスペースのメンバーである場合は、スーパー管理者がワークスペースへのモデルアクセスを許可していることを確認してください。
DashScope Java SDK はサポートされていません。

サンプルコード

コード補完は、パーシャルモードの中核となるユースケースです。次の例は、Python 関数を補完する方法を示しています。
  • OpenAI 互換
  • DashScope
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

# 1. クライアントを初期化します
client = OpenAI(
    # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数に設定されていない場合は、ここで API キーに置き換えます
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 次の URL はシンガポールリージョン用です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    # 北京リージョンの場合は、https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1 を使用します
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
# 2. 補完するコードのプレフィックスを定義します
prefix = """def calculate_fibonacci(n):
    if n <= 1:
        return n
    else:
"""

# 3. パーシャルモードでリクエストを送信します
# 注:messages 配列の最後のメッセージは、role が "assistant" であり、"partial": True を含んでいる必要があります
completion = client.chat.completions.create(
    model="qwen3.7-max",
    messages=[
        {"role": "user", "content": "Complete this Fibonacci function. Do not add anything else."},
        {"role": "assistant", "content": prefix, "partial": True},
    ],
)

# 4. プレフィックスとモデルが生成したコンテンツを手動で結合します
generated_code = completion.choices[0].message.content
complete_code = prefix + generated_code

print(complete_code)

応答

def calculate_fibonacci(n):
    if n <= 1:
        return n
    else:
        return calculate_fibonacci(n-1) + calculate_fibonacci(n-2)

ユースケース

画像または動画の受け渡し

Qwen-VL モデルは、画像または動画データを使用したパーシャルモードをサポートしており、製品説明、SNS 投稿、ニュース記事、クリエイティブなコピーライティングなどのシナリオで役立ちます。
  • OpenAI 互換
  • DashScope
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
    # 環境変数に設定されていない場合は、次の行を置き換えます:api_key="sk-xxx",
    # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 次の URL はシンガポールリージョン用です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    # 北京リージョンの場合は、https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1 を使用します
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

completion = client.chat.completions.create(
    model="qwen3-vl-plus",
    messages=[
        {
            "role": "user",
            "content": [
                {
                    "type": "image_url",
                    "image_url": {
                        "url": "https://img.alicdn.com/imgextra/i3/O1CN01zFX2Bs1Q0f9pESgPC_!!6000000001914-2-tps-450-450.png"
                    },
                },
                {"type": "text", "text": "I want to post this on social media. Help me write a caption."},
            ],
        },
        {
            "role": "assistant",
            "content": "Today I discovered a hidden-gem café",
            "partial": True,
        },
    ],
)
print(completion.choices[0].message.content)

応答

— the tiramisu here is pure bliss! Every bite delivers perfect harmony between coffee and cream. Pure joy! #FoodShare #Tiramisu #CoffeeTime

Hope you like this caption! Let me know if you need any changes.

不完全な出力からの継続

max_tokens の値が小さすぎると、LLM は不完全なコンテンツを返すことがあります。パーシャルモードを使用してその時点から継続し、出力が意味的に完全であることを保証します。
  • OpenAI 互換
  • DashScope
  • Python
  • Node.js
import os
from openai import OpenAI

client = OpenAI(
    # API キーはリージョンによって異なります。API キーの取得方法:https://www.alibabacloud.com/help/model-studio/get-api-key
    # 環境変数に設定されていない場合は、ここで API キーに置き換えます
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 次の URL はシンガポールリージョン用です。{WorkspaceId} を実際のワークスペース ID に置き換えてください。URL はリージョンによって異なります。
    # 北京リージョンの場合は、https://{WorkspaceId}.cn-beijing.maas.aliyuncs.com/compatible-mode/v1 を使用します
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)

def chat_completion(messages,max_tokens=None):
    response = client.chat.completions.create(
        model="qwen-plus",
        messages=messages,
        max_tokens=max_tokens
    )
    print(f"### 生成が停止した理由: {response.choices[0].finish_reason}")

    return response.choices[0].message.content

# 使用例
messages = [{"role": "user", "content": "Write a short sci-fi story"}]

# max_tokens を 40 に設定して最初の呼び出し
first_content = chat_completion(messages, max_tokens=40)
print(first_content)
# 最初の応答をアシスタントメッセージとして追加し、partial=True を設定します
messages.append({"role": "assistant", "content": first_content, "partial": True})

# 2 回目の呼び出し
second_content = chat_completion(messages)
print("### 完全なコンテンツ:")
print(first_content+second_content)

応答

length:max_tokens の制限に達しました。stop:モデルが自然に終了したか、stop パラメーターのストップワードにヒットしました。
### 生成停止の理由: 長さ
**「記憶の終わり」**

遠い未来、地球はもはや人間の住める場所ではなくなっていた。大気は汚染され、海は干上がり、都市は廃墟と化していた。人類は「エデン」と名付けられた居住可能な惑星に移住した。そこには青い空、新鮮な空気、そして無限の資源があった。

しかし、エデンは真の楽園ではなかった。そこには人類の歴史も、過去も、記憶も存在しなかった。

...
**「我々が何者であるかを忘れてしまったら、それでも我々は人間なのだろうか?」**

— 終わり —

課金

課金は入力トークンと出力トークンを対象とします。プレフィックスは入力トークンの一部としてカウントされます。

エラーコード

モデルの呼び出しが失敗し、エラーメッセージが返された場合は、「エラーコード」を参照して解決してください。