Traductor de mapudungún, español e inglés, basado en modelos ML y servicios Cloud.
Para levantar el servicio en un contenedor de Docker usando Docker Compose:
docker-compose up --build
Las dependencias y configuraciones necesarias son gestionadas automáticamente en el contenedor.
- Python 3.10 o superior
- Poetry
El servicio utiliza Poetry como administrador de paquetes y dependencias. Para instalarlo, ejecute uno de los siguientes comandos:
-
Linux, macOS, Windows (WSL):
curl -sSL https://install.python-poetry.org | python3 -
-
Windows (Powershell):
(Invoke-WebRequest -Uri https://install.python-poetry.org -UseBasicParsing).Content | py -
Para más información, visitar la documentación oficial de Poetry.
Para instalar las dependencias de desarrollo y de ejecución del servicio:
poetry install
Para desplegar el servicio, levantar el servidor uvicorn
en http://localhost:31415 y ejecutar el servicio:
poetry run uvicorn main:app --reload --host localhost --port 31415
Si el contenedor Docker (ver sección I. Despliegue en Docker) se está ejecutando, cambiar el puerto del comando anterior a uno disponible.
Una vez desplegado, el servicio queda alojado en http://localhost:31415
. Para
comprobar la conexión con el servicio, llamar al endpoint connection
:
curl -H "Content-Type: application/json" -X GET http://localhost:31415/connection
La documentación del servicio se genera automáticamente (mientras el servicio esté levantado correctamente) en dos formatos: Swagger UI y ReDoc.
-
Para acceder a la documentación provista por Swagger UI, entrar a http://localhost:31415/docs.
-
Para acceder a la documentación provista por ReDoc, entrar a http://localhost:31415/redoc.
En ambos casos, la documentación se puede descargar en formato OpenAPI.
[TODO]
El servicio está construido en base a Clean Architecture [1], y su estructura se desprende en las siguientes carpetas:
-
api
: Capa de interfaces, que contiene los controladores, y sus respectivas definiciones de endpoints, requests, responses y puertos de entrada y salida. -
core/kernel
: Clases abstractas de los componentes del núcleo del servicio. -
core/domain
: Capas de entidades (o modelos de datos), de casos de uso (o features) y la capa intermedia de repositorios (fuentes de datos remotas o locales) y validadores. -
infrastructure
: Drivers de la capa de infraestructura. -
utils
: Funciones de utilidad del servicio.
A cada archivo del proyecto se le adjunta como sufijo su correspondiente tipo,
según la capa a la que pertenece: feature
, repository
, source
,
controller
, request
, response
, entre otros. Excepción a esta regla son
las entidades, que llevan solo el nombre que las identifica.
Notar que la capa de infraestructura está compuesta por los drivers, frameworks
y herramientas que integran el servicio. La carpeta infrastructure
incluye
sólo los drivers; las configuraciones del framework web FastAPI y del resto de
herramientas, como las de Poetry y Docker, se encuentra en la raíz del
proyecto.
- Para agregar dependencias requeridas para la ejecución del servicio:
poetry add scipy
- Para agregar dependencias requeridas sólo para el desarrollo del servicio:
poetry add mypy --group dev
- Para eliminar una dependencia:
poetry remove tensorflow
[TODO]
[1] Martin, R. C., Grenning, J., & Brown, S. (2018). Clean architecture: A craftsman's guide to software structure and Design. Prentice Hall.