QwenCloudBRASIL
Tradução de apoio para consulta. Código e identificadores técnicos preservados. Consultar referência original ↗

Extrator de Web

Obter URLs para o contexto

Para tarefas envolvendo cálculos matemáticos ou análise de dados, adicione code_interpreter Ao lado do extrator da web para melhorar a precisão.

Começando.

Chame o extrator através da API Responses para resumir uma página web. Os exemplos abaixo usam web_search e web_extractor com qwen3.8-max em modo de pensar.

Python

```python {15}
import os
from openai import OpenAI

client = OpenAI(
  # If the environment variable is not configured, replace with: api_key="sk-xxx"
  api_key=os.getenv("DASHSCOPE_API_KEY"),
  base_url="https://maas.qwencloudapi.com/compatible-mode/v1"
)

response = client.responses.create(
  model="qwen3.8-max",
  input="Please visit the official QwenCloud documentation, find the code interpreter topic and summarize it",
  tools=[
    {"type": "web_search"},
    {"type": "web_extractor"}
  ],
  extra_body={
    "enable_thinking": True
  }
)

# Uncomment to view intermediate output
# print(response.output)
print("=" * 20 + "Response" + "=" * 20)
print(response.output_text)

# Print tool invocation count
usage = response.usage
print("=" * 20 + "Tool Invocation Count" + "=" * 20)
if hasattr(usage, 'x_tools') and usage.x_tools:
  print(f"Web Extractor invocations: {usage.x_tools.get('web_extractor', {}).get('count', 0)}")
```

Node.js

```javascript {16}
import OpenAI from "openai";
import process from 'process';

const openai = new OpenAI({
  // If the environment variable is not configured, replace with: apiKey: "sk-xxx"
  apiKey: process.env.DASHSCOPE_API_KEY,
  baseURL: "https://maas.qwencloudapi.com/compatible-mode/v1"
});

async function main() {
  const response = await openai.responses.create({
    model: "qwen3.8-max",
    input: "Please visit the official QwenCloud documentation, find the code interpreter topic and summarize it",
    tools: [
      { type: "web_search" },
      { type: "web_extractor" }
    ],
    enable_thinking: true
  });

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

  // Print tool invocation count
  console.log("====================Tool Invocation Count====================");
  if (response.usage && response.usage.x_tools) {
    console.log(`Web Extractor invocations: ${response.usage.x_tools.web_extractor?.count || 0}`);
    console.log(`Web Search invocations: ${response.usage.x_tools.web_search?.count || 0}`);
  }
  // Uncomment to view intermediate output
  // console.log(JSON.stringify(response.output[0], null, 2));
}

main();
```

curl

```bash {9}
curl -X POST https://maas.qwencloudapi.com/compatible-mode/v1/responses \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "Content-Type: application/json" \
-d '{
  "model": "qwen3.8-max",
  "input": "Please visit the official QwenCloud documentation, find the code interpreter topic and summarize it",
  "tools": [
    {"type": "web_search"},
    {"type": "web_extractor"}
  ],
  "enable_thinking": true
}'
```

Estrutura de resposta

A resposta contém o texto gerado pelo modelo e metadados sobre o uso de ferramentas.

Campo Descrição
output_text A resposta final do texto do modelo, baseada no conteúdo extraído da web
output[] Array de itens intermediários, incluindoweb_extractor_call objetos (cada um comgoaleoutput campos mostrando que URL foi obtida e o conteúdo extraído)
usage.x_tools.web_extractor.count Número de invocações do extrator web neste pedido
usage.x_tools.web_search.count Número de invocações de busca na web neste pedido.

Como funciona

  1. Inclua web_extractor (e tipicamente web_search) na tools Uma série de pedidos de API, junto com um alerta que faz referência a um URL ou tópico.
  2. O modelo determina quais páginas buscar, recupera seu conteúdo, e o adiciona ao contexto como tokens de entrada adicionais.
  3. O modelo gera uma resposta baseada no conteúdo recuperado.

