🚀 Como funciona?
📌 Conceito básico
1. Escreva uma função Python
2. Defina inputs e outputs
3. Pronto! Sua interface web está no ar
💡 Onde usar
- Demonstrar modelos de ML
- Prototipar ferramentas
- Compartilhar análises
- Ensinar programação
☁️ Google Colab (recomendado)
A maneira mais simples de começar: use o Google Colab direto do navegador.
# 1. Instalar (só precisa uma vez)
!pip install gradio
# 2. Importar e criar app
import gradio as gr
def saudacao(nome):
return f"Olá {nome}! Bem-vindo ao Gradio 🎉"
# Criar interface
demo = gr.Interface(
fn=saudacao,
inputs=gr.Textbox(label="Seu nome"),
outputs=gr.Textbox(label="Mensagem"),
title="Meu Primeiro Gradio",
description="Teste digitar seu nome"
)
# 3. Executar (abre um link)
demo.launch()
▶️ Execute cada célula em ordem. O link aparecerá automaticamente.
📝 Exemplo 1: Chatbot simples
Um assistente que responde perguntas básicas.
import gradio as gr
def responder(pergunta):
respostas = {
"oi": "Olá! Como posso ajudar?",
"tudo bem": "Tudo ótimo! E você?",
"qual seu nome": "Sou um assistente Gradio 🤖",
"obrigado": "Por nada! 😊"
}
pergunta = pergunta.lower().strip()
return respostas.get(pergunta, "Desculpe, não entendi. Pode reformular?")
with gr.Blocks(title="Assistente Virtual", theme=gr.themes.Soft()) as demo:
gr.Markdown("## 💬 Assistente Virtual")
gr.Markdown("Digite: oi, tudo bem, qual seu nome")
with gr.Row():
entrada = gr.Textbox(label="Sua mensagem", placeholder="Digite algo...")
saida = gr.Textbox(label="Resposta", interactive=False)
btn = gr.Button("Enviar", variant="primary")
btn.click(fn=responder, inputs=entrada, outputs=saida)
gr.Examples(
examples=[["oi"], ["tudo bem"], ["qual seu nome"]],
inputs=entrada
)
demo.launch()
📊 Exemplo 2: Análise de dados
Upload de CSV + estatísticas + gráfico automático
import gradio as gr
import pandas as pd
import plotly.express as px
def analisar_dados(arquivo):
if arquivo is None:
return "Envie um arquivo CSV", None
# Ler dados
df = pd.read_csv(arquivo.name)
# Resumo
resumo = f"""
📁 Arquivo: {arquivo.name}
📊 Linhas: {len(df):,}
📋 Colunas: {len(df.columns)}
📌 Colunas disponíveis:
{', '.join(df.columns[:10])}
"""
# Gráfico da primeira coluna numérica
num_cols = df.select_dtypes(include='number').columns
if len(num_cols) > 0:
fig = px.histogram(df, x=num_cols[0], title=f"Distribuição de {num_cols[0]}")
return resumo, fig
return resumo + "\n⚠️ Nenhuma coluna numérica encontrada", None
with gr.Blocks(title="Analisador CSV") as demo:
gr.Markdown("# 📂 Analisador Rápido de CSV")
arquivo = gr.File(label="Selecione um arquivo CSV", file_types=[".csv"])
resumo = gr.Textbox(label="Resumo", lines=8)
grafico = gr.Plot(label="Visualização")
btn = gr.Button("Analisar", variant="primary")
btn.click(fn=analisar_dados, inputs=arquivo, outputs=[resumo, grafico])
demo.launch()
🌍 Exemplo 3: Agro 5.0 (recomendação agrícola)
Sistema de recomendação baseado em regras — fácil de adaptar para ML.
import gradio as gr
def recomendar(umidade, temperatura, cultura):
"""Sistema de recomendação agrícola"""
if cultura == "Soja":
if umidade < 30 and temperatura > 30:
return "🚨 Risco de estresse hídrico! Avaliar irrigação."
elif umidade > 80:
return "⚠️ Umidade muito alta: risco de fungos. Monitorar."
else:
return "✅ Condições adequadas. Manter manejo."
elif cultura == "Milho":
if temperatura < 15:
return "❄️ Temperatura baixa: risco de geada. Proteger plantio."
elif umidade < 25:
return "💧 Umidade baixa: considerar irrigação suplementar."
else:
return "🌽 Condições normais para o milho."
return "🤖 Análise básica: condições dentro da normalidade."
with gr.Blocks(title="Agro 5.0 - Assistente de Manejo", theme=gr.themes.Soft()) as demo:
gr.Markdown("""
# 🌾 Assistente de Manejo Agrícola
Sistema de recomendação para tomada de decisão no campo
""")
with gr.Row():
with gr.Column():
umidade = gr.Slider(0, 100, value=50, label="Umidade do solo (%)", step=5)
temperatura = gr.Slider(0, 45, value=25, label="Temperatura (°C)", step=1)
cultura = gr.Dropdown(["Soja", "Milho", "Trigo"], value="Soja", label="Cultura")
with gr.Column():
saida = gr.Textbox(label="Recomendação", lines=5)
btn = gr.Button("Gerar Recomendação", variant="primary", size="lg")
btn.click(fn=recomendar, inputs=[umidade, temperatura, cultura], outputs=saida)
gr.Examples(
examples=[
[25, 32, "Soja"],
[85, 24, "Soja"],
[20, 14, "Milho"],
[30, 28, "Milho"]
],
inputs=[umidade, temperatura, cultura]
)
gr.Markdown("""
---
**📌 Como usar:** ajuste os parâmetros e clique no botão.
**💡 Próximo passo:** substitua as regras por um modelo de Machine Learning!
""")
demo.launch()
⚡ Exemplo 4: Calculadora com abas
Demonstração de múltiplas funcionalidades em um único app.
import gradio as gr
def operacoes_basicas(num1, num2, operacao):
if operacao == "Somar":
return num1 + num2
elif operacao == "Subtrair":
return num1 - num2
elif operacao == "Multiplicar":
return num1 * num2
elif operacao == "Dividir":
return num1 / num2 if num2 != 0 else "Erro: divisão por zero"
def conversor_temperatura(celsius):
return {
"Fahrenheit": (celsius * 9/5) + 32,
"Kelvin": celsius + 273.15
}
with gr.Blocks(title="Calculadora Multi-função") as demo:
gr.Markdown("# 🧮 Calculadora Inteligente")
with gr.Tab("Operações Básicas"):
with gr.Row():
n1 = gr.Number(label="Número 1", value=0)
n2 = gr.Number(label="Número 2", value=0)
oper = gr.Dropdown(["Somar", "Subtrair", "Multiplicar", "Dividir"], label="Operação")
resultado = gr.Number(label="Resultado")
btn_calc = gr.Button("Calcular")
btn_calc.click(fn=operacoes_basicas, inputs=[n1, n2, oper], outputs=resultado)
with gr.Tab("Conversor de Temperatura"):
temp_c = gr.Slider(-50, 100, value=25, label="Temperatura (°C)")
temp_f = gr.Number(label="Fahrenheit", interactive=False)
temp_k = gr.Number(label="Kelvin", interactive=False)
def atualizar_temp(c):
conv = conversor_temperatura(c)
return conv["Fahrenheit"], conv["Kelvin"]
temp_c.change(fn=atualizar_temp, inputs=temp_c, outputs=[temp_f, temp_k])
demo.launch()
🎯 Principais recursos do Gradio
📥 Inputs disponíveis
gr.Textbox()- textogr.Number()- númerosgr.Slider()- controle deslizantegr.Dropdown()- menu suspensogr.File()- upload de arquivosgr.Image()- imagensgr.Audio()- áudiogr.DataFrame()- tabelas
📤 Outputs disponíveis
gr.Textbox()- textogr.Number()- númerosgr.Image()- imagensgr.Plot()- gráficosgr.File()- downloadgr.DataFrame()- tabelasgr.HTML()- HTML customizadogr.JSON()- dados JSON
📱 Compartilhando seu app
🔗 Link público temporário
demo.launch(share=True) # Cria link público por 72h
Perfeito para apresentar trabalhos e testes rápidos
🚀 Espaços Hugging Face
# Hospedagem gratuita permanente demo.launch() # Faça deploy no Hugging Face Spaces
Publique seu app permanentemente de graça
⚠️ Atenção: O modo
share=True gera link público.
Não compartilhe dados sensíveis.
📌 Roteiro rápido para começar
- Acesse o Google Colab: colab.research.google.com
- Crie um novo notebook: Arquivo → Novo notebook
- Instale o Gradio:
!pip install gradio - Cole um dos exemplos acima em uma célula
- Execute: Shift + Enter
- Clique no link que aparecer
✨ Pronto! Em menos de 2 minutos você tem uma interface web funcionando.
🐛 Solução de problemas
| Problema | Solução |
|---|---|
| "ModuleNotFoundError" | Execute !pip install gradio novamente |
| Link não abre | Use demo.launch(share=True) para link público |
| Arquivo não carrega | No Colab, faça upload manual primeiro |
| Interface lenta | Reduza a quantidade de dados processados |