API REST para análisis y procesamiento de texto utilizando modelos LLM a través de Ollama. El sistema proporciona herramientas para análisis de texto con sistema de preguntas y respuestas contextual y prompts libres.
- Sistema Q&A: Procesamiento de preguntas sobre un texto con respuestas concisas
- Preguntas Libres: Procesamiento de prompts libres con contexto opcional
- Monitoreo de Recursos: Seguimiento en tiempo real del uso de GPU y RAM
- Soporte GPU: Optimizado para ejecución con NVIDIA GPUs
- Clonar el repositorio:
git clone https://github.com/FransuaLeonSanchez/AudioTextAnalyzer-Kybalion.git
cd OllamaTextAnalyzer- Instalar UV (gestor de paquetes Python):
curl -LsSf https://astral.sh/uv/install.sh | sh- Instalar Docker y Docker Compose (Ubuntu):
# Limpiar índices si ves "Hash sum mismatch"
sudo apt clean && sudo rm -rf /var/lib/apt/lists/* && sudo apt update
# Requisitos y keyring oficial
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release; echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instalar Docker Engine y Compose (plugin)
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
# Verificar
docker --version && docker compose version
# (Opcional) Usar Docker sin sudo tras re‑login
sudo usermod -aG docker $USER- Instalar drivers NVIDIA (Ubuntu):
sudo apt update && sudo apt install -y ubuntu-drivers-common && sudo ubuntu-drivers autoinstall && sudo reboot- Instalar NVIDIA Container Toolkit (para Docker con GPU):
curl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/amd64 /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart docker- Instalar dependencias del proyecto:
make install- Configurar el archivo
.env(incluido en el repositorio):
HOST=0.0.0.0
PORT=5000
DEBUG=False
MODEL_NAME=llama3.3:70b-instruct-q4_K_M
LOG_LEVEL=INFONota: El archivo .env está incluido en el repositorio y contiene la configuración base. Puedes modificar MODEL_NAME para usar diferentes modelos como:
llama3.1:8b-instruct-q8_0(menor uso de recursos)- Otros modelos disponibles en Ollama
# Limpiar índices si ves "Hash sum mismatch"
sudo apt clean && sudo rm -rf /var/lib/apt/lists/* && sudo apt update
# Requisitos y keyring oficial
sudo apt install -y ca-certificates curl gnupg
sudo install -m 0755 -d /etc/apt/keyrings
curl -fsSL https://download.docker.com/linux/ubuntu/gpg | sudo gpg --dearmor -o /etc/apt/keyrings/docker.gpg
sudo chmod a+r /etc/apt/keyrings/docker.gpg
echo "deb [arch=$(dpkg --print-architecture) signed-by=/etc/apt/keyrings/docker.gpg] https://download.docker.com/linux/ubuntu $(. /etc/os-release; echo "$VERSION_CODENAME") stable" | sudo tee /etc/apt/sources.list.d/docker.list > /dev/null
# Instalar Docker Engine y Compose (plugin)
sudo apt update
sudo apt install -y docker-ce docker-ce-cli containerd.io docker-buildx-plugin docker-compose-plugin
sudo systemctl enable --now docker
# Verificar
docker --version && docker compose version
# (Opcional) Usar Docker sin sudo tras re‑login
sudo usermod -aG docker $USERsudo apt update && sudo apt install -y ubuntu-drivers-common && sudo ubuntu-drivers autoinstall && sudo rebootcurl -fsSL https://nvidia.github.io/libnvidia-container/gpgkey | sudo gpg --dearmor -o /usr/share/keyrings/nvidia-container-toolkit-keyring.gpg
echo "deb [signed-by=/usr/share/keyrings/nvidia-container-toolkit-keyring.gpg] https://nvidia.github.io/libnvidia-container/stable/deb/amd64 /" | sudo tee /etc/apt/sources.list.d/nvidia-container-toolkit.list
sudo apt-get update && sudo apt-get install -y nvidia-container-toolkit
sudo nvidia-ctk runtime configure --runtime=docker
sudo systemctl restart dockermake startCon Docker Compose:
sudo docker compose up -d --buildCon Docker Run:
sudo docker run -d \
--name docker_ollamatextanalyzer_l4 \
--gpus '"device=1"' \
-p 5002:5000 \
--restart always \
--health-cmd "curl -f http://localhost:5000/health || exit 1" \
--health-interval 30s \
--health-timeout 10s \
--health-start-period 45s \
--health-retries 3 \
ollamatextanalyzer_l4:latestEl servicio estará disponible en http://localhost:5002
make help # Muestra ayuda
make install # Instala dependencias Python
make start # Inicia servidor local con uv
make format # Formatea código con RuffVerifica el estado del servicio y obtiene información básica.
curl -s http://localhost:5002/
curl -s http://localhost:5002/healthResponde una pregunta específica sobre el texto proporcionado.
curl -X POST http://localhost:5002/test \
-H "Content-Type: application/json" \
-d '{
"text": "El Sol es una estrella de tipo G que se encuentra en el centro del Sistema Solar. Es la fuente principal de energía y luz para la Tierra.",
"question": "¿Qué tipo de estrella es el Sol?"
}'Respuesta:
{
"answer": "El Sol es una estrella de tipo G.",
"execution_time": "0.85s",
"gpu_usage": [...],
"ram_usage": {...},
"llm_model": "llama3.3:70b-instruct-q4_K_M"
}Permite enviar un prompt libre con contexto opcional. Si se proporciona el campo text, el prompt se procesará en base a ese texto.
Sin texto contextual:
curl -X POST http://localhost:5002/question \
-H "Content-Type: application/json" \
-d '{
"prompt": "Explica brevemente qué es el aprendizaje por refuerzo"
}'Con texto contextual:
curl -X POST http://localhost:5002/question \
-H "Content-Type: application/json" \
-d '{
"prompt": "¿Cuál es el tema principal?",
"text": "La inteligencia artificial está revolucionando la forma en que vivimos y trabajamos. Desde asistentes virtuales hasta vehículos autónomos, la IA está presente en casi todos los aspectos de nuestra vida cotidiana."
}'Respuesta (ejemplo):
{
"answer": "El aprendizaje por refuerzo es un paradigma donde un agente aprende a tomar decisiones mediante recompensas y castigos para maximizar una recompensa acumulada.",
"execution_time": "0.92s",
"gpu_usage": [...],
"ram_usage": {...},
"llm_model": "llama3.3:70b-instruct-q4_K_M"
}La configuración actual utiliza:
- Puerto: 5002 (externo) → 5000 (interno)
- GPU: Device 1 (configurable vía
--gpus '"device=1"') - Modelo: Configurable vía
.env(por defecto: llama3.3:70b-instruct-q4_K_M) - Reinicio: Automático (
--restart always) - Contenedor:
docker_ollamatextanalyzer_l4 - Imagen:
ollamatextanalyzer_l4:latest - Healthcheck: Endpoint
/healthverificado cada 30s
El sistema incluye verificación automática de salud:
- Endpoint:
/health(verificación básica de disponibilidad) - Intervalo: 30 segundos
- Timeout: 10 segundos
- Período inicial: 45 segundos (tiempo de espera para inicio)
- Reintentos: 3 intentos antes de marcar como unhealthy
# Construir imagen
sudo docker build -t ollamatextanalyzer_l4:latest .
# Ver logs del contenedor
sudo docker logs docker_ollamatextanalyzer_l4
# Ver estado y healthcheck
sudo docker ps --format "table {{.Names}}\t{{.Status}}\t{{.Ports}}"
# Verificar healthcheck manualmente
curl -f http://localhost:5002/health
# Detener contenedor
sudo docker stop docker_ollamatextanalyzer_l4
# Remover contenedor
sudo docker rm docker_ollamatextanalyzer_l4
# Reiniciar contenedor
sudo docker restart docker_ollamatextanalyzer_l4