Skip to main content

Web search

大規模言語モデルのトレーニングデータには知識のカットオフ日があるため、リアルタイムの質問に答えることができません。Web 検索を有効にすると、モデルはリアルタイムのデータを取得し、株価、天気予報、最新ニュースなど、時間に敏感な質問に正確に答えることができます。

使用方法

以下の 3 つの API 呼び出しを使用して Web 検索を有効にできます。それぞれ異なるパラメーターが必要です。
qwen3.7-max などのモデルで Web 検索を行うには、Responses API の Web 検索機能をご利用ください。
  • OpenAI 互換:Responses API
  • OpenAI 互換:Chat Completions API
  • DashScope
web_search ツールを tools パラメーターに追加して、Web 検索を有効にします。
Responses API は一部のモデルのみをサポートします。サポート対象モデルについては、「Responses API による Web 検索」をご参照ください。
# 依存関係をインポートし、クライアントを作成します...
response = client.responses.create(
    model="qwen3.8-max",
    input="Hangzhou weather",
    tools=[
        {"type": "web_search"},
        {"type": "web_extractor"},
        {"type": "code_interpreter"}
    ],
    extra_body={"enable_thinking": True}
)

マルチモーダルモデルでの Web 検索

Qwen4-Max シリーズ、Qwen3.8 シリーズ、Qwen3.7-Flash、Qwen3.7-Plus、Qwen3.6 シリーズ、Qwen3.5 シリーズ (qwen3.5-plus、qwen3.5-flash、qwen3.5-omni シリーズ、Qwen オープンソースモデルを含む) は、マルチモーダル入力 (画像、動画) を受け入れるマルチモーダルモデルです。 検索戦略のサポートはシリーズによって異なります:qwen3.5-omni シリーズは agent 戦略のみをサポートします。qwen4-max-preview、Qwen3.8 シリーズは agent 戦略をサポートしません (デフォルトの turbo または max を使用)。Qwen4 または Qwen3.8 で agent 方式の検索を使用する場合は、Responses API の Web 検索をご利用ください。その他のモデルは turbo、max、agent 戦略をサポートします。これらのモデルはマルチモーダル API (multimodal-generation エンドポイント) を介して呼び出します。Python SDK 2.0 では client.multimodal.chat.create を、Java では MultiModalConversation を使用し、テキスト専用モデル向けの Generation (text-generation エンドポイント) は使用しないでください。マルチモーダルモデルの呼び出しの基本については、「画像認識」および「画像と動画の理解」のトピックをご参照ください。
上記のマルチモーダルモデルを Generation (text-generation エンドポイント) で呼び出すと、400 url error, please check url が返されます。代わりにマルチモーダル API (multimodal-generation エンドポイント、Python では client.multimodal.chat.create、Java では MultiModalConversation) を使用してください。Java SDK では、MultiModalConversationParam は Web 検索を有効にするための enableSearch(true) を提供しますが、searchOptions() メソッドは提供しません。検索戦略やその他のオプションは、汎用の parameter("search_options", ...) メソッドを介して注入します。Python では、client.multimodal.chat.create は search_options を直接受け入れます。マルチモーダルモデルでの Web 検索にはストリーミング呼び出しが必要です (Java では streamCall を使用、Python では stream=True を設定)。そうしないと、リクエストは Non-streaming mode does not support Web Search エラーを返します。
Python
import os
import dashscope

# 以下はシンガポールリージョンを使用します。{WorkspaceId} を実際のワークスペース ID に置き換えてください。構成はリージョンによって異なります。
client = dashscope.Client(
    # 環境変数が設定されていない場合は、次の行を api_key="sk-xxx" に置き換え、Model Studio の API キーを使用してください。
    # API キーはリージョンによって異なります。API キーの取得方法: https://www.alibabacloud.com/help/model-studio/get-api-key
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    workspace="{WorkspaceId}",
    region="ap-southeast-1",
)
stream = client.multimodal.chat.create(
    # Web 検索をサポートするマルチモーダルモデルを使用します。
    model="qwen3.5-plus",
    messages=[{"role": "user", "content": [{"text": "What is the weather in Hangzhou today?"}]}],
    # マルチモーダル API は enable_search と search_options を直接受け入れます。
    enable_search=True,
    search_options={
        # qwen3.5-omni シリーズは agent が必要です。Qwen3.8 シリーズは agent をサポートしないため、デフォルトのままにしてください。
        "search_strategy": "agent",
        "enable_source": True,
    },
    # マルチモーダルモデルで Web 検索が有効になっている場合、ストリーミングが必要です。
    stream=True,
)
for chunk in stream:
    content = chunk.choices[0].delta.content or ""
    print(content)

