Busca de imagens
Encontre imagens através de respostas
A API Responses fornece duas ferramentas de busca de imagens integradas: ** pesquisa de texto para imagem** encontra imagens correspondentes a uma descrição de texto, e ** pesquisa de imagem para imagem** encontra imagens visualmente semelhantes de uma imagem de entrada. Ambas as ferramentas retornam uma série de resultados da JSON e uma análise gerada por modelos.
Essas ferramentas só estão disponíveis através da API Responses.
Busca de texto para imagem.
Procure na internet imagens que combinem com uma descrição de texto, e deixe o modelo descrever e raciocinar sobre elas. Passo. {"type": "web_search_image"} na tools parâmetro - o modelo decide quando procurar baseado na entrada.
Exemplo
import os
import json
from openai import OpenAI
client = OpenAI(
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="Find a tech-themed background image suitable for a PowerPoint cover",
tools=[
{
"type": "web_search_image"
}
]
)
for item in response.output:
if item.type == "web_search_image_call":
print(f"[Tool call] Text-to-image search (status: {item.status})")
if item.output:
images = json.loads(item.output)
print(f" Found {len(images)} images:")
for img in images[:5]:
print(f" [{img['index']}] {img['title']}")
print(f" {img['url']}")
if len(images) > 5:
print(f" ... Total {len(images)} images")
elif item.type == "message":
print(f"\n[Model response]")
print(response.output_text)
print(f"\n[Token usage] Input: {response.usage.input_tokens}, Output: {response.usage.output_tokens}, Total: {response.usage.total_tokens}")
import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
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: "Find a tech-themed background image suitable for a PowerPoint cover",
tools: [
{ type: "web_search_image" }
]
});
for (const item of response.output) {
if (item.type === "web_search_image_call") {
console.log(`[Tool call] Text-to-image search (status: ${item.status})`);
if (item.output) {
const images = JSON.parse(item.output);
console.log(` Found ${images.length} images:`);
images.slice(0, 5).forEach(img => {
console.log(` [${img.index}] ${img.title}`);
console.log(` ${img.url}`);
});
if (images.length > 5) {
console.log(` ... Total ${images.length} images`);
}
}
} else if (item.type === "message") {
console.log(`\n[Model response]`);
console.log(response.output_text);
}
}
console.log(`\n[Token usage] Input: ${response.usage.input_tokens}, Output: ${response.usage.output_tokens}, Total: ${response.usage.total_tokens}`);
}
main();
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": "Find a tech-themed background image suitable for a PowerPoint cover",
"tools": [
{"type": "web_search_image"}
]
}'
Saída da amostra:
[Tool call] Text-to-image search (status: completed)
Found 30 images:
[1] Best Free Information Technology Background S Google Slides Themes ...
https://image.slidesdocs.com/responsive-images/slides/0-technology-line-network-information-training-courseware-powerpoint-background_17825ea41f__960_540.jpg
[2] Data Technology Blue Abstract Business Glow Powerpoint Background ...
https://image.slidesdocs.com/responsive-images/background/data-technology-blue-abstract-business-glow-powerpoint-background_e667bfafcb__960_540.jpg
...
[Model response]
Here are several tech-themed background images perfect for your PowerPoint cover...
[Token usage] Input: 4326, Output: 645, Total: 4971
Formato de resposta
A resposta output Array contém dois tipos de itens:
| Tipo de item | Descrição |
|---|---|
web_search_image_call |
Os resultados brutos da busca como uma matriz JSON. Cada objeto incluiindex,title, eurl. |
message |
Análise e recomendações do modelo baseadas nos resultados da busca. |
Contagem
Busca de texto para imagem incorre em dois tipos de acusações:
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).
| Tipo de carga. | Detalhes |
|---|---|
| - Taxas de chamadas de modelos. | Os resultados da busca de imagens são adicionados ao prompt, o que aumenta a contagem de fichas de entrada. Taxas padrão de modelos se aplicam. Veja.-Preços.para detalhes. |
| - Taxas de chamada de ferramentas. | US$ 8 per 1,000 calls. |
Busca de imagem para imagem
Encontre imagens visualmente semelhantes na internet de uma imagem de entrada, e deixe o modelo analisar os resultados. Passo. {"type": "image_search"} na tools E dar a imagem usando o input_image Tipo de conteúdo. Opcionalmente, incluir um input_text Mensagem para fornecer contexto de busca adicional.
Exemplo
Substituir image_url no código de exemplo com uma URL de imagem acessível publicamente (o OpenAI SDK não suporta caminhos de arquivos locais).
import os
import json
from openai import OpenAI
client = OpenAI(
api_key=os.getenv("DASHSCOPE_API_KEY"),
base_url="https://maas.qwencloudapi.com/compatible-mode/v1"
)
input_content = [
{"type": "input_text", "text": "Find landscape images with a similar style to this one"},
{"type": "input_image", "image_url": "https://img.alicdn.com/imgextra/i4/O1CN01YbrnSS1qtmsAkw0Ud_!!6000000005554-2-tps-788-450.png"}
]
response = client.responses.create(
model="qwen3.8-max",
input=[{"role": "user", "content": input_content}],
tools=[{"type": "image_search"}]
)
for item in response.output:
if item.type == "image_search_call":
print(f"[Tool call] Image-to-image search (status: {item.status})")
if item.output:
images = json.loads(item.output)
print(f" Found {len(images)} images:")
for img in images[:5]:
print(f" [{img['index']}] {img['title']}")
print(f" {img['url']}")
if len(images) > 5:
print(f" ... Total {len(images)} images")
elif item.type == "message":
print(f"\n[Model response]")
print(response.output_text)
print(f"\n[Token usage] Input: {response.usage.input_tokens}, Output: {response.usage.output_tokens}, Total: {response.usage.total_tokens}")
import OpenAI from "openai";
import process from 'process';
const openai = new OpenAI({
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: [
{
role: "user",
content: [
{ type: "input_text", text: "Find landscape images with a similar style to this one" },
{ type: "input_image", image_url: "https://img.alicdn.com/imgextra/i4/O1CN01YbrnSS1qtmsAkw0Ud_!!6000000005554-2-tps-788-450.png" }
]
}
],
tools: [{ type: "image_search" }]
});
for (const item of response.output) {
if (item.type === "image_search_call") {
console.log(`[Tool call] Image-to-image search (status: ${item.status})`);
if (item.output) {
const images = JSON.parse(item.output);
console.log(` Found ${images.length} images:`);
images.slice(0, 5).forEach(img => {
console.log(` [${img.index}] ${img.title}`);
console.log(` ${img.url}`);
});
if (images.length > 5) {
console.log(` ... Total ${images.length} images`);
}
}
} else if (item.type === "message") {
console.log(`\n[Model response]`);
console.log(response.output_text);
}
}
console.log(`\n[Token usage] Input: ${response.usage.input_tokens}, Output: ${response.usage.output_tokens}, Total: ${response.usage.total_tokens}`);
}
main();
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": [
{
"role": "user",
"content": [
{"type": "input_text", "text": "Find landscape images with a similar style to this one"},
{"type": "input_image", "image_url": "https://img.alicdn.com/imgextra/i4/O1CN01YbrnSS1qtmsAkw0Ud_!!6000000005554-2-tps-788-450.png"}
]
}
],
"tools": [
{"type": "image_search"}
]
}'
Saída da amostra:
[Tool call] Image-to-image search (status: completed)
Found 2 images:
[1] QingMing Festival Holiday Notice 2024
https://www.healthcabin.net/blog/wp-content/uploads/2024/04/QingMing-Festival-Holiday-Notice-2024.jpg
[2] Serene Asian Landscape Stone Bridge Reflecting in Misty Water
https://thumbs.dreamstime.com/b/serene-asian-landscape-stone-bridge-reflecting-misty-water-tranquil-illustration-traditional-arch-spanning-lake-style-376972039.jpg
[Model response]
Okay, I have found several landscape images with a similar style for you...
[Token usage] Input: 2753, Output: 181, Total: 2934
Formato de resposta
A resposta output Array contém dois tipos de itens:
| Tipo de item | Descrição |
|---|---|
image_search_call |
O resultado da chamada contém uma matriz JSON de imagens iguais. Cada objeto incluiindex,title, eurl. |
message |
A análise do modelo dos resultados da busca, acessível através deresponse.output_text. |
Contagem
A busca por imagem incorre em dois tipos de acusações:
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).
| Tipo de carga. | Detalhes |
|---|---|
| Modelo de fichas de entrada | Os resultados da pesquisa são adicionados ao prompt, o que aumenta a contagem de fichas de entrada. Cobrado com o preço padrão do modelo. Veja.-Preços.para detalhes. |
| Taxa de chamada de ferramentas | US$ 8 per 1,000 calls. |
Modelos apoiados.
Ambas as ferramentas de busca de imagens suportam o mesmo conjunto de modelos. Só disponível através da API Responses.
Modelos recomendados
Para os melhores resultados de chamada de ferramentas, use os seguintes modelos:
- Qwen-Plus: Qwen3.7-Plus série, Qwen3.6-Plus série, Qwen3.5-Plus Série
- Qwen-Max: Qwen3.8-Max série, qwen3.7-max-2026-06-08
- qwen3.8-27b
Outros modelos
Os seguintes modelos também apoiam esta chamada de ferramenta, mas seu desempenho não é tão bom quanto o dos modelos recomendados.
- Qwen-Flash: Qwen3.8-Flash série, Qwen3.7-Flash série, Qwen3.6-Flash série, Qwen3.5-Flash Série
Fluxo
Para conceitos de streaming gerais (protocolo SSE, como permitir streaming, faturamento e uso de fichas), veja Streaming output. Esta seção cobre apenas o comportamento de transmissão específico para a busca de imagens.
A busca por imagens pode levar vários segundos. Ativar streaming para receber resultados incrementalmente, definindo stream=True (Python) ou stream: true (Node.js/curl). A resposta emite eventos na seguinte ordem:
| Tipo de evento | Trigger | Ação. |
|---|---|---|
response.output_item.added |
A chamada de ferramentas começa. | Mostre um indicador de carga. |
response.output_item.done |
Chamada completa. | - Sim.event.item.output como JSON para obter a lista de imagens. |
response.content_part.added |
O modelo começa a responder. | Prepare-se para transmitir texto. |
response.output_text.delta |
Modelo envia um pedaço de texto | Anexarevent.deltapara a saída. |
response.completed |
Resposta completa pronta. | Leia a final.usage Estatísticas. |
Perguntas frequentes
Que formatos de imagem e métodos de entrada são suportados?
Veja [Limites de imagem] (/developer-guides/multimodal/vision#input-file-limits) para formatos suportados e restrições de tamanho, e [Métodos de entrada de arquivos] (/developer-guides/multimodal/vision#file-input-methods) para como passar imagens.
O SDK OpenAI não suporta entrada local de arquivos.
Quantas imagens posso passar como entrada?
A contagem total de fichas para todas as imagens e texto deve permanecer dentro do comprimento máximo de entrada do modelo. O modelo busca uma imagem de cada vez, mas pode invocar a ferramenta várias vezes em uma única resposta para cobrir várias imagens.
O modelo determina o número de imagens a serem pesquisadas.
Quantos resultados uma busca retorna?
O modelo determina o número de resultados por busca. A contagem não está fixa, mas o máximo é de 100 imagens.