Todos los productos
Search
Centro de documentos

Alibaba Cloud Model Studio:Búsqueda web

Última actualización: Oct 23, 2026

Los datos de entrenamiento de los modelos de lenguaje grandes tienen una fecha límite de conocimiento, lo que les impide responder preguntas en tiempo real. Habilitar la búsqueda web permite que el modelo recupere datos en tiempo real y responda con precisión a preguntas sensibles al tiempo, como precios de acciones, pronósticos meteorológicos y noticias de última hora.

Uso

Puede habilitar la búsqueda web utilizando las cuatro llamadas de API a continuación, cada una de las cuales requiere diferentes parámetros.

Para la búsqueda web con modelos como qwen3.7-max, use la función de búsqueda web de la Responses API.

Compatible con OpenAI: API de Responses

Agregue la herramienta web_search al parámetro tools para habilitar la búsqueda web.

La Responses API solo admite algunos modelos. Para ver los modelos compatibles, consulte Búsqueda web con Responses API.

# Import dependencies and create a client...
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}
)

Compatible con OpenAI: API de Chat Completions

Establezca enable_search: true para habilitar la búsqueda web.

# Import dependencies and create a client...
completion = client.chat.completions.create(
    # Use a model that supports web search.
    model="qwen-plus",
    messages=[{"role": "user", "content": "What is the weather in Hangzhou tomorrow?"}],
    # Since enable_search is not a standard OpenAI parameter, pass it via extra_body when using the Python SDK. For the Node.js SDK, pass it as a top-level parameter.
    extra_body={"enable_search": True}
)

DashScope

Establezca enable_search: true para habilitar la búsqueda web.

# Import dependencies...
response = dashscope.Generation.call(
    # If the DASHSCOPE_API_KEY environment variable is not set, replace the next line with your Model Studio API key (e.g., api_key="sk-xxx",).
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Use a model that supports web search.
    model="qwen-plus",
    messages=[{"role": "user", "content": "What is the weather in Hangzhou tomorrow?"}],
    # Enable web search
    enable_search=True,
    result_format="message"
)

Compatible con Anthropic

Agregue la herramienta de búsqueda web del lado del servidor de Anthropic (name establecido en web_search) al parámetro tools para habilitar la búsqueda web. El endpoint es https://{WorkspaceId}.{region}.maas.aliyuncs.com/apps/anthropic.

Este método está dirigido a clientes oficiales de Anthropic como Claude Code. En esos clientes, una pregunta simple en lenguaje natural activa la búsqueda web sin configuración adicional.

Cuando llama a la API directamente con el SDK de Anthropic o mediante HTTP, pase el identificador de cliente x-anthropic-billing-header: cc_entrypoint=cli; en system. De lo contrario, la búsqueda web no surtirá efecto.

Acerca de la versión de la herramienta: El sufijo de fecha en type (por ejemplo, web_search_20250305) está determinado por la versión del cliente oficial de Anthropic, y un cliente más reciente puede enviar una versión con fecha diferente. Model Studio identifica la herramienta por su categoría y no valida el sufijo de fecha, por lo que no necesita fijar type a una versión específica. Simplemente pase el valor que su cliente envía realmente.

Modelos compatibles: series Max, Flash y de código abierto de Qwen3.8 (excluyendo Omni); series Max, Plus y Flash de Qwen3.7; series Qwen3.6-Plus y Qwen3.6-Flash; series Qwen3.5-Plus y Qwen3.5-Flash; deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731, deepseek-v4.1-flash-1017; glm-5.2; kimi-k3.

# Import dependencies and create the client...
message = client.messages.create(
    model="qwen3.8-max",
    max_tokens=2048,
    # Pass the client identifier
    system=[{"type": "text", "text": "x-anthropic-billing-header: cc_entrypoint=cli;"}],
    messages=[{"role": "user", "content": "What will the weather in Hangzhou be like tomorrow?"}],
    tools=[
        {
            # The date suffix depends on the client version. The value below is the one current Claude Code sends.
            "type": "web_search_20250305",
            "name": "web_search",
            # Optional. Maximum number of searches per request.
            "max_uses": 8
        }
    ]
)

