Loading repository data…
Loading repository data…
devsebastian44 / repository
API REST para entrenamiento y predicción con ML
A transparent discovery signal based on current public GitHub metadata.
This score does not audit code, security, maintainers, documentation quality, or suitability. Verify the repository and its current documentation before adoption.
ModelForge API es una API REST de Machine Learning construida sobre FastAPI y scikit-learn, diseñada para exponer capacidades de entrenamiento y predicción de modelos ML a través de endpoints HTTP con validación estricta de datos mediante Pydantic.
El proyecto implementa una arquitectura de servicios en capas donde la lógica de negocio de ML
— preprocesamiento de datos, selección de algoritmos, cálculo de métricas y persistencia de
modelos — está completamente desacoplada de la capa de transporte HTTP. Los modelos entrenados
se serializan con joblib y se persisten en disco dentro de storage/models/, permitiendo
reutilizarlos en predicciones posteriores sin necesidad de reentrenamiento.
Este proyecto parece orientado a servir como backend de ML reutilizable, integrándose con
sistemas de datos externos o frontends analíticos mediante su API versionada (/api/v1), y
cuenta con documentación interactiva generada automáticamente por FastAPI (Swagger UI y ReDoc).
model_id./docs (Swagger UI) y /redoc (ReDoc)./health para monitoreo de disponibilidad.python-multipart para potencial carga de archivos.pydantic-settings y python-dotenv.| Capa | Tecnología |
|---|---|
| Framework HTTP | FastAPI |
| Servidor ASGI | Uvicorn (con extras [standard]: websockets, HTTP/2) |
| Validación / Schemas | Pydantic v2 + pydantic-settings |
| Motor ML | scikit-learn |
| Manipulación de datos | pandas, numpy |
| Persistencia de modelos | joblib |
| Carga de archivos | python-multipart |
| Variables de entorno | python-dotenv |
| Testing | pytest + pytest-cov + httpx |
| Lenguaje | Python 3.9+ |
>=3.9# 1. Clonar el repositorio
git clone https://github.com/devsebastian44/ModelForge-API.git
cd ModelForge-API
# 2. Crear y activar entorno virtual
python -m venv venv
# Linux / macOS
source venv/bin/activate
# Windows
venv\Scripts\activate
# 3. Instalar dependencias
pip install -r requirements.txt
# 4. Configurar variables de entorno
cp .env.example .env
# Editar .env según tu entorno
uvicorn src.main:app --reload --host 0.0.0.0 --port 8000
uvicorn src.main:app --host 0.0.0.0 --port 8000 --workers 4
Una vez iniciado el servidor, accede a:
http://localhost:8000/docshttp://localhost:8000/redochttp://localhost:8000/health| Método | Ruta | Descripción |
|---|---|---|
POST | /api/v1/training | Entrenar un nuevo modelo ML |
POST | /api/v1/prediction | Realizar predicción con un modelo guardado |
GET | /api/v1/models | Listar todos los modelos entrenados |
GET | /api/v1/models/{model_id} | Obtener metadatos de un modelo específico |
DELETE | /api/v1/models/{model_id} | Eliminar un modelo persistido |
GET | /health | Estado del servicio |
curl -X POST "http://localhost:8000/api/v1/training" \
-H "Content-Type: application/json" \
-d '{
"dataset": [
{"feature1": 1.2, "feature2": 3.4, "target": 0},
{"feature1": 2.1, "feature2": 4.5, "target": 1},
{"feature1": 3.3, "feature2": 2.2, "target": 0}
],
"target_column": "target",
"problem_type": "classification",
"algorithm": "random_forest",
"hyperparameters": {"n_estimators": 100, "max_depth": 5}
}'
curl -X POST "http://localhost:8000/api/v1/prediction" \
-H "Content-Type: application/json" \
-d '{
"model_id": "model_20240125_123456",
"data": [
{"feature1": 1.5, "feature2": 3.2}
]
}'
# Instalar dependencias de testing
pip install pytest pytest-cov httpx
# Ejecutar suite completa
pytest tests/ -v
# Con reporte de cobertura
pytest tests/ --cov=src --cov-report=html
ModelForge-API/
│
├── src/ # Paquete principal de la aplicación
│ ├── main.py # Entry point FastAPI: instancia de app, CORS, routers
│ ├── config.py # Configuración centralizada con pydantic-settings
│ │
│ ├── api/ # Capa de transporte HTTP
│ │ └── v1/
│ │ └── endpoints/ # Routers FastAPI por dominio
│ │ ├── training.py # Endpoint POST /training
│ │ ├── prediction.py # Endpoint POST /prediction
│ │ └── models.py # Endpoints GET/DELETE /models
│ │
│ ├── models/ # Schemas Pydantic (contratos de la API)
│ │ ├── training.py # TrainingRequest, TrainingResponse
│ │ ├── prediction.py # PredictionRequest, PredictionResponse
│ │ └── model_info.py # ModelInfo, ModelListResponse
│ │
│ ├── services/ # Capa de lógica de negocio ML
│ │ ├── ml_service.py # Orquestador principal: entrena y predice
│ │ ├── data_processor.py # Preprocesamiento y validación del dataset
│ │ ├── model_manager.py # Persistencia/carga de modelos con joblib
│ │ └── metrics_service.py # Cálculo de métricas por tipo de problema
│ │
│ └── core/ # Utilidades transversales
│ └── exceptions.py # Excepciones personalizadas y manejadores HTTP
│
├── tests/ # Suite de tests
│ └── test_api.py # Tests de integración con httpx TestClient
│
├── storage/
│ └── models/ # Almacenamiento de modelos serializados (.joblib)
│
├── .env.example # Plantilla de variables de entorno
├── requirements.txt # Dependencias de producción
└── LICENSE # Licencia MIT
core/exceptions.py
previenen que errores internos del motor ML expongan stack traces al cliente..joblib), no los datasets de entrenamiento originales..env: las configuraciones sensibles de producción se
mantienen fuera del código fuente mediante python-dotenv y pydantic-settings.Para despliegues en producción se recomienda añadir autenticación mediante API keys o JWT, configurar HTTPS y limitar los orígenes CORS al dominio del cliente.
Basado en la arquitectura actual detectada en el código, estas son las evoluciones técnicas sugeridas:
BackgroundTasks de FastAPI o Celery para entrenar
modelos pesados sin bloquear la respuesta HTTP.python-multipart).Contributions are what make the open source community such an amazing place to learn, inspire, and create. Any contributions you make are greatly appreciated.
If you have a suggestion that would make this better, please fork the repo and create a pull request. You can also simply open an issue with the tag "enhancement". Don't forget to give the project a star! Thanks again!
git checkout -b feature/AmazingFeature)git commit -m 'feat: Add some AmazingFeature')git push origin feature/AmazingFeature)[!IMPORTANT] This project is for educational and ethical cybersecurity purposes only.
The code, datasets, and machine learning models in this repository are provided "as-is" for learning, research, and portfolio demonstration. Users must ensure that any usage of this software complies with applicable local, state, and federal laws. The authors assume no liability and are not responsible for any misuse or damage caused by this program.
Este proyecto está bajo la licencia MIT.
Licencia detectada directamente desde el archivo
LICENSEen la raíz del repositorio.
Sebastian Zhunaula — @devsebastian44
Desarrollador full-stack e ingeniero de datos con en