DEV Community

Cover image for Gerar Código a Partir de Captura de Tela com Qwen 3.7 Plus
Lucas
Lucas

Posted on • Originally published at apidog.com

Gerar Código a Partir de Captura de Tela com Qwen 3.7 Plus

Envie ao Qwen 3.7 Plus uma captura de tela de uma interface e peça para ele gerar o front-end correspondente. Como o modelo interpreta imagem e código na mesma chamada, você pode transformar um mockup, uma página de referência ou uma exportação do Figma em um componente React, HTML ou outro alvo inicial.

Experimente o Apidog hoje

Neste guia, você vai montar o fluxo completo: chamada multimodal, prompt útil, ciclo de refinamento visual e integração da UI gerada com APIs reais. Para contexto do modelo, veja a visão geral do Qwen 3.7 Plus. Para o formato da requisição, consulte o guia da API Qwen 3.7 Plus. Você pode usar o Apidog para testar os endpoints que a UI gerada vai consumir.

TL;DR

O fluxo prático é:

  1. Exporte a tela como imagem.
  2. Envie a imagem para o Qwen 3.7 Plus com um prompt específico.
  3. Peça o código no framework desejado.
  4. Renderize o resultado localmente.
  5. Tire uma nova captura de tela.
  6. Envie a imagem original e a renderizada para o modelo corrigir diferenças.
  7. Conecte o componente a APIs reais ou simuladas.

A primeira geração normalmente acerta a estrutura geral. O refinamento visual é o que melhora espaçamento, cores e detalhes.

Por que usar Qwen 3.7 Plus para screenshot-to-code

Captura de tela para código exige duas capacidades ao mesmo tempo:

  • interpretar corretamente uma interface visual;
  • gerar código front-end utilizável.

O Qwen 3.7 Plus combina visão com geração de código. Segundo os dados citados, ele atinge cerca de 60% no SWE-Bench Pro e 70,3 no Terminal-Bench. O contexto de 1M de tokens ajuda em designs grandes, e o custo de US$ 0,40 por milhão de tokens de entrada permite iterar sem tornar o processo caro.

Para um caso relacionado, em que o modelo conduz uma interface em vez de reconstruí-la, veja o guia do agente de uso de computador.

Imagem

1. Faça a chamada básica com imagem + texto

Envie a captura de tela como image_url junto com uma instrução textual. O exemplo abaixo usa a API compatível com OpenAI do DashScope:

import os
import base64
from openai import OpenAI

client = OpenAI(
    api_key=os.environ["DASHSCOPE_API_KEY"],
    base_url="https://dashscope-intl.aliyuncs.com/compatible-mode/v1",
)

def screenshot_to_code(png_path, prompt):
    with open(png_path, "rb") as file:
        b64 = base64.b64encode(file.read()).decode()

    response = client.chat.completions.create(
        model="qwen3.7-plus",
        messages=[
            {
                "role": "user",
                "content": [
                    {
                        "type": "text",
                        "text": prompt,
                    },
                    {
                        "type": "image_url",
                        "image_url": {
                            "url": f"data:image/png;base64,{b64}"
                        },
                    },
                ],
            }
        ],
    )

    return response.choices[0].message.content

prompt = "Reconstrua esta UI como um componente React."

print(screenshot_to_code("mockup.png", prompt))
Enter fullscreen mode Exit fullscreen mode

Antes de usar em produção, confirme o ID atual do modelo na documentação do Model Studio.

Esse prompt funciona, mas tende a gerar uma implementação genérica. Para obter código aproveitável, detalhe a pilha e as restrições.

2. Escreva um prompt que gere código utilizável

Evite instruções vagas como “crie essa tela em React”. Especifique framework, estilo, responsividade, acessibilidade e como tratar dados dinâmicos.

Exemplo de prompt:

Converta esta captura de tela da UI em um único componente React usando Tailwind CSS.

