Skip to content

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Repository files navigation

OllamaTextAnalyzer

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.

Características Principales

  • 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

Instalación

  1. Clonar el repositorio:
git clone https://github.com/FransuaLeonSanchez/AudioTextAnalyzer-Kybalion.git
cd OllamaTextAnalyzer
  1. Instalar UV (gestor de paquetes Python):
curl -LsSf https://astral.sh/uv/install.sh | sh
  1. 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
  1. Instalar drivers NVIDIA (Ubuntu):
sudo apt update && sudo apt install -y ubuntu-drivers-common && sudo ubuntu-drivers autoinstall && sudo reboot
  1. 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
  1. Instalar dependencias del proyecto:
make install
  1. 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=INFO

Nota: 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

Instalación local de 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

Instalación de drivers NVIDIA (Ubuntu)

sudo apt update && sudo apt install -y ubuntu-drivers-common && sudo ubuntu-drivers autoinstall && sudo reboot

NVIDIA Container Toolkit (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

Uso

Desarrollo Local

make start

Despliegue con Docker

Con Docker Compose:

sudo docker compose up -d --build

Con 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:latest

El servicio estará disponible en http://localhost:5002

Comandos Makefile Disponibles

make help      # Muestra ayuda
make install   # Instala dependencias Python
make start     # Inicia servidor local con uv
make format    # Formatea código con Ruff

Uso de la API

0. Salud y raíz

Verifica el estado del servicio y obtiene información básica.

curl -s http://localhost:5002/
curl -s http://localhost:5002/health

1. Preguntas y Respuestas (/test)

Responde 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"
}

2. Pregunta Libre (/question)

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"
}

Configuración Docker

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 /health verificado cada 30s

Healthcheck

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

Comandos Docker Útiles:

# 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

About

No description, website, or topics provided.

Resources

Stars

0 stars

Watchers

0 watching

Forks

Releases

Packages

Contributors

Languages