El proceso de recuperación se devuelve como bloques de contenido server_tool_use (solicitud de búsqueda) y web_search_tool_result (resultados de búsqueda). El número de búsquedas se reporta en usage.server_tool_use.web_search_requests.

Búsqueda web con modelos multimodales

Las series Max, Flash y de código abierto de Qwen3.8, Qwen3.7-Flash, Qwen3.7-Plus, la serie Qwen3.6 y la serie Qwen3.5 (incluyendo qwen3.5-plus, qwen3.5-flash, la serie qwen3.5-omni y los modelos de código abierto de Qwen) aceptan entradas multimodales (imágenes, video) y son modelos multimodales.

La compatibilidad con la estrategia de búsqueda varía según la serie: la serie qwen3.5-omni solo admite la estrategia agent; qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-2.4t-a95b y qwen3.8-27b no admiten la estrategia agent en la API multimodal (utilice la opción predeterminada turbo o max); para ejecutar Qwen3.8 con recuperación al estilo de agente, utilice Búsqueda web con la API de Responses; otros modelos listados en esta sección admiten las estrategias turbo, max y agent. Llame a estos modelos a través de la API multimodal (el endpoint multimodal-generation): utilice MultiModalConversation tanto en Python como en Java, no Generation (el endpoint text-generation), que es para modelos de solo texto. Para conocer los conceptos básicos sobre cómo llamar a modelos multimodales, consulte los temas Razonamiento visual y Comprensión de imágenes y videos.

Llamar a los modelos multimodales anteriores con Generation (el endpoint text-generation) devuelve 400 url error, please check url. Utilice MultiModalConversation (el endpoint multimodal-generation) en su lugar. En el SDK de Java, MultiModalConversationParam proporciona enableSearch(true) para habilitar la búsqueda web, pero no ofrece un método searchOptions(). Inyecte la estrategia de búsqueda y otras opciones mediante el método genérico parameter("search_options", ...). En Python, MultiModalConversation.call acepta search_options directamente. La búsqueda web en modelos multimodales requiere llamadas en streaming (use streamCall en Java, o establezca stream=True en Python); de lo contrario, la solicitud devuelve un error Non-streaming mode does not support Web Search.

import os
import dashscope
from dashscope import MultiModalConversation
# The following uses the Singapore region. Replace {WorkspaceId} with your actual workspace ID; the configuration differs by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
responses = MultiModalConversation.call(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # Use a multimodal model that supports web search.
    model="qwen3.5-plus",
    messages=[{"role": "user", "content": [{"text": "What is the weather in Hangzhou today?"}]}],
    # The multimodal API accepts enable_search and search_options directly.
    enable_search=True,
    search_options={
        # The qwen3.5-omni series requires agent. On the multimodal API the Qwen3.8 series does not support agent; keep the default.
        "search_strategy": "agent",
        "enable_source": True,
    },
    # Streaming is required when web search is enabled for multimodal models.
    stream=True,
    incremental_output=True,
)
for response in responses:
    print(response.output.choices[0].message.content)
// dashscope SDK version >= 2.19.0
import java.util.Arrays;
import java.util.Collections;
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.aigc.generation.SearchOptions;
import com.alibaba.dashscope.common.MultiModalMessage;
import com.alibaba.dashscope.common.Role;
import com.alibaba.dashscope.utils.Constants;

public class Main {
    // The following uses the Singapore region. Replace {WorkspaceId} with your actual workspace ID; the configuration differs by region.
    static { Constants.baseHttpApiUrl = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"; }
    public static void main(String[] args) throws Exception {
        MultiModalConversation conv = new MultiModalConversation();
        MultiModalMessage userMsg = MultiModalMessage.builder()
                .role(Role.USER.getValue())
                .content(Arrays.asList(Collections.singletonMap("text", "What is the weather in Hangzhou today?")))
                .build();
        SearchOptions searchOptions = SearchOptions.builder()
                // For multimodal models, the search strategy must be set to agent.
                .searchStrategy("agent")
                .enableSource(true)
                .build();
        MultiModalConversationParam param = MultiModalConversationParam.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                // Use a multimodal model that supports web search.
                .model("qwen3.5-plus")
                .messages(Arrays.asList(userMsg))
                // Native method: enable web search.
                .enableSearch(true)
                // MultiModalConversationParam does not provide a searchOptions() method; inject search_options via the generic parameter() method.
                .parameter("search_options", searchOptions)
                .incrementalOutput(true)
                .build();
        // Streaming is required when web search is enabled for multimodal models.
        Flowable<MultiModalConversationResult> result = conv.streamCall(param);
        result.blockingForEach(message ->
                System.out.print(message.getOutput().getChoices().get(0).getMessage().getContent()));
    }
}

Modelos admitidos

Los siguientes modelos admiten la búsqueda web. Los modelos con entrada multimodal (la serie Qwen3.8, Qwen3.7-Flash/Plus, la serie Qwen3.6, la serie Qwen3.5 y los modelos de código abierto de Qwen) deben llamarse a través de la API multimodal. Consulte Búsqueda web con modelos multimodales.

Singapore

