Os LLMs não acessam diretamente os dados de páginas da web. O web extractor acessa uma URL e extrai seu conteúdo para o modelo.
Uso
Você pode chamar o web extractor de três maneiras. Os parâmetros obrigatórios variam conforme o método:
OpenAI-compatible - Responses API
Adicione web_search e web_extractor ao parâmetro tools.
Ao usarqwen3-max-2026-01-23, definaenable_thinkingcomotrue.
Para obter maior precisão em problemas matemáticos ou de análise de dados, ative também a ferramenta code_interpreter .
# Import dependencies and create a client...
response = client.responses.create(
model="qwen3.7-max",
input="Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content",
tools=[
# To enable web extraction, also enable the web search tool
{"type": "web_search"},
{"type": "web_extractor"},
{"type": "code_interpreter"}
],
extra_body={
# Thinking mode must be enabled
"enable_thinking": True
}
)
print(response.output_text)
OpenAI-compatible - Chat Completions API
Defina enable_search como true e search_strategy como agent_max. Defina também enable_thinking como true.
A saída sem streaming não é compatível.
# Import dependencies and create a client...
completion = client.chat.completions.create(
model="qwen3.7-max",
messages=[{"role": "user", "content": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content"}],
extra_body={
"enable_thinking": True,
"enable_search": True,
"search_options": {"search_strategy": "agent_max"}
},
stream=True
)
DashScope
Defina enable_search como true e search_strategy como agent_max. Defina também enable_thinking como true.
A saída sem streaming não é compatível.
from dashscope import Generation
response = Generation.call(
model="qwen3.7-max",
messages=[{"role": "user", "content": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content"}],
enable_search=True,
search_options={"search_strategy": "agent_max"},
enable_thinking=True,
result_format="message",
stream=True,
incremental_output=True
)
Modelos compatíveis
Modelos recomendados
Responses API
Qwen-Max: qwen3.8-max-preview (apenas Token Plan), série Qwen3.7-Max
Qwen-Plus: série Qwen3.7-Plus, série Qwen3.6-Plus, série Qwen3.5-Plus
Chat Completions API / DashScope
Qwen-Max (modo de raciocínio): série Qwen3-Max
Qwen-Plus: série Qwen3.6-Plus, série Qwen3.5-Plus
Outros modelos
Os modelos abaixo também são compatíveis com esta ferramenta, mas podem não apresentar o mesmo desempenho dos modelos recomendados.
Qwen-Flash: série Qwen3.6-Flash, série Qwen3.5-Flash
Série open-source Qwen3.6 (exceto qwen3.6-27b)
Série open-source Qwen3.5
Primeiros passos
Este exemplo chama o web extractor pela Responses API para resumir um documento técnico.
Você deve obter uma chave de API e configurá-la como variável de ambiente .
import os
from openai import OpenAI
client = OpenAI(
# If the environment variable is not configured, replace the next line with api_key="sk-xxx", using your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Singapore region. Replace {WorkspaceId} with your actual Workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
response = client.responses.create(
model="qwen3.7-max",
input="Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content",
tools=[
{
"type": "web_search"
},
{
"type": "web_extractor"
},
{
"type": "code_interpreter"
}
],
extra_body = {
"enable_thinking": True
}
)
# Uncomment the following line to view intermediate process outputs
# print(response.output)
print("="*20+"Response Content"+"="*20)
print(response.output_text)
# Print the number of tool calls
usage = response.usage
print("="*20+"Tool Call Count"+"="*20)
if hasattr(usage, 'x_tools') and usage.x_tools:
print(f"\nWeb extraction count: {usage.x_tools.get('web_extractor', {}).get('count', 0)}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// If the environment variable is not configured, replace the next line with apiKey: "sk-xxx", using your Model Studio API key.
apiKey: process.env.DASHSCOPE_API_KEY,
// Singapore region. Replace {WorkspaceId} with your actual Workspace ID. URLs 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.7-max",
input: "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content",
tools: [
{ type: "web_search" },
{ type: "web_extractor" },
{ type: "code_interpreter" }
],
enable_thinking: true
});
console.log("====================Response Content====================");
console.log(response.output_text);
// Print the number of tool calls
console.log("====================Tool Call Count====================");
if (response.usage && response.usage.x_tools) {
console.log(`Web extraction count: ${response.usage.x_tools.web_extractor?.count || 0}`);
console.log(`Web search count: ${response.usage.x_tools.web_search?.count || 0}`);
}
// Uncomment the following line to view intermediate process outputs
// console.log(JSON.stringify(response.output[0], null, 2));
}
main();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.7-max",
"input": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content",
"tools": [
{"type": "web_search"},
{"type": "web_extractor"},
{"type": "code_interpreter"}
],
"enable_thinking": true
}'Exemplo de saída:
====================Response Content====================
Based on the official Alibaba Cloud Model Studio documentation, I have summarized the core content of the **code interpreter** feature for you:
## 1. Feature Positioning
...
> **Document Source**: Alibaba Cloud Model Studio official documentation - [Qwen Code Interpreter](https://www.alibabacloud.com/help/en/model-studio/qwen-code-interpreter) and [Assistant API Code Interpreter](https://www.alibabacloud.com/help/en/model-studio/code-interpreter) (Updated: December 2025)
====================Tool Call Count====================
Web extraction count: 1
Saída com streaming
A extração da web pode ser demorada. Ative a saída com streaming para receber resultados intermediários em tempo real.
Use a Responses API para recuperar o status intermediário da execução das ferramentas.
OpenAI-compatible - Responses API
import os
from openai import OpenAI
client = OpenAI(
# If the environment variable is not configured, replace the next line with api_key="sk-xxx" (not recommended), using your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Singapore region. Replace {WorkspaceId} with your actual Workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
stream = client.responses.create(
model="qwen3.7-max",
input="Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content",
tools=[
{"type": "web_search"},
{"type": "web_extractor"},
{"type": "code_interpreter"}
],
stream=True,
extra_body={"enable_thinking": True}
)
reasoning_started = False
output_started = False
for chunk in stream:
# Print the thinking process
if chunk.type == 'response.reasoning_summary_text.delta':
if not reasoning_started:
print("="*20 + "Thinking Process" + "="*20)
reasoning_started = True
print(chunk.delta, end='', flush=True)
# Print when tool call is complete
elif chunk.type == 'response.output_item.done':
if hasattr(chunk, 'item') and hasattr(chunk.item, 'type'):
if chunk.item.type == 'web_extractor_call':
print("\n" + "="*20 + "Tool Call" + "="*20)
print(chunk.item.goal)
print(chunk.item.output)
elif chunk.item.type == 'reasoning':
reasoning_started = False
# Print the response content
elif chunk.type == 'response.output_text.delta':
if not output_started:
print("\n" + "="*20 + "Response Content" + "="*20)
output_started = True
print(chunk.delta, end='', flush=True)
# When the response is complete, print the number of tool calls
elif chunk.type == 'response.completed':
print("\n" + "="*20 + "Tool Call Count" + "="*20)
usage = chunk.response.usage
if hasattr(usage, 'x_tools') and usage.x_tools:
print(f"Web extraction count: {usage.x_tools.get('web_extractor', {}).get('count', 0)}")
print(f"Web search count: {usage.x_tools.get('web_search', {}).get('count', 0)}")import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// If the environment variable is not configured, replace the next line with apiKey: "sk-xxx", using your Model Studio API key.
apiKey: process.env.DASHSCOPE_API_KEY,
// Singapore region. Replace {WorkspaceId} with your actual Workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const stream = await openai.responses.create({
model: "qwen3.7-max",
input: "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content",
tools: [
{ type: "web_search" },
{ type: "web_extractor" },
{ type: "code_interpreter" }
],
stream: true,
enable_thinking: true
});
let reasoningStarted = false;
let outputStarted = false;
for await (const chunk of stream) {
// Print the thinking process
if (chunk.type === 'response.reasoning_summary_text.delta') {
if (!reasoningStarted) {
console.log("====================Thinking Process====================");
reasoningStarted = true;
}
process.stdout.write(chunk.delta);
}
// Print when tool call is complete
else if (chunk.type === 'response.output_item.done') {
if (chunk.item && chunk.item.type === 'web_extractor_call') {
console.log("\n" + "====================Tool Call====================");
console.log(chunk.item.goal);
console.log(chunk.item.output);
} else if (chunk.item && chunk.item.type === 'reasoning') {
reasoningStarted = false;
}
}
// Print the response content
else if (chunk.type === 'response.output_text.delta') {
if (!outputStarted) {
console.log("\n" + "====================Response Content====================");
outputStarted = true;
}
process.stdout.write(chunk.delta);
}
// When the response is complete, print the number of tool calls
else if (chunk.type === 'response.completed') {
console.log("\n" + "====================Tool Call Count====================");
const usage = chunk.response.usage;
if (usage && usage.x_tools) {
console.log(`Web extraction count: ${usage.x_tools.web_extractor?.count || 0}`);
console.log(`Web search count: ${usage.x_tools.web_search?.count || 0}`);
}
}
}
}
main();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.7-max",
"input": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content",
"tools": [
{"type": "web_search"},
{"type": "web_extractor"},
{"type": "code_interpreter"}
],
"enable_thinking": true,
"stream": true
}'OpenAI-compatible - Chat Completions API
import os
from openai import OpenAI
client = OpenAI(
# If the environment variable is not configured, replace the next line with api_key="sk-xxx" (not recommended), using your Model Studio API key.
api_key=os.getenv("DASHSCOPE_API_KEY"),
# Singapore region. Replace {WorkspaceId} with your actual Workspace ID. URLs vary by region.
base_url="https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
)
stream = client.chat.completions.create(
model="qwen3.7-max",
messages=[
{"role": "user", "content": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content"}
],
extra_body={
"enable_thinking": True,
"enable_search": True,
"search_options": {"search_strategy": "agent_max"}
},
stream=True
)
reasoning_started = False
output_started = False
for chunk in stream:
if chunk.choices:
delta = chunk.choices[0].delta
# Print the thinking process
if hasattr(delta, 'reasoning_content') and delta.reasoning_content:
if not reasoning_started:
print("="*20 + "Thinking Process" + "="*20)
reasoning_started = True
print(delta.reasoning_content, end='', flush=True)
# Print the response content
if delta.content:
if not output_started:
print("\n" + "="*20 + "Response Content" + "="*20)
output_started = True
print(delta.content, end='', flush=True)import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
// If the environment variable is not configured, replace the next line with apiKey: "sk-xxx", using your Model Studio API key.
apiKey: process.env.DASHSCOPE_API_KEY,
// Singapore region. Replace {WorkspaceId} with your actual Workspace ID. URLs vary by region.
baseURL: "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/compatible-mode/v1"
});
async function main() {
const stream = await openai.chat.completions.create({
model: "qwen3.7-max",
messages: [
{ role: "user", content: "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content" }
],
enable_thinking: true,
enable_search: true,
search_options: { search_strategy: "agent_max" },
stream: true
});
let reasoningStarted = false;
let outputStarted = false;
for await (const chunk of stream) {
if (chunk.choices && chunk.choices.length > 0) {
const delta = chunk.choices[0].delta;
// Print the thinking process
if (delta.reasoning_content) {
if (!reasoningStarted) {
console.log("====================Thinking Process====================");
reasoningStarted = true;
}
process.stdout.write(delta.reasoning_content);
}
// Print the response content
if (delta.content) {
if (!outputStarted) {
console.log("\n" + "====================Response Content====================");
outputStarted = true;
}
process.stdout.write(delta.content);
}
}
}
}
main();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": "qwen3.7-max",
"messages": [
{"role": "user", "content": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content"}
],
"enable_thinking": true,
"enable_search": true,
"search_options": {"search_strategy": "agent_max"},
"stream": true
}'DashScope
O SDK Java não é compatível.
import os
import dashscope
from dashscope import Generation
# If the environment variable is not configured, replace the next line with dashscope.api_key = "sk-xxx", using your Model Studio API key.
dashscope.api_key = os.getenv("DASHSCOPE_API_KEY")
# Singapore region. Replace {WorkspaceId} with your actual Workspace ID. URLs vary by region.
dashscope.base_http_api_url = "https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1"
response = Generation.call(
model="qwen3.7-max",
messages=[
{"role": "user", "content": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content"}
],
enable_search=True,
search_options={"search_strategy": "agent_max"},
enable_thinking=True,
result_format="message",
stream=True,
incremental_output=True
)
reasoning_started = False
output_started = False
for chunk in response:
if chunk.status_code == 200:
message = chunk.output.choices[0].message
# Print the thinking process
if hasattr(message, 'reasoning_content') and message.reasoning_content:
if not reasoning_started:
print("="*20 + "Thinking Process" + "="*20)
reasoning_started = True
print(message.reasoning_content, end='', flush=True)
# Print the response content
if hasattr(message, 'content') and message.content:
if not output_started:
print("\n" + "="*20 + "Response Content" + "="*20)
output_started = True
print(message.content, end='', flush=True)
else:
print(f"\nRequest failed: code={chunk.code}, message={chunk.message}")
breakcurl -X POST https://{WorkspaceId}.ap-southeast-1.maas.aliyuncs.com/api/v1/services/aigc/text-generation/generation \
-H "Authorization: Bearer $DASHSCOPE_API_KEY" \
-H "X-DashScope-SSE: enable" \
-H "Content-Type: application/json" \
-d '{
"model": "qwen3.7-max",
"input": {
"messages": [
{
"role": "user",
"content": "Please visit the official Alibaba Cloud Model Studio documentation for the code interpreter and summarize its main content"
}
]
},
"parameters": {
"enable_thinking": true,
"enable_search": true,
"search_options": {
"search_strategy": "agent_max"
},
"result_format": "message"
}
}'Faturamento
O faturamento inclui:
Taxas de chamada do modelo: O conteúdo extraído da página da web é adicionado ao prompt, aumentando a contagem de tokens de entrada. Esses tokens são cobrados à tarifa padrão do modelo. Para detalhes de preços, consulte o console do Model Studio.
-
Taxas de chamada de ferramentas: Inclui extração da web e busca na web.
-
Taxas de busca na web por 1.000 chamadas:
Escopos de implantação na China continental e Global: $0,57341.
Escopo de implantação internacional: $10,00.
O web extractor é gratuito por tempo limitado.
-