Plantilla para crear proyectos FastAPI para el equipo de IA de Grupo Farinter. 🚀
Para usar este proyecto no necesitas hacer fork. ¡Solo ejecuta el CLI de cookiecutter y listo!
Cookiecutter es una herramienta CLI (Interfaz de Línea de Comandos) para crear una estructura base de aplicación desde una plantilla. Utiliza un sistema de plantillas — Jinja2 — para reemplazar o personalizar nombres de carpetas y archivos, así como el contenido de los archivos.
pip install cookiecutterDesde GitHub (recomendado para producción):
cookiecutter https://github.com/farinter-analitica/cookiecutter-fastapiDesde repositorio local (para desarrollo):
cd /ruta/al/repositorio
cookiecutter cookiecutter-fastapiNota: Si has descargado el template antes, cookiecutter preguntará si deseas eliminarlo y re-descargarlo. Responde
ypara obtener la versión más reciente.
Durante la generación del proyecto, cookiecutter te hará varias preguntas. Aquí una guía:
- project_name: Nombre del proyecto (ej: "Mi API")
- project_slug: Nombre técnico sin espacios (ej: "mi-api")
- project_short_description: Descripción breve
- full_name: Tu nombre completo
- email: Tu correo electrónico
- version: Versión inicial (default: "0.1.0")
- project_type:
basic_api: API REST básica con endpoints CRUDml_api: API para modelos de Machine Learningai_rag_api: API para RAG (Retrieval Augmented Generation)
- use_database: ¿Usar base de datos?
yes: Incluye SQLAlchemy y modelosno: Sin base de datos
- database_type: Tipo de base de datos (si elegiste
yesarriba)postgresql: PostgreSQL (recomendado)sqlserver: SQL Serversqlite: SQLite (solo para desarrollo)none: Selecciona esto si pusistenoen use_database
- use_ai_services: ¿Usar servicios de IA?
- ai_provider: Proveedor de IA
none: Selecciona esto si pusistenoen use_ai_servicesopenai: OpenAI (GPT-4, GPT-3.5)gemini: Google Geminihuggingface: Hugging Face
- use_workers: ¿Usar workers para tareas asíncronas?
- worker_type: Tipo de worker
none: Selecciona esto si pusistenoen use_workerscelery: Celery (recomendado)rq: Redis Queue
- use_storage: ¿Usar almacenamiento de archivos?
- storage_type: Tipo de almacenamiento
none: Selecciona esto si pusistenoen use_storageminio: MinIO (S3-compatible)s3: AWS S3local: Almacenamiento local
- use_redis: ¿Usar Redis para caché?
- machine_learn_model_path: Ruta donde se guardará el modelo
- machine_learn_model_name: Nombre del archivo del modelo
- input_example_path: Ruta al archivo de ejemplo de entrada
project_type: basic_api
use_database: no
database_type: none
use_ai_services: no
ai_provider: none
use_workers: no
worker_type: none
use_storage: no
storage_type: none
use_redis: no
project_type: ml_api
use_database: yes
database_type: postgresql
use_ai_services: no
ai_provider: none
use_workers: no
worker_type: none
use_storage: yes
storage_type: minio
use_redis: yes
project_type: ai_rag_api
use_database: yes
database_type: postgresql
use_ai_services: yes
ai_provider: openai
use_workers: yes
worker_type: celery
use_storage: yes
storage_type: s3
use_redis: yes