d328d801f43fabb6c2fe457b177e680b7af96c7a
- Add mock_chat_anthropic and mock_chat_deepseek fixtures to conftest.py - Update test_llm_factory to use monkeypatch and mock fixtures - Import ChatAnthropic and ChatDeepSeek in conftest.py for spec creation - Tests now pass without requiring ANTHROPIC_API_KEY or DEEPSEEK_API_KEY - Execution time reduced from failing after 0.12s to passing in 0.01s This change allows factory tests to run in isolation without external dependencies, making them consistent with the API test approach and suitable for any development environment or CI/CD pipeline.
NaliiaBot
Agente conversacional basado en LangGraph para gestión de agenda y atención al cliente.
Características
- Agente conversacional inteligente basado en LangGraph
- Sistema de herramientas (tools) con integración MCP
- Integración con modelos LLM (Anthropic Claude, DeepSeek)
- API FastAPI para interacción
- Checkpointing con PostgreSQL para persistencia de estado
- Deploy con Docker y Docker Compose
- Tests completos con pytest
Estructura del proyecto
NaliiaBot/
├── src/
│ ├── naliiabot/
│ │ ├── bot/
│ │ │ ├── agent/ # Agente LangGraph
│ │ │ │ ├── agent.py
│ │ │ │ └── schemas.py
│ │ │ ├── tools/ # Herramientas del agente
│ │ │ │ ├── naliia_tools.py
│ │ │ │ └── schemes.py
│ │ │ ├── factories/ # Factorías (LLM)
│ │ │ └── prompts/ # Prompts del agente
│ │ └── bot/
│ ├── naliiabotapi/ # API FastAPI
│ │ ├── main.py
│ │ ├── api/
│ │ │ ├── v1/endpoints/
│ │ │ └── v1/webhooks/
│ │ └── schemes/
│ ├── mcp/ # Servidor MCP
│ └── ui/ # Frontend
├── tests/
├── docker-compose.yaml # PostgreSQL + Bot
├── Dockerfile # Imagen del Bot
├── .dockerignore
├── pyproject.toml # Configuración Poetry
└── README.md
Requisitos
- Python 3.13+
- Docker y Docker Compose
- MCP server ejecutándose en
http://localhost:8001/mcp
Instalación
Docker (Recomendado)
# Configurar variables de entorno
cp .env.example .env
# Editar .env con tus configuraciones
# Iniciar servicios
docker-compose up --build
# Ver logs
docker-compose logs -f naliia_bot
Local (Desarrollo)
# Instalar dependencias con Poetry
poetry install
# Configurar variables de entorno
cp .env.example .env
# Editar .env con tus configuraciones
Uso
Docker
# Iniciar todos los servicios (PostgreSQL + Bot)
docker-compose up -d
# Detener servicios
docker-compose down
# Reconstruir imagen
docker-compose build --no-cache
Deploy
Build y Push a Registry
# Construir imagen
docker build -t gitea.onecluster.org/oneteam/naliia_bot:v1.0.0_pro .
# Push al registry
docker push gitea.onecluster.org/oneteam/naliia_bot:v1.0.0_pro
Desarrollo local
# Iniciar PostgreSQL
docker-compose up -d messages_db
# Iniciar API
task dev
Comandos disponibles
| Comando | Descripción |
|---|---|
task dev |
Iniciar servidor API en puerto 8010 |
task test |
Ejecutar todos los tests |
task test-cov |
Ejecutar tests con coverage |
Variables de entorno
| Variable | Descripción | Valor por defecto |
|---|---|---|
LLM_MODEL |
Modelo LLM a usar | deepseek |
POSTGRES_HOST |
Host de PostgreSQL | localhost |
POSTGRES_USER |
Usuario PostgreSQL | postgres |
POSTGRES_PASSWORD |
Contraseña PostgreSQL | postgres |
POSTGRES_DB |
Base de datos | messages |
Servicios
| Servicio | Puerto | Descripción |
|---|---|---|
messages_db |
5432 | PostgreSQL para checkpointing |
naliia_bot |
8010 | API FastAPI del bot |
Tools disponibles
El agente cuenta con las siguientes herramientas:
get_current_datetime- Consulta fecha y hora actualget_tomorrow_date- Calcula la fecha de mañanafind_service_centers- Lista centros de servicio disponiblesfind_products_and_services- Lista productos y serviciosschedule_appointment- Agenda una cita
API Endpoints
GET /- RaízGET /health- Health checkPOST /api/v1/chat- Enviar mensaje al agentePOST /api/v1/webhooks/chat- Webhook para callbacks
Tests
# Ejecutar todos los tests
pytest -v
# Tests con coverage
task test-cov
Desarrollo
El proyecto sigue una arquitectura basada en:
- LangGraph: Grafo de estados para el agente conversacional
- FastAPI: API REST sincrónica
- PostgreSQL: Persistencia de estado via checkpointing
- MCP: Modelo de contexto para herramientas externas
Licencia
MIT
Description
Languages
Python
97.6%
Jupyter Notebook
1.3%
Dockerfile
1.1%