← volver a proyectos
Proyecto
Asesor de turismo — agente conversacional con mapa en vivo
Preguntás en lenguaje natural — "quiero ir a Hokkaido en primavera para ver los sakura" — y te devuelve puntos concretos en un mapa, cada uno con clima, tipo de cambio, distancia desde tu origen, contexto cultural e imagen: datos reales de 5 fuentes públicas, no inventados por el LLM. Continuación del pipeline Medallion, un escalón más arriba: agente con tool calling vía MCP, guardrails de seguridad y frontend mapa + chat de punta a punta.
Arquitectura
5 fuentes
→
Bronze (paralelo)
→
Silver
→
Gold (scoreada)
→
Agente (MCP)
→
Mapa + Chat
Bronze (5 fuentes en paralelo: Open-Meteo, Frankfurter, Wikivoyage/Wikimedia, OpenRouteService) → Silver → Gold ya scoreada → agente con tool calling MCP → frontend mapa + chat. Infra completa en Azure (Databricks Premium, ADLS Gen2, Key Vault) desplegada con Terraform; el Job corre en serverless compute.
Decisiones de ingeniería
- Los scores (clima, cambio, distancia) se calculan de forma determinística, nunca los inventa el LLM — el modelo solo redacta y elige dentro de la región, así el resultado es testeable y reproducible.
- 5 fuentes ingestadas en tasks Bronze en paralelo — APIs heterogéneas (clima, cambio, POIs, ruteo) modeladas como unidades independientes y reintentables, no un ingest monolítico.
- Tool calling vía MCP sobre la tabla Gold ya scoreada — el agente ve datos verificados y agregados, nunca la respuesta cruda de cada fuente.
- Guardrails de scoping acotan al agente al dominio de turismo — el input del usuario no puede redirigir qué tools se ejecutan.
Stack
Databricks
Azure
Terraform
MCP / Tool calling
FastAPI
Leaflet
El problema
Un agente de turismo que solo charla no sirve: necesita datos reales y verificables (clima, tipo de cambio, distancia, contexto cultural) elegidos por región — no un pin gigante sobre toda la isla — y guardrails para no salirse del dominio ni ejecutar lo que le pida el usuario dentro del prompt.
La solución
5 fuentes en Bronze (paralelo) → Silver → Gold ya scoreada, expuesta al agente como 5 tools vía MCP. Los 3 scores (clima, cambio, distancia) se calculan de forma determinística y testeable; el LLM entra recién para elegir puntos dentro de la región y redactar la respuesta, nunca para inventar el dato.
Qué evalúa esto
| Pregunta típica de entrevista | Dónde está la respuesta |
| ¿Cómo conectás un LLM a datos reales? | agente/mcp_client.py, 5 tools MCP sobre la tabla Gold ya scoreada |
| ¿Cómo evitás que el LLM invente datos? | Scores deterministicos en scoring.py; el LLM solo redacta y elige dentro de la región |
| ¿Cómo te protegés de prompt injection? | agente/session.py + guardrails de scoping de dominio |
| ¿Cómo integrás datos heterogéneos? | Medallion multi-fuente: 5 tasks Bronze en paralelo, no una sola fuente |
| ¿Cómo cerrás el círculo end-to-end? | frontend/index.html, mapa + chat sobre FastAPI, sin build |
| ¿Cómo manejás infra real (no Free Edition)? | Terraform sobre Azure: Databricks Premium, ADLS Gen2, Key Vault |