Requisitos:
- Corresponda ao layout, espaçamento e paleta de cores o mais próximo possível.
- Torne o componente responsivo até uma largura móvel de 375px.
- Use HTML semântico.
- Use rótulos acessíveis para inputs e botões.
- Use dados de placeholder onde a captura mostra conteúdo dinâmico.
- Não invente chamadas de API.
- Retorne apenas o código do componente, sem explicações.
Enter fullscreen mode Exit fullscreen mode

Se você já sabe as cores, fontes ou tokens de design, inclua esses valores:

Use estas cores:
- Fundo principal: #F8FAFC
- Texto primário: #0F172A
- Texto secundário: #64748B
- Ação principal: #2563EB
Enter fullscreen mode Exit fullscreen mode

Se a UI usa ícones, indique a biblioteca:

Use lucide-react para os ícones. Não desenhe ícones com SVG manual, exceto se necessário.
Enter fullscreen mode Exit fullscreen mode

A documentação do Tailwind CSS pode servir como referência para as classes utilitárias. Se você também fornecer uma especificação escrita do componente, a saída melhora. Veja o artigo sobre o que um design.md faz pelos agentes de codificação.

3. Refine com um ciclo de feedback visual

A primeira tentativa geralmente não acerta tudo. O ciclo recomendado é:

  1. Gere o componente.
  2. Rode localmente.
  3. Capture uma imagem da renderização.
  4. Envie a imagem original e a renderizada ao Qwen 3.7 Plus.
  5. Peça para ele listar diferenças e devolver o código corrigido.

Prompt para refinamento:

Aqui está o design alvo na imagem 1 e minha renderização atual na imagem 2.

Tarefas:
1. Liste as diferenças visuais principais entre as duas imagens.
2. Corrija o componente para aproximar a imagem 2 da imagem 1.
3. Foque em espaçamento, alinhamento, tamanho de fonte, cores e proporções.
4. Retorne apenas o código atualizado.
Enter fullscreen mode Exit fullscreen mode

Esse processo costuma exigir duas ou três rodadas. É a mesma lógica de perceber e corrigir usada em um agente de uso de computador, mas aplicada à geração de código.

4. Divida designs grandes em partes

Mockups reais podem ser grandes, com muitos detalhes. Evite pedir uma página inteira em uma única chamada.

Prefira quebrar a interface em componentes:

  • Header
  • Sidebar
  • StatsCards
  • DataTable
  • Filters
  • EmptyState
  • Modal
  • Form

Exemplo de prompt para uma seção:

Converta apenas a área da tabela desta captura em um componente React com Tailwind CSS.

Ignore o cabeçalho, a sidebar e os cards superiores.
O componente deve receber os dados via props.
Use placeholders para os valores.
Retorne apenas o código.
Enter fullscreen mode Exit fullscreen mode

Isso gera código mais limpo e facilita a integração posterior.

5. Reduza custo e ruído da imagem

Imagens grandes aumentam o consumo de tokens. Para manter o processo eficiente:

  • reduza a imagem para o menor tamanho em que o texto ainda fique legível;
  • corte apenas a seção que será implementada;
  • evite enviar telas inteiras quando só precisa de um componente;
  • remova áreas irrelevantes, como barras do navegador ou margens vazias.

O contexto de 1M de tokens ajuda, mas prompts menores e imagens focadas geralmente geram resultados melhores.

6. Corrija problemas comuns com instruções simples

Alguns ajustes no prompt reduzem bastante o número de iterações.

Cores incorretas

Inclua os valores exatos:

Use exatamente estes valores de cor: #111827, #6B7280, #2563EB e #F9FAFB.
Enter fullscreen mode Exit fullscreen mode

Ícones inventados

Defina uma biblioteca:

Use Heroicons para todos os ícones. Não crie ícones personalizados.
Enter fullscreen mode Exit fullscreen mode

Texto inventado

Peça placeholders claros:

Quando houver conteúdo dinâmico, use placeholders como "Nome do usuário", "Título do item" e "Descrição".
Enter fullscreen mode Exit fullscreen mode

Excesso de div

Peça semântica e estrutura plana:

Use elementos semânticos como header, main, section, nav, table, button e form quando apropriado.
Evite wrappers desnecessários.
Enter fullscreen mode Exit fullscreen mode

Código difícil de integrar

Peça props:

O componente deve receber dados via props e não deve fazer fetch diretamente.
Enter fullscreen mode Exit fullscreen mode

Exemplo:

type User = {
  id: string;
  name: string;
  email: string;
  role: string;
};

type UsersTableProps = {
  users: User[];
};

export function UsersTable({ users }: UsersTableProps) {
  return (
    <section className="rounded-xl border border-slate-200 bg-white">
      <table className="w-full text-left text-sm">
        <thead className="border-b border-slate-200 text-slate-500">
          <tr>
            <th className="px-4 py-3 font-medium">Nome</th>
            <th className="px-4 py-3 font-medium">Email</th>
            <th className="px-4 py-3 font-medium">Função</th>
          </tr>
        </thead>
        <tbody>
          {users.map((user) => (
            <tr key={user.id} className="border-b border-slate-100">
              <td className="px-4 py-3 text-slate-900">{user.name}</td>
              <td className="px-4 py-3 text-slate-600">{user.email}</td>
              <td className="px-4 py-3 text-slate-600">{user.role}</td>
            </tr>
          ))}
        </tbody>
      </table>
    </section>
  );
}
Enter fullscreen mode Exit fullscreen mode

7. Conecte a UI a APIs reais

O código gerado é só a camada visual. Para virar funcionalidade, o componente precisa:

  • buscar dados;
  • enviar formulários;
  • lidar com estados de erro;
  • respeitar contratos de API;
  • trabalhar com respostas reais ou simuladas.

Uma abordagem prática é definir os endpoints antes de integrar a UI.

No Apidog, você pode:

  • definir o contrato da API;
  • simular respostas para o front-end;
  • testar endpoints;
  • validar se o backend retorna o formato esperado.

Esse fluxo combina bem com front-ends gerados por IA, porque o componente pode ser implementado com dados mockados enquanto o backend ainda está em construção. O guia do modo spec-first detalha esse processo. A mesma abordagem também se aplica a APIs construídas no Cursor.

Baixe o Apidog para simular e testar as APIs por trás da UI gerada pelo Qwen 3.7 Plus.

FAQ

Quais frameworks o Qwen 3.7 Plus pode gerar?

Qualquer framework que você especifique no prompt: React, Vue, Svelte, HTML com CSS puro, Tailwind CSS ou bibliotecas de componentes. Seja explícito para evitar uma saída genérica.

A primeira tentativa fica fiel ao design?

Normalmente fica próxima na estrutura, mas pode errar espaçamento, cores e proporções. O ciclo de feedback visual é o que melhora a precisão.

Funciona com Figma?

Sim, se você exportar o frame como imagem. O modelo lê o design renderizado, não o arquivo Figma diretamente.

Como reduzir o custo de tokens?

Reduza a escala da imagem, corte apenas a seção necessária e gere a página em partes.

O modelo também cria o backend?

Não. Ele gera o front-end. As APIs precisam ser projetadas, simuladas e testadas separadamente.

Resultado final

Screenshot-to-code com Qwen 3.7 Plus funciona melhor como um fluxo iterativo:

  1. envie a captura;
  2. gere o componente;
  3. renderize;
  4. compare visualmente;
  5. refine;
  6. conecte a APIs.

O modelo acelera a criação do front-end, mas a interface só vira produto quando conversa com endpoints confiáveis. Gere a UI com o Qwen 3.7 Plus e use o Apidog para projetar, simular e testar as APIs por trás dela.

Top comments (0)