  • Qwen
    • Serie Qwen3.8: qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-2.4t-a95b, qwen3.8-27b (search_strategy: agent no es compatible; para la recuperación al estilo de agente, utilice la herramienta web_search a través de la API de Responses)
    • Serie Qwen3.7: qwen3.7-max, qwen3.7-max-preview, qwen3.7-max-2026-05-17 y snapshots posteriores, qwen3.7-plus, qwen3.7-plus-2026-05-26 y snapshots posteriores, qwen3.7-flash, qwen3.7-flash-2026-07-15 y snapshots posteriores
    • Serie Qwen3.6: qwen3.6-plus, qwen3.6-plus-2026-04-02 y snapshots posteriores, qwen3.6-flash, qwen3.6-flash-2026-04-16 y snapshots posteriores, qwen3.6-27b, qwen3.6-35b-a3b
    • Serie Qwen3.5: qwen3.5-plus, qwen3.5-plus-2026-02-15 y snapshots posteriores, qwen3.5-flash, qwen3.5-flash-2026-02-23 y snapshots posteriores, qwen3.5-27b, qwen3.5-35b-a3b, qwen3.5-122b-a10b, qwen3.5-397b-a17b
    • Qwen-Omni: qwen3.8-omni-flash, qwen3.5-omni-plus, qwen3.5-omni-plus-2026-03-15, qwen3.5-omni-flash, qwen3.5-omni-flash-2026-03-15 (la estrategia de búsqueda debe establecerse en agent)
    • Qwen-Omni-Realtime: qwen3.8-omni-flash-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 (la estrategia de búsqueda debe establecerse en agent)
  • Modelos de terceros
    • DeepSeek: deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731, deepseek-v4.1-flash-1017 (la serie deepseek-v4 también admite la Responses API)
    • GLM: glm-5.2 (compatible solo con la Responses API)
    • Kimi: kimi-k3 (compatible solo con la Responses API)

China (Beijing)

  • Qwen
    • Serie Qwen3.8: qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-2.4t-a95b, qwen3.8-27b (search_strategy: agent no es compatible; para la recuperación al estilo de agente, utilice la herramienta web_search a través de la API de Responses)
    • Serie Qwen3.7: qwen3.7-max, qwen3.7-max-2026-05-20 y snapshots posteriores, qwen3.7-plus, qwen3.7-plus-2026-05-26 y snapshots posteriores, qwen3.7-flash, qwen3.7-flash-2026-07-15 y snapshots posteriores
    • Serie Qwen3.6: qwen3.6-plus, qwen3.6-plus-2026-04-02 y snapshots posteriores, qwen3.6-flash, qwen3.6-flash-2026-04-16 y snapshots posteriores, qwen3.6-27b, qwen3.6-35b-a3b
    • Serie Qwen3.5: qwen3.5-plus, qwen3.5-plus-2026-02-15 y snapshots posteriores, qwen3.5-flash, qwen3.5-flash-2026-02-23 y snapshots posteriores, qwen3.5-27b, qwen3.5-35b-a3b, qwen3.5-122b-a10b, qwen3.5-397b-a17b
    • Qwen-Max: qwen-max y snapshots posteriores
    • Qwen-Plus: qwen-plus, qwen-plus-latest, qwen-plus-2025-07-14 y snapshots posteriores
    • Qwen-Flash: qwen-flash, qwen-flash-2025-07-28 y snapshots posteriores
    • Qwen-Omni: qwen3.8-omni-flash, qwen3.5-omni-plus, qwen3.5-omni-plus-2026-03-15, qwen3.5-omni-flash, qwen3.5-omni-flash-2026-03-15 (la estrategia de búsqueda debe establecerse en agent)
    • Qwen-Omni-Realtime: qwen3.8-omni-flash-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 (la estrategia de búsqueda debe establecerse en agent)
    • Juego de roles: qwen-plus-character, qwen-flash-character (la estrategia agent no es compatible)