Conteúdos extraídos aumentam as entradas e afetam a faturação. Veja [Billing] (#billing) para detalhes.

Quando usar o extrator da web

Cenário Configuração da ferramenta Por quê?
Responda perguntas sobre umURL específico web_extractor(Opcionalmente comweb_search) O modelo busca e lê o conteúdo da página inteira, não apenas um trecho de busca.
Pesquisa a tópico através da web web_search+web_extractor web_search encontra páginas relevantes;web_extractor lê-los na íntegra
Pesquisa rápida de fatos (sem URL específica) web_search Sozinho Os trechos de busca são suficientes, mais baratos e rápidos.

Use web_extractor Quando você precisa do modelo para ler o conteúdo real de uma página - não apenas um resumo de busca-resultado.

O extrator da web suporta quatro APIs. A API Responses fornece o maior controle sobre o comportamento da ferramenta. Use-a para novas integrações.

API Configuração da ferramenta É preciso fazer o fluxo. Observações
API de respostas(recomendado) Adicionarweb_searcheweb_extractortotools Não Expo o status de execução de ferramentas intermediárias.
API de completações de bate-papo Preparar.enable_search: true,search_strategy: "agent_max" Sim Não é permitido fazer streaming.
API DashScope Preparar.enable_search: true,search_strategy: "agent_max" Sim Java SDK não é suportado
Anthropic-compatible Adicionarweb_search(eweb_fetchpara web extractor) paratools Não Alvos clientes antrópicos como Claude Code

Quando se usa qwen3.7-max, set enable_thinking para true.

Responses API

```python
response = client.responses.create(
  model="qwen3.8-max",
  input="Summarize the content at https://example.com/article",
  tools=[
    {"type": "web_search"},
    {"type": "web_extractor"}
  ],
  extra_body={
    "enable_thinking": True
  }
)
```

Chat Completions API

```python
completion = client.chat.completions.create(
  model="qwen3.8-max",
  messages=[{"role": "user", "content": "Summarize the content at https://example.com/article"}],
  extra_body={
    "enable_thinking": True,
    "enable_search": True,
    "search_options": {"search_strategy": "agent_max"}
  },
  stream=True
)
```

DashScope API

```python
from dashscope import Generation

response = Generation.call(
  model="qwen3.8-max",
  messages=[{"role": "user", "content": "Summarize the content at https://example.com/article"}],
  enable_search=True,
  search_options={"search_strategy": "agent_max"},
  enable_thinking=True,
  result_format="message",
  stream=True,
  incremental_output=True
)
```

Anthropic-compatible

 Adicione a ferramenta de busca da web do lado do servidor Anthropic (`name` - Pronto para... `web_fetch`) para o `tools`  parâmetro para ativar o extrator web.  Você também deve adicionar a ferramenta de busca na web (`name` - Pronto para... `web_search`) no mesmo pedido. O ponto final é `https://maas.qwencloudapi.com/apps/anthropic`.

> Este método visa clientes oficiais antrópicos como Claude Code.  Nesses clientes, uma pergunta simples de linguagem natural desencadeia o extrator sem configuração extra.

>  Quando você ligar para a API diretamente com o SDK Antrópico ou mais HTTP, passe o identificador do cliente. `x-anthropic-billing-header: cc_entrypoint=cli;` Em `system`.  Caso contrário, o extrator da web não faz efeito.

>  Sobre a versão da ferramenta, o sufixo da data. `type` (por exemplo `web_fetch_20250910` e `web_search_20250305`) é determinado pela versão do cliente oficial Antrópico, e um cliente mais novo pode enviar uma versão diferente datada. QwenCloud  Identifica ambas as ferramentas por categoria e não valida o sufixo de data, então você não precisa afixar `type` para uma versão específica.  Basta passar o valor que seu cliente realmente envia.

> Se você adicionar a ferramenta de busca da web sem a ferramenta de busca da web, a solicitação falha com o `InvalidParameter`  Erro: `The web_extractor tool must be executed with web_search tool.`

```python
# Import dependencies and create the client...
message = client.messages.create(
    model="qwen3.8-max",
    max_tokens=4096,
    # Pass the client identifier
    system=[{"type": "text", "text": "x-anthropic-billing-header: cc_entrypoint=cli;"}],
    messages=[{"role": "user", "content": "Read the QwenCloud code interpreter documentation and summarize the key points."}],
    tools=[
        # Enabling the web extractor requires the web search tool as well
        # The date suffix in type depends on the client version. The values below are the ones current Claude Code sends.
        {"type": "web_search_20250305", "name": "web_search", "max_uses": 5},
        {"type": "web_fetch_20250910", "name": "web_fetch", "max_uses": 5}
    ]
)
```

O processo de extração é devolvido como `server_tool_use` (Pedir pedido) e `web_fetch_tool_result`  Blocos de conteúdo. O número de buscas é relatado em `usage.server_tool_use.web_fetch_requests`.

Transmita eventos de extração de rede

Para conceitos de streaming (protocolo SSE, como habilitar streaming e uso de fichas), veja Streaming output. Esta seção cobre apenas os tipos de eventos específicos para web extrator.

A extração da internet pode levar tempo. Use streaming para receber passos de raciocínio, chamadas de ferramentas e texto de resposta como eles acontecem. A API Responses expõe o status de execução intermediária para cada chamada de ferramenta, tornando-a a melhor escolha para streaming.

Ao transmitir com a API Responses, os seguintes tipos de eventos indicam progresso através do oleoduto de extração e geração:

Tipo de evento Descrição
response.reasoning_text.delta Texto de raciocínio incremental do processo de pensamento do modelo
response.output_item.done Uma chamada de ferramentas foi concluída. Cheque.item.typeparaweb_extractor_callpara obter o resultado da extração
response.output_text.delta Texto de resposta incremental
response.completed A resposta está completa. OusageO campo contém a invocação de ferramentas.

Para lidar com o web_extractor_call Evento em um fluxo, verifique o tipo de evento e leia seu goal e output Campos:

for chunk in stream:
  if chunk.type == 'response.output_item.done':
    if hasattr(chunk, 'item') and chunk.item.type == 'web_extractor_call':
      print(f"Fetched: {chunk.item.goal}")
      print(f"Content: {chunk.item.output}")
  elif chunk.type == 'response.output_text.delta':
    print(chunk.delta, end='', flush=True)
  elif chunk.type == 'response.completed':
    usage = chunk.response.usage
    if hasattr(usage, 'x_tools') and usage.x_tools:
      print(f"Web Extractor invocations: {usage.x_tools.get('web_extractor', {}).get('count', 0)}")

Modelos apoiados.

Modelos recomendados

**Responde API **

**Chat Completions API / DashScope

Outros modelos

Os seguintes modelos também suportam esta ferramenta, mas podem não funcionar tão bem quanto os modelos recomendados. Só suportada através da API Responses.

Limitações

Erro ao lidar com isso.

Quando a extração falha, o modelo não levanta um erro. Em vez disso, o web_extractor_call O item na saída de resposta retorna conteúdo vazio ou parcial, e o modelo gera sua resposta com base em qualquer contexto disponível.

Cenários comuns de falha:

Cenário Comportamento
URL é inalcançável (404, 500, falha de DNS) Extração retorna conteúdo vazio; modelo responde usando outro contexto disponível
Página de carga de tempo Conteúdo parcial ou vazio retornado
Conteúdo não-HTML (PDF, imagens) O conteúdo pode não ser extraído, o modelo se resume a outras ferramentas ou conhecimento geral.

Para verificar se a extração foi bem sucedida, inspecione o web_extractor_call itens em response.output Ou verificar. usage.x_tools.web_extractor.count para o número de invocações bem sucedidas.

Contagem

Os custos do extrator de rede têm dois componentes:

Os preços listados abaixo são os preços de lista. Para promoções atuais e preços com desconto, visite o [Modelo Marketplace] (https://www.qwencloud.com/models).

Componente Detalhes
Custo do modelo Conteúdos extraídos da web são adicionados ao prompt, o que aumenta os sinais de entrada. Cobrado pelo preço padrão do modelo. Veja.-Preços.Por preços.
Taxa de busca na internet US$ 10.00 per 1,000 search invocations. Web extractor typically triggers web search internally.
Taxa de extrator de rede Livre por um tempo limitado.