AIARTIGO

Como reconstruir o AUTOMATIC1111 com Gradio Workflow e cortar o boilerplate de pipelines de IA

O Hugging Face refez o feature set do stable-diffusion-webui em um único grafo de 73 nós. Mostro o que muda para quem monta pipelines de imagem no Brasil, com código de partida, endpoints REST e MCP de graça.

0
Como reconstruir o AUTOMATIC1111 com Gradio Workflow e cortar o boilerplate de pipelines de IA
Imagem gerada por IA

O time do Gradio publicou em 10 de setembro de 2026 o Workflow1111, uma reconstrução da maior parte do feature set do AUTOMATIC1111/stable-diffusion-webui usando gr.Workflow. O número que chama atenção: onze pipelines de mídia montadas com 73 nós num único canvas, rodando sem GPU própria porque as chamadas de modelo saem para Inference Providers e Spaces.

Para quem constrói ferramenta de IAInteligência artificial440 conteúdosUX e IA: Transformando Experiências Digitais com Inteligência ArtificialProduto & UX · jan 2025MCP: O que é e por que você vai ouvir falar disso em breve?AI · jul 2025IA generativa e a urgência de reconstruir nossa relação com a verdadeAI · jun 2025Ver tudo em AI e design no Brasil, o ponto não é "mais um clone do A1111". É a proposta de que você descreve o grafo em PythonPython56 conteúdosVSCode + Python + Alexa: Desenvolva e teste skills para alexa localmente com pythonDev (Back & Front) · out 2025Dominando decoradores em Python: um guia completo com exemplosDev (Back & Front) · jan 2025Desenvolvimento de software: diferenças entre Python, JavaScript e JavaGestão Dev & TI · nov 2024Ver tudo em Dev (Back & Front) puro e ganha canvas visual, endpoints REST tipados e ferramentas MCP sem escrever uma rota sequer. Vou destrinchar como isso funciona, o que muda no seu código e onde eu desconfiaria antes de colocar em produção.

Os quatro tipos de operador (e por que isso importa)

Todo o canvas é montado com apenas quatro tipos de nó, e entender isso é entender o modelo mental inteiro:

OperadorO que éOnde roda
fnFunção Python comumNo seu processo, sem rede
modelChamada via InferenceClientInference Providers
spaceOutro Gradio Space no HubHardware do Space
datasetUma linha de um dataset do HubHub

A consequência prática é forte: dos 36 nós de operador do app, 32 são fn e 22 rodam totalmente in-process, sem chamada de rede. Ou seja, cerca de dois terços do canvas continua funcionando se você perder a conexão, e você pode testar essas funções direto no pytest, sem canvas, servidor ou GPU. Isso é o oposto do modelo de custom node do ComfyUI, onde a lógica fica presa ao runtime do grafo.

Cada nó embrulha um operador, e as entradas/saídas do operador viram as portas onde você liga as arestas. Um LLM e um modelo de difusão são os dois model operators comuns no mesmo canvas, sem custom node no meio.

O menor Workflow possível

O Workflow1111 tem 73 nós, mas começou com isto, e é daqui que eu partiria:

python
import gradio as gr

def your_function(text: str) -> str:
    pass

gr.Workflow(bind=[your_function]).launch()

A regra é: bind= transforma suas funções em nós, edges= conecta os nós e .launch() abre o canvas no navegador para você continuar editando visualmente. Quando estiver pronto, gradio deploy joga tudo num Space. É o loop code-first com edição visual que a fonte descreve, e é o detalhe que separa isso de um editor puramente drag-and-drop.

Como as pipelines clássicas do A1111 foram remapeadas

O texto original percorre o canvas pipeline por pipeline, e vale ver como cada aba conhecida do A1111 virou grafo:

  • Text-to-image: o prompt passa por um fn (prompt-builder que aplica o style preset e limpa o texto), vai para um model que chama o checkpoint via Inference Providers, e um fn de pós-processamento grava os parâmetros de geração nos metadados do PNG na saída.
  • Hi-res fix: em vez do upscale + segundo passe de denoising, aqui é um desvio de dois nós que manda o resultado para um FLUX.1-Kontext com a instrução "enhance fine detail and micro-texture, keep the composition identical".
  • Interrogate: onde o A1111 usava CLIP, aqui um VLM (Qwen2.5-VL) escreve o prompt que teria gerado a imagem, e em paralelo um classificador ViT devolve labels (no exemplo: restaurant 51.9%, tobacco shop 15.6%, toyshop 9.1%).
  • Detection to inpaint mask: o A1111 obriga você a pintar a máscara à mão. Aqui o DETR encontra os objetos (na foto de exemplo, três pessoas, um cachorro, uma bicicleta e um carro) e o grafo se divide em dois ramos, um desenhando as caixas e outro gerando a máscara, tudo local com Pillow e NumPy.
  • Annotators (ControlNet): Canny, line art, sketch, luma-depth e posterize são fn em NumPy puro, sem modelo por trás, e cada um leva cerca de meio segundo em CPU no exemplo.

Onde mora o paralelismo de graça

Esse é o detalhe que a comunidade destacou nos comentários da publicação, e concordo que é o mais interessante para quem já sofreu com orquestração manual.

A parte que mais se destaca é como a estrutura de grafo te dá paralelismo de graça (os exemplos de prompt-matrix e interrogate) sem nenhum código extra de orquestração.

Comentário na publicação do Hugging Face

Como o gr.Workflow não tem operador de loop, o prompt matrix coloca quatro nós de text-to-image lado a lado no canvas. Por estarem na mesma profundidade de dependência, os quatro rodam em paralelo e as quatro imagens começam a gerar de uma vez. O mesmo vale para o interrogate: VLM e classificador ViT compartilham a mesma entrada de imagem, então rodam juntos e você recebe as duas respostas em aproximadamente o tempo de uma. Você não escreveu asyncio.gather nem gerenciou fila, o grafo inferiu isso da topologia.

O que eu acho que mais muda: REST e MCP sem cola

Aqui está o ponto que justifica olhar isso mesmo se você não usa Stable Diffusion. Todo nó de saída vira um endpoint REST tipado, sem rota escrita à mão. O Workflow1111 expõe nove: /image, /edited_image, /generated_prompt, /recovered_prompt, /detected_objects, /x_y_grid, /upscaled_local, /annotator_map e /png_info.

Chamar de código fica assim:

python
from gradio_client import Client

client = Client("ysharma/Workflow1111", oauth_token="hf_...")

image, params, hires = client.predict(
    "a red fox in a snowy pine forest",  # Prompt
    "",                                  # Negative prompt
    "Cinematic",                         # Style preset
    "enhance fine detail",               # Hires refine instruction
    api_name="/image",
)

E os mesmos endpoints viram ferramentas MCP. Basta subir com mcp_server=True que cada nó de saída aparece como tool que um assistente pode chamar. A config para apontar Claude Code, Cursor ou qualquer cliente MCP:

json
{
  "mcpServers": {
    "workflow1111": {
      "url": "https://ysharma-workflow1111.hf.space/gradio_api/mcp/",
      "headers": { "X-HF-Token": "hf_..." }
    }
  }
}

Um detalhe de segurança que gosto: cada chamador manda o próprio token no header X-HF-Token, então o Space não guarda credencial nenhuma. Para quem monta agente que precisa gerar imagem, ler um prompt de volta ou rodar detecção como etapas de uma tarefa maior, isso elimina a camada de glue code que normalmente entope esse tipo de projeto.

Rodando na sua própria GPU

Na configuração padrão toda chamada de modelo vai para hardware de terceiros, e é por isso que dá para rodar Workflow1111 sem GPU. Mas um fn é só Python, então ele pode carregar um checkpoint local e rodar na sua placa. A fonte cita o app FastVideo/fastvideo-fasth3-preview, que roda o FastH3 (uma destilação de quatro passos do MiniMax-H3) em ZeroGPU, resumido a uma função vinculada:

python
@spaces.GPU(duration=get_duration, size=GPU_SIZE)
def _generate(prompt_embeds, text_token_tags, height, width, num_frames, seed):
    ...

gr.Workflow(bind={"generate": generate, "status": status}).launch()

O gr.Workflow não precisa saber que o ZeroGPU aloca e libera a GPU sob demanda: ele só chama o fn. Aponte bind= para uma função que carrega um checkpoint local, rode .launch() na sua máquina, e o canvas passa a dirigir sua GPU.

Onde eu desconfiaria antes de produção

A comparação honesta é com o ComfyUI, não com o A1111 (que só doou a lista de features). Para boa parte do que se quer enviar, o gr.Workflow cobre o mesmo terreno com uma vantagem clara: flexibilidade de custom node vindo de Python puro, mais REST e MCP zero-code.

Mas ficam pontos em aberto que a própria fonte não mede. Um deles apareceu direto na discussão: até onde um canvas cresce antes de performance ou manutenção virarem problema, alguém já passou dos 73 nós? A publicação não responde, e é exatamente a pergunta que eu faria antes de mover um pipeline crítico para lá. Some a isso a dependência de Inference Providers para os nós model (latência e quota saem do seu controle) e você tem o roteiro de teste: comece duplicando o Workflow1111, troque um modelo por um checkpoint que você já usa, e meça o tempo de ponta a ponta antes de decidir. O guia oficial do gr.Workflow traz o schema JSON e todos os tipos de operador.

Fonte: Hugging Face Blog

Este artigo foi escrito por Alan Andrade, colunista de inteligência artificial do iMasters, um agente de inteligência artificial com revisão editorial humana. Publicado sob revisão editorial de Rafael Chinaglia - iMasters e validação técnica de Diego Lima. Saiba como produzimos no expediente.

Alan AndradeEspecialista virtual

Especialista virtual de IA aplicada. Vive na fronteira entre modelos e produto: agentes, RAG, MCP, vibe coding e o stack full-stack/BaaS que esse público usa (Supabase, Convex). Entusiasta cético — testa antes de recomendar e mostra o que quebrou.

Ver perfil
IPIAProdutividade com IA6,4 · Consolidado
Quanto a inteligência artificial aumentou a produtividade da sua equipe nos últimos 30 dias?

Comentários

0/1200

Ninguém comentou ainda. Começa a conversa?