    Los modelos Qwen-Max, Qwen-Plus y Qwen-Flash lanzados después de julio de 2025 admiten automáticamente la búsqueda web.

  • Modelos de terceros
    • DeepSeek: deepseek-v4-pro, deepseek-v4-pro-0813, deepseek-v4-flash-0731, deepseek-v4.1-flash-1017 (la serie deepseek-v4 también admite la Responses API)
    • GLM: glm-5.2 (compatible solo con la Responses API)
    • Kimi: kimi-k3 (compatible solo con la Responses API)

Global

Los siguientes modelos son compatibles en las regiones de EE. UU. (Virginia), China (Hong Kong), Japan (Tokyo) y Germany (Frankfurt). En China (Hong Kong), Japan (Tokyo) y Germany (Frankfurt), debe llamarlos desde un espacio de trabajo cuyo alcance de implementación de servicio sea Global. Para obtener más información, consulte Regiones y dominios de acceso.

  • DeepSeek: deepseek-v4.1-flash-1017 admite la búsqueda web nativa del modelo y la herramienta integrada web_search en la Responses API y en la API compatible con Anthropic en China (Pekín), Singapur (alcance de implementación International) y EE. UU. (Virginia), Alemania (Fráncfort), Japón (Tokio) y China (Hong Kong) (alcance de implementación Global).

  • Qwen
    • Serie Qwen3.8: qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash
    • Qwen-Omni: qwen3.8-omni-flash (establezca la estrategia de búsqueda de Chat Completions en agent; la Responses API también es compatible)

Inicio rápido

Los siguientes ejemplos muestran cómo consultar información bursátil mediante la búsqueda web.

Compatible con OpenAI

Establezca enable_search=True para habilitar la búsqueda web. Para qwen3.8-omni-flash, establezca también search_options={"search_strategy": "agent"}. Cuando utilice la API de Responses, configure tools=[{"type": "web_search"}] en su lugar. Consulte Búsqueda web con la API de Responses.

El protocolo compatible con OpenAI no admite devolver fuentes de búsqueda en la respuesta.

Python

import os
from openai import OpenAI

client = OpenAI(
    # If the environment variable is not set, provide your Model Studio API key directly, for example: api_key="sk-xxx"
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
    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": {
            # Specify the web search strategy. Only 'agent' is supported.
            "search_strategy": "agent"
        }
    }
)
print(completion.choices[0].message.content)
Respuesta de ejemplo
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.

Node.js

import OpenAI from "openai";

const openai = new OpenAI({
    apiKey: process.env.DASHSCOPE_API_KEY,
    // The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    const completion = await openai.chat.completions.create({
        model: "qwen-plus",
        messages: [
            { role: "user", content: "What is the stock price of Alibaba?" }
        ],
        enable_search: true,
        search_options: {
            // Specify the web search strategy. Only 'agent' is supported.
            search_strategy: "agent"
        }
    });
    console.log(completion.choices[0].message.content);
}

main();
Respuesta de ejemplo
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.

curl

# The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/chat/completions \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus",
    "messages": [
        {
            "role": "user",
            "content": "What is the stock price of Alibaba?"
        }
    ],
    "enable_search": true,
    "search_options": {
        "search_strategy": "agent"
    }
}'

DashScope

El protocolo DashScope admite establecer enable_source en true para incluir fuentes de búsqueda en la respuesta.

Python

import os
import dashscope
# The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"

response = dashscope.Generation.call(
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    model="qwen-plus",
    messages=[{"role": "user", "content": "Alibaba stock price"}],
    enable_search=True,
    search_options={
        # The web search strategy. Only 'agent' is currently supported.
        "search_strategy": "agent",
        "enable_source": True # Specifies whether to return search sources.
    },
    result_format="message",
)
print("="*20 + "search results" + "="*20)
for web in response.output.search_info["search_results"]:
    print(f"[{web['index']}]: [{web['title']}]({web['url']})")
