Este servicio implementa un sistema RAG (Retrieval-Augmented Generation) que:
- Consulta un microservicio externo para obtener personas (opcional).
- Procesa una pregunta del usuario.
- Llama a un modelo LLM a través del HuggingFace Inference Router.
- Retorna una respuesta generada por el modelo, usando modo sin pensamiento interno cuando es compatible.
Diseñado para ser simple, modular, fácil de contenerizar en Docker, y usable en proyectos académicos o demostrativos sin necesidad de proveedores con billing activo.
Prueba simple para verificar la conexión con el modelo LLM.
Ejemplo de petición:
{
"consulta": "¿Qué fecha es hoy?"
}Ejemplo de respuesta:
{
"personas": [],
"answer": "28 de marzo de 2025",
"raw": {...}
}Endpoint principal usado por el frontend.
Procesa la consulta del usuario, obtiene los datos del microservicio de personas y devuelve solo la lista mapeada, lista para ser consumida por React.
{
"consulta": "texto de la consulta"
}Lista de personas mapeadas:
[
{
"id": 1,
"nombre": "Juan Pérez",
"edad": 30
}
]Si no hay personas:
[]500error interno si falla el RAG o el microservicio.
Endpoint completo de depuración (solo para pruebas).
Devuelve:
- Personas obtenidas
- Respuesta final del LLM
- Respuesta cruda del proveedor (HuggingFace Router)
Sirve para verificar que el modelo está respondiendo correctamente, que el pipeline está funcionando y que la integración con HuggingFace Router es correcta.
{
"consulta": "texto de la consulta"
}{
"personas": [
{ "id": 1, "nombre": "Juan Pérez" }
],
"answer": "La respuesta procesada del modelo",
"raw": { ... respuesta original del modelo ... }
}500si algún componente del pipeline falla.
/ragdebe ser usado por el frontend en producción./rag_fulles solo para desarrolladores (debug).- Ambos endpoints esperan el mismo modelo
QueryBody.
- Docker
- Archivo
.envubicado en la raíz del proyecto
docker build -t servicio-rag .docker run --env-file .env -p 8000:8000 servicio-ragEsto levantará el servicio en:
👉 http://localhost:8000
👉 http://localhost:8000/docs
PERSONS_SERVICE_URL=http://host.docker.internal:3002/persons
GEMINI_API_URL=https://router.huggingface.co/v1/chat/completions
GEMINI_API_KEY=hf_XXXXXXXXXXXXXXXXXXXXXXXXXXX
GEMINI_MODEL=openai/gpt-oss-20b:groq
app/
├── api/
│ ├── routes_rag.py
├── rag/
│ ├── service.py
│ ├── llm_client.py
│ ├── persons_client.py
│ ├── config.py
│ └── utils.py
├── main.py
Dockerfile
.env
README.txt
curl http://localhost:8000/check_llm
o vía navegador:
Si deseas agregar nuevas fuentes de datos o cambiar de modelo, puedo ayudarte con la extensión del proyecto.