サポート対象モデル

Web 検索に対応するモデルは以下のとおりです。マルチモーダル入力に対応するモデル (Qwen4-Max シリーズ, Qwen3.8 シリーズ, Qwen3.7-Flash/Plus, Qwen3.6 シリーズ, Qwen3.5 シリーズ, Qwen オープンソースモデルなど) は, マルチモーダルインターフェースで呼び出す必要があります。詳細は「マルチモーダルモデルの Web 検索」(/ja/model-studio/web-search#ws_mm_search_h3a) をご参照ください。
  • シンガポール
  • 中国 (北京)
  • Qwen
    • Qwen4 series:qwen4-max-preview (Token Plan 限定;agent 戦略はサポートされていません。agent 方式の検索には Responses API の web_search ツールをご利用ください)
    • Qwen3.8 series:qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-2.4t-a95b, qwen3.8-27b (agent 戦略はサポートされていません)
    • Qwen3.7 series:qwen3.7-max, qwen3.7-max-preview, qwen3.7-max-2026-05-17以降のスナップショット, qwen3.7-plus, qwen3.7-plus-2026-05-26以降のスナップショット, qwen3.7-flash, qwen3.7-flash-2026-07-15以降のスナップショット
    • Qwen3.6 series:qwen3.6-plus, qwen3.6-plus-2026-04-02以降のスナップショット, qwen3.6-flash, qwen3.6-flash-2026-04-16以降のスナップショット, qwen3.6-27b, qwen3.6-35b-a3b
    • Qwen3.5 series:qwen3.5-plus, qwen3.5-plus-2026-02-15以降のスナップショット, qwen3.5-flash, qwen3.5-flash-2026-02-23以降のスナップショット, qwen3.5-27b, qwen3.5-35b-a3b, qwen3.5-122b-a10b, qwen3.5-397b-a17b
    • Qwen-Omni: qwen3.5-omni-plus, qwen3.5-omni-plus-2026-03-15, qwen3.5-omni-flash, qwen3.5-omni-flash-2026-03-15 (検索戦略を agent に設定する必要があります)
    • Qwen-Omni-Realtime: qwen3.5-omni-plus-realtime, qwen3.5-omni-plus-realtime-2026-03-15, qwen3.5-omni-flash-realtime, qwen3.5-omni-flash-realtime-2026-03-15 (検索戦略を agent に設定する必要があります)
  • サードパーティモデル
    • DeepSeek:deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731、deepseek-v4.1-flash-1017 (deepseek-v4 シリーズは Responses API にも対応)
    • GLM:glm-5.2 (Responses API 経由の Web 検索のみサポート)
    • Kimi:kimi-k3.1-pro (Responses の web_search と Anthropic の web_search をサポートし、Chat Completions の enable_search はサポートしない);kimi-k3 (Responses API 経由の Web 検索のみサポート)
kimi-k3.1-pro (Alibaba Cloud Model Studio にデプロイ) は、米国 (バージニア)、中国 (香港)、日本 (東京)、ドイツ (フランクフルト) の全 4 リージョンで、Responses の web_search と Anthropic の web_search をサポートしますが、Chat Completions の enable_search はサポートしません。 deepseek-v4.1-flash-1017 は、モデルのネイティブ Web 検索、Responses API と Anthropic 互換 API の組み込み web_search ツールを、中国(北京)、シンガポール(International デプロイ範囲)、および米国(バージニア)、ドイツ(フランクフルト)、日本(東京)、中国(香港)(Global デプロイ範囲)でサポートします。

クイックスタート

以下の例では、Web 検索を使用して株価情報を照会する方法を示します。
  • OpenAI 互換
  • DashScope
OpenAI 互換プロトコルは、レスポンスでの検索ソースの返却をサポートしていません。
  • Python
  • Node.js
  • curl
import os
from openai import OpenAI

client = OpenAI(
    # 環境変数が設定されていない場合は、Model Studio API キーを直接指定します。例: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # 以下の構成はアジアパシフィック南東 1 (シンガポール) リージョン向けです。{WorkspaceId} をご利用のワークスペース ID に置き換えてください。構成はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1",
)
completion = client.chat.completions.create(
    model="qwen-plus",
    messages=[
        {"role": "system", "content": "You are a helpful assistant."},
        {"role": "user", "content": "What is the stock price of Alibaba?"},
    ],
    extra_body={
        "enable_search": True,
        "search_options": {
            # Web 検索戦略を指定します。「agent」のみがサポートされています。
            "search_strategy": "agent"
        }
    }
)
print(completion.choices[0].message.content)
レスポンス例
According to the latest market data, Alibaba's stock price in different markets is as follows:

*   US Stock (BABA): The latest price is approximately 159.84 USD.
*   Hong Kong Stock (09988.HK): The latest price is approximately 158.00 HKD.

Please note that stock prices fluctuate in real time, and this information is for reference only.

Responses API による Web 検索

web_search ツールを tools 配列の tools パラメーターに追加することで、Web 検索を有効にできます。
この機能は、次のモデルでのみサポートされています:Qwen3.8、Qwen3.7、Qwen3.5 シリーズのモデル(オープンソースモデルを含む、Omni モデルを除く)、Qwen3.6-Plus、Qwen3.6-Flash シリーズ、および qwen3.6-35b-a3b、deepseek-v4-flash-0731、deepseek-v4.1-flash-1017、deepseek-v4-pro、deepseek-v4-pro-0813、glm-5.2、kimi-k3、kimi-k3.1-pro。
最良の結果を得るために、web_search、web_extractor、および code_interpreter ツールを一緒に有効にすることを推奨します。
Responses API の使用方法、コード例、移行ガイドについては、「OpenAI 互換 - Responses」をご参照ください。
from openai import OpenAI
import os

client = OpenAI(
    # 環境変数を設定していない場合は、次の行をご利用の Model Studio API キーに置き換えてください: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # この構成はシンガポールリージョン向けです。{WorkspaceId} を実際のワークスペース ID に置き換えてください。構成はリージョンによって異なります。
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

response = client.responses.create(
    model="qwen3.7-max",
    input="Singapore weather",
    tools=[
        {"type": "web_search"},
        {"type": "web_extractor"},
        {"type": "code_interpreter"}
    ],
    extra_body={"enable_thinking": True}
)

print("="*20 + "Response content" + "="*20)
print(response.output_text)

print("="*20 + "Tool call count" + "="*20)
usage = response.usage
if hasattr(usage, 'x_tools') and usage.x_tools:
    print(f"Web search count: {usage.x_tools.get('web_search', {}).get('count', 0)}")
# 中間出力を表示するには、以下の行のコメントを解除します
# for r in response.output:
#     print(r.model_dump_json())

検索ソースの取得

Web 検索が実行されると、検索ソースがレスポンスで返されます。これらは、output 配列内の type が web_search_call である要素に表示され、その action.sources フィールドがソースリンクのリストです。上記の例の response から次のように抽出できます:
Responses API は、enable_source、enable_citation、または citation_format パラメーターをサポートしておらず、レスポンスコンテンツに [1] 引用マーカーを挿入しません。引用マーカーを使用するには、DashScope API を使用してください。
# 上記のレスポンスから検索ソースを抽出します
print("=" * 20 + "Search sources" + "=" * 20)
for item in response.output:
    if item.type == "web_search_call":
        for i, source in enumerate(item.action.sources, start=1):
            print(f"[{i}] {source.url}")

課金

Web 検索の料金は、2 つのコンポーネントで構成されます:
  • モデル呼び出し料金:Web 検索機能は、取得した Web コンテンツをプロンプトに追加するため、入力トークンの数が増加します。これらのトークンは、モデルの標準レートで課金されます。料金の詳細については、Model Studio コンソールをご参照ください。Responses API を使用する場合、Web 検索ツールはエージェントポリシーと同じレートで課金されます。
  • 検索ポリシー料金:
    • agent ポリシー:
      • 1,000 回あたりの料金は次のとおりです:
        • 中国 (北京) リージョンの場合:$0.573411。
        • シンガポールリージョンの場合:$10.00。
    • agent_max ポリシー (期間限定オファー): このポリシーは、Web 検索と Web エクストラクタツールの両方をカバーします。
      • Web 検索ツールの 1,000 回あたりの料金:
        • 中国 (北京) デプロイメントスコープの場合:$0.573411。
        • シンガポールリージョンの場合:$10.00。
      • Web エクストラクタツールは期間限定で無料です。

エラーメッセージ

エラーのトラブルシューティングについては、「エラーコード」をご参照ください。