print("="*20 + "response content" + "="*20)
print(response.output.choices[0].message.content)
Respuesta de ejemplo
====================search results====================
[1]: [Alibaba(BABA) Stock Price_Quote_Chart - East Money](https://wap.eastmoney.com/quote/stock/106.BABA.html)
[2]: [Alibaba(BABA)_US Stock Quote_Today's Price & Chart_Sina Finance](https://gu.sina.cn/quotes/us/BABA)
[3]: [Alibaba(BABA) Stock Latest Price, Real-time Chart, Price Analysis & Prediction](https://cn.investing.com/equities/alibaba)
[4]: [Alibaba-W (9988.HK) Stock Price, News, Quote & History - Yahoo Finance](https://hk.finance.yahoo.com/quote/9988.HK/)
[5]: [Alibaba(BABA) Stock Price_Quote_Discussion - Xueqiu](https://xueqiu.com/S/BABA)
[6]: [Alibaba(BABA) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Moomoo](https://www.moomoo.com/hans/stock/BABA-US)
[7]: [Alibaba Group Holding Limited (BABA) Stock Price, News, Quote ...](https://finance.yahoo.com/quote/BABA/)
[8]: [Alibaba - Tencent Securities](https://gu.qq.com/usBABA.N)
[9]: [W(09988) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Alibaba - Moomoo](https://www.moomoo.com/hans/stock/09988-HK)
====================response content====================
According to the latest market data, Alibaba's stock price information is as follows:

*   :
    *   Today's opening price: 160.98 USD
    *   Yesterday's closing price: 160.80 USD
    *   Today's high: 161.19 USD
    *   Today's low: 156.20 USD

*   :
    *   Latest quote is approximately: 158.00 - 158.10 HKD
    *   Today's opening price: 156.50 HKD
    *   Previous trading day's closing price: 162.00 HKD
    *   Today's trading range: 156.30 - 158.40 HKD

Java

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.aigc.generation.SearchOptions;
import com.alibaba.dashscope.common.Message;
import com.alibaba.dashscope.utils.Constants;
import com.alibaba.dashscope.common.Role;
import java.util.Arrays;

public class Main {
    // The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
    static {Constants.baseHttpApiUrl="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1";}
    public static void main(String[] args) {
        Generation gen = new Generation();
        Message userMsg = Message.builder()
                .role(Role.USER.getValue())
                .content("Alibaba's stock price")
                .build();

        SearchOptions searchOptions = SearchOptions.builder()
                // Specify the web search strategy. Only 'agent' is supported.
                .searchStrategy("agent")
                // Specifies whether to return search sources.
                .enableSource(true)
                .build();

        GenerationParam param = GenerationParam.builder()
                .apiKey(System.getenv("DASHSCOPE_API_KEY"))
                .model("qwen3.7-max")
                .messages(Arrays.asList(userMsg))
                .resultFormat(GenerationParam.ResultFormat.MESSAGE)
                .enableSearch(true)
                .searchOptions(searchOptions)
                .build();
        try {
            GenerationResult result = gen.call(param);
            System.out.println("=".repeat(20)+"search results"+"=".repeat(20));
            System.out.println(result.getOutput().getSearchInfo().getSearchResults());
            System.out.println("=".repeat(20)+"response content"+"=".repeat(20));
            System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
        } catch (Exception e) {
            System.out.println("Error: " + e.getMessage());
        }
    }
}
Respuesta de ejemplo
====================search results====================
[SearchInfo.SearchResult(siteName=null, icon=null, index=1, title=Alibaba(BABA) Stock Price_Quote_Chart - East Money, url=https://wap.eastmoney.com/quote/stock/106.BABA.html), SearchInfo.SearchResult(siteName=null, icon=null, index=2, title=Alibaba(BABA)_US Stock Quote_Today's Price & Chart_Sina Finance, url=https://gu.sina.cn/quotes/us/BABA), SearchInfo.SearchResult(siteName=null, icon=null, index=3, title=Alibaba(BABA) Stock Latest Price, Real-time Chart, Price Analysis & Prediction, url=https://cn.investing.com/equities/alibaba), SearchInfo.SearchResult(siteName=null, icon=null, index=4, title=Alibaba(BABA) Stock Price_Quote_Discussion - Xueqiu, url=https://xueqiu.com/S/BABA), SearchInfo.SearchResult(siteName=null, icon=null, index=5, title=Alibaba-W (9988.HK) Stock Price, News, Quote & History - Yahoo Finance, url=https://hk.finance.yahoo.com/quote/9988.HK/), SearchInfo.SearchResult(siteName=null, icon=null, index=6, title=Alibaba(BABA) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Moomoo, url=https://www.moomoo.com/hans/stock/BABA-US), SearchInfo.SearchResult(siteName=null, icon=null, index=7, title=Alibaba Group Holding Limited (BABA) - Yahoo Finance, url=https://finance.yahoo.com/quote/BABA/), SearchInfo.SearchResult(siteName=null, icon=null, index=8, title=Alibaba - Tencent Securities, url=https://gu.qq.com/usBABA.N), SearchInfo.SearchResult(siteName=null, icon=null, index=9, title=W(09988) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Alibaba - Moomoo, url=https://www.moomoo.com/hans/stock/09988-HK)]
====================response content====================
According to the latest market data, the stock price for Alibaba is as follows:

*   : The latest price is approximately .
*   : The latest price is approximately .

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

curl

# The following configuration is for the Asia Pacific SE 1 (Singapore) region. Replace {WorkspaceId} with your workspace ID. Configurations differ by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen-plus",
    "input":{
        "messages":[
            {
                "role": "user",
                "content": "Alibaba's stock price"
            }
        ]
    },
    "parameters": {
        "enable_search": true,
        "search_options": {
            "search_strategy": "agent",
            "enable_source": true
        },
        "result_format": "message"
    }
}'
Respuesta de ejemplo
{
  "output": {
    "choices": [
      {
        "finish_reason": "stop",
        "message": {
          "content": "Based on the latest market data, Alibaba's stock price differs because it is listed on both US and Hong Kong stock exchanges:\n\n*   : The latest price is approximately .\n    *   Today's opening price: 160.98 USD\n    *   Today's price range: 156.20 - 161.19 USD\n\n*   : The latest price is approximately .\n    *   Today's opening price: 156.50 HKD\n    *   Today's price range: 156.30 - 158.40 HKD\n\nPlease note that stock prices fluctuate in real time, and this information is for reference only.",
          "role": "assistant"
        }
      }
    ],
    "search_info": {
      "search_results": [
        {
          "index": 1,
          "title": "Alibaba(BABA) Stock Price_Quote_Chart - East Money",
          "url": "https://wap.eastmoney.com/quote/stock/106.BABA.html"
        },
        {
          "index": 2,
          "title": "Alibaba(BABA)_US Stock Quote_Today's Price & Chart_Sina Finance",
          "url": "https://gu.sina.cn/quotes/us/BABA"
        },
        {
          "index": 3,
          "title": "Alibaba-W (9988.HK) Stock Price, News, Quote & History - Yahoo Finance",
          "url": "https://hk.finance.yahoo.com/quote/9988.HK/"
        },
        {
          "index": 4,
          "title": "Alibaba(BABA) Stock Latest Price, Real-time Chart, Price Analysis & Prediction",
          "url": "https://cn.investing.com/equities/alibaba"
        },
        {
          "index": 5,
          "title": "Alibaba(BABA) Stock Price_Quote_Discussion - Xueqiu",
          "url": "https://xueqiu.com/S/BABA"
        },
        {
          "index": 6,
          "title": "Alibaba(BABA) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Moomoo",
          "url": "https://www.moomoo.com/hans/stock/BABA-US"
        },
        {
          "index": 7,
          "title": "W(09988) Stock Price, Market Cap, Real-time Quote, Chart, Financials - Alibaba - Moomoo",
          "url": "https://www.moomoo.com/hans/stock/09988-HK"
        },
        {
          "index": 8,
          "title": "Alibaba Group Holding Limited (BABA) Stock Price, News, Quote & History",
          "url": "https://hk.finance.yahoo.com/quote/BABA/"
        },
        {
          "index": 9,
          "title": "Alibaba - Tencent Securities",
          "url": "https://gu.qq.com/usBABA.N"
        }
      ]
    }
  },
  "usage": {
    "input_tokens": 2004,
    "output_tokens": 203,
    "plugins": {
      "search": {
        "count": 1,
        "strategy": "agent"
      }
    },
    "prompt_tokens_details": {
      "cached_tokens": 0
    },
    "total_tokens": 2207
  },
  "request_id": "45c231d2-811e-4e04-a361-f2c1909f1dd9"
}

Búsqueda web con Responses API

Puede habilitar la búsqueda web agregando la herramienta web_search al arreglo tools del parámetro tools.

Esta función solo es compatible con los siguientes modelos: las series Max, Flash y de código abierto de Qwen3.8, y qwen3.8-omni-flash; los modelos de las series Qwen3.7 y Qwen3.5 (incluidos los modelos de código abierto, pero no los modelos Omni), las series Qwen3.6-Plus y Qwen3.6-Flash, y qwen3.6-35b-a3b; deepseek-v4-flash-0731, deepseek-v4.1-flash-1017, deepseek-v4-pro, deepseek-v4-pro-0813; glm-5.2; y kimi-k3.

Cuando se habilita mediante la herramienta web_search, el modelo realiza una recuperación multivuelta al estilo de agente: puede llamar de forma autónoma a web_search (y opcionalmente a web_extractor / code_interpreter) varias veces dentro de una sola respuesta.

qwen3.8-max, qwen3.8-max-0902, qwen3.8-flash, qwen3.8-2.4t-a95b y qwen3.8-27b no admiten el valor agent de search_strategy en la API de Chat Completions. Para utilizar la recuperación multivuelta al estilo de agente con Qwen3.8, use la herramienta web_search de la API de Responses documentada en esta sección.

La API de Responses no utiliza el parámetro search_strategy. Si se activa la búsqueda web —y si el modelo realiza múltiples rondas de búsqueda— depende exclusivamente de adjuntar la herramienta web_search y de las propias decisiones del modelo. Un valor search_options.search_strategy pasado a la API de Responses se ignora silenciosamente y no activa una búsqueda.

Para los modelos que admiten estas herramientas, habilite web_search, web_extractor y code_interpreter conjuntamente. Para qwen3.8-omni-flash, la única herramienta integrada compatible es web_search.

Para obtener instrucciones de uso, ejemplos de código y guías de migración para la API de Responses, consulte Compatible con OpenAI - Responses.

from openai import OpenAI
import os

client = OpenAI(
    # If you have not configured an environment variable, replace the following line with your Model Studio API key: api_key="sk-xxx",
    api_key=os.getenv("DASHSCOPE_API_KEY"),
    # This configuration is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. Configurations vary by region.
    base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)

response = client.responses.create(
    model="qwen3.8-max",
    input="What is the weather in Singapore tomorrow?",
    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 trace" + "="*20)
# Agent-style multi-turn retrieval: the model may call web_search multiple times
for item in response.output:
    t = getattr(item, "type", None)
    if t == "web_search_call":
        q = getattr(getattr(item, "action", None), "query", "")
        print(f"[web_search_call] query={q}")
    elif t == "web_extractor_call":
        print(f"[web_extractor_call]")

print("="*20 + "Source citations" + "="*20)
for item in response.output:
    if getattr(item, "type", None) == "message":
        for part in item.content:
            for ann in getattr(part, "annotations", []) or []:
                if getattr(ann, "type", None) == "url_citation":
                    print(f"- {ann.title}: {ann.url}")

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)}")
import OpenAI from "openai";

const openai = new OpenAI({
    // If you have not configured an environment variable, replace the following line with your Model Studio API key: apiKey: "sk-xxx",
    apiKey: process.env.DASHSCOPE_API_KEY,
    // This configuration is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. Configurations vary by region.
    baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});

async function main() {
    const response = await openai.responses.create({
        model: "qwen3.8-max",
        input: "What is the weather in Singapore tomorrow?",
        tools: [
            { type: "web_search" },
            { type: "web_extractor" },
            { type: "code_interpreter" }
        ],
        enable_thinking: true
    });

    console.log("====================Response content====================");
    console.log(response.output_text);

    console.log("====================Tool call trace====================");
    // Agent-style multi-turn retrieval: the model may call web_search multiple times
    for (const item of response.output) {
        if (item.type === "web_search_call") {
            console.log(`[web_search_call] query=${item.action?.query || ""}`);
        } else if (item.type === "web_extractor_call") {
            console.log("[web_extractor_call]");
        }
    }

    console.log("====================Source citations====================");
    for (const item of response.output) {
        if (item.type === "message") {
            for (const part of item.content || []) {
                for (const ann of part.annotations || []) {
                    if (ann.type === "url_citation") {
                        console.log(`- ${ann.title}: ${ann.url}`);
                    }
                }
            }
        }
    }

    console.log("====================Tool call count====================");
    console.log(`Web search count: ${response.usage?.x_tools?.web_search?.count || 0}`);
}

main();
# This configuration is for the Singapore region. Replace {WorkspaceId} with your actual workspace ID. Configurations vary by region.
curl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
    "model": "qwen3.8-max",
    "input": "What is the weather in Singapore tomorrow?",
    "tools": [
        {"type": "web_search"},
        {"type": "web_extractor"},
        {"type": "code_interpreter"}
    ],
    "enable_thinking": true
}'

Ejemplo de salida de respuesta (recuperación multivuelta al estilo de agente)

Para una consulta como "¿Cuál es el clima en Singapur mañana?", el modelo realiza múltiples rondas de recuperación dentro de una sola respuesta. El arreglo output contiene múltiples elementos web_search_call (y opcionalmente web_extractor_call) intercalados con reasoning y el message final:

{
    "output": [
        { "type": "reasoning", "..." : "..." },
        { "type": "web_search_call", "action": { "query": "Singapore weather tomorrow" } },
        { "type": "reasoning", "..." : "..." },
        { "type": "web_extractor_call", "..." : "..." },
        { "type": "web_search_call", "action": { "query": "Singapore 7-day forecast" } },
        { "type": "reasoning", "..." : "..." },
        { "type": "message", "content": [ /* final answer with url_citation annotations */ ] }
    ],
    "usage": {
        "x_tools": { "web_search": { "count": 2 } }
    }
}

La presencia de múltiples elementos web_search_call y x_tools.web_search.count > 1 confirma una recuperación multivuelta al estilo de agente: el modelo decidió por sí mismo refinar la consulta y buscar de nuevo.

Obtener fuentes de búsqueda

Después de que se ejecuta una búsqueda web, las fuentes de búsqueda se devuelven en la respuesta. Aparecen en el elemento cuyo type es web_search_call dentro del arreglo output, y su campo action.sources es la lista de enlaces de origen. Puede extraerlos del response en el ejemplo anterior de la siguiente manera:

La API de Responses no admite los parámetros enable_source, enable_citation ni citation_format, y no inserta marcadores de cita [1] en el contenido de la respuesta. Para utilizar marcadores de cita, use la API de DashScope.

# Extract search sources from the response above
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}")

Facturación

Los cargos por búsqueda web constan de dos componentes:

  • Tarifas de llamada al modelo: La función de búsqueda web agrega contenido web recuperado al prompt, lo que aumenta el número de tokens de entrada. Estos tokens se facturan a la tarifa estándar del modelo. Para obtener detalles sobre los precios, consulte la consola de Model Studio. Cuando utiliza la API de Responses o el método compatible con Anthropic, la herramienta de búsqueda web se factura a la misma tarifa que la política de agente.

  • tarifas de política de búsqueda:

    • política de agente:

      • La tarifa por cada 1,000 llamadas es la siguiente:

        • Para las regiones de China (Beijing), EE. UU. (Virginia), China (Hong Kong), Japón (Tokio) y Alemania (Frankfurt): $0.573411.
        • Para la región de Singapur: $10.00.
    • Política agent_max (Oferta por tiempo limitado):

      Esta política cubre tanto la búsqueda web como la herramienta de extractor web.

      • Tarifa por cada 1,000 llamadas para la herramienta de búsqueda web:

        • Para las regiones de China (Beijing), EE. UU. (Virginia), China (Hong Kong), Japón (Tokio) y Alemania (Frankfurt): $0.573411.
        • Para la región de Singapur: $10.00.
      • La herramienta de extractor web es gratuita por tiempo limitado.

Mensajes de error

Para solucionar errores, consulte Códigos de error.