15 2 months ago

🚀 Setup do FastAPI Router Generator com Ollama

thinking

2 months ago

59693fc28854 · 5.2GB

qwen3
·
8.19B
·
Q4_K_M
MIT License Copyright (c) 2023 DeepSeek Permission is hereby granted, free of charge, to any person
{{- if .System }}{{ .System }}{{ end }} {{- range $i, $_ := .Messages }} {{- $last := eq (len (slice
Você é um especialista em FastAPI e geração automática de routers CRUD. Sua função principal
{ "stop": [ "<|begin▁of▁sentence|>", "<|end▁of▁sentence|>",

Readme

🚀 Setup do FastAPI Router Generator com Ollama

📋 Pré-requisitos

  1. Ollama instalado em seu sistema
  2. Modelo deepseek-r1:latest baixado
  3. Arquivo Modelfile salvo localmente

🔧 Instalação

1. Baixar o modelo base (se não tiver)

ollama pull deepseek-r1:latest

2. Salvar o Modelfile

Salve o conteúdo do artefato anterior em um arquivo chamado Modelfile (sem extensão):

# Criar arquivo
nano Modelfile
# Cole o conteúdo do artefato anterior

3. Criar o modelo customizado

ollama create fastapi-router -f Modelfile

4. Testar o modelo

ollama run fastapi-router

💡 Como Usar

🎯 Uso Básico (Gerar router padrão)

# Prompt de exemplo
Gere router para este modelo:

class UsuarioModel(Base):
    __tablename__ = "usuarios"
    
    id = Column(Integer, primary_key=True)
    nome = Column(String(100), nullable=False)
    email = Column(String(100), unique=True)
    senha = Column(String(255))
    ativo = Column(Boolean, default=True)

Resposta esperada: - ✅ Análise automática do modelo - ✅ 7 endpoints gerados (search, create, get_by_id, get_all, update, delete, options) - ✅ Código completo pronto para uso - ✅ Nomenclatura correta (usuario/usuarios)

🔧 Uso Avançado (Com customizações)

# Exemplo com customização
Gere router para UsuarioModel, mas:
- No endpoint create, adicione validação de email único
- No endpoint search, adicione filtro por status ativo
- No endpoint update, impeça alteração do email

Resposta esperada: - ✅ Router completo com modificações específicas - ✅ Customizações implementadas apenas nos endpoints solicitados - ✅ Estrutura base mantida

🎯 Padrões de Prompts

✅ Prompts Eficazes

# Básico
"Gere router para [ColeMeusModelos]"

# Com customização específica
"Gere router para [Modelo], mas no endpoint [NOME] adicione [CUSTOMIZAÇÃO]"

# Múltiplas customizações
"Gere router para [Modelo], mas:
- No create: [customização1]  
- No search: [customização2]
- No update: [customização3]"

# Solicitar apenas um endpoint
"Gere apenas o endpoint search para [Modelo] com filtro por [campo]"

❌ Evite

# Muito vago
"Crie um router"

# Alteração estrutural
"Mude a estrutura dos endpoints"

# Sem modelo SQLAlchemy
"Crie router para uma API de produtos" (sem modelo)

🔍 Exemplos Práticos

Exemplo 1: E-commerce

# Input
class ProdutoModel(Base):
    __tablename__ = "produtos"
    
    id = Column(Integer, primary_key=True)
    nome = Column(String(100), nullable=False)
    preco = Column(Float, nullable=False)
    categoria_id = Column(Integer, ForeignKey("categorias.id"))
    estoque = Column(Integer, default=0)
    ativo = Column(Boolean, default=True)

# Prompt
"Gere router para ProdutoModel, mas no endpoint create adicione validação para preço > 0 e estoque >= 0"

Exemplo 2: Sistema de Pedidos

# Input  
class PedidoModel(Base):
    __tablename__ = "pedidos"
    
    id = Column(Integer, primary_key=True)
    cliente_id = Column(Integer, ForeignKey("clientes.id"))
    total = Column(Float, nullable=False)
    status = Column(Enum(StatusPedido), default=StatusPedido.PENDENTE)
    data_criacao = Column(DateTime, default=datetime.utcnow)

# Prompt
"Gere router para PedidoModel, mas:
- No search: filtrar apenas pedidos do cliente logado
- No update: permitir apenas mudança de status
- No delete: só permitir se status for PENDENTE"

Exemplo 3: Sistema de Usuários

# Input
class UsuarioModel(Base):
    __tablename__ = "usuarios"
    
    id = Column(Integer, primary_key=True)
    nome = Column(String(100), nullable=False)
    email = Column(String(100), unique=True)
    senha_hash = Column(String(255))
    perfil = Column(Enum(PerfilUsuario))
    ultimo_login = Column(DateTime)

# Prompt  
"Gere router para UsuarioModel, mas:
- No create: hash da senha antes de salvar
- No update: não permitir alteração de email e senha
- No get_by_id: não retornar senha_hash
- Adicione endpoint POST /login para autenticação"

🚀 Comandos Úteis

# Listar modelos
ollama list

# Remover modelo (se precisar refazer)
ollama rm fastapi-router

# Verificar uso de memória
ollama ps

# Executar em modo interativo
ollama run fastapi-router

# Executar com prompt direto
ollama run fastapi-router "Gere router para [SeuModelo]"

🔧 Troubleshooting

Problema: Modelo não encontrado

# Verificar se existe
ollama list | grep deepseek-r1

# Se não existir, baixar
ollama pull deepseek-r1:latest

Problema: Resposta incompleta

# Aumentar contexto no Modelfile
PARAMETER num_ctx 16384

Problema: Resposta muito criativa

# Diminuir temperatura no Modelfile  
PARAMETER temperature 0.05

📈 Próximos Passos

  1. Teste com seus modelos reais
  2. Ajuste os parâmetros conforme necessário
  3. Crie versões especializadas para diferentes projetos
  4. Automatize a geração em seus scripts de desenvolvimento

🎯 Resultado: Modelo Ollama especializado que gera routers FastAPI padronizados com possibilidade de customizações específicas por endpoint!