ia · gcp
Agente conversacional (hackathon)
Agente con Google ADK y Gemini sobre Vertex AI, con el MCP Server de MongoDB y búsqueda vectorial.
- tipo
- proyecto propio
- rol
- Autor: diseño, desarrollo y despliegue
- stack
- google adk · gemini · vertex ai · mongodb atlas · cloud run
- resultado
- Agente funcional en tres idiomas, con repositorio público (MIT) y demo presentada al hackathon
Construí un agente conversacional que responde preguntas de negocio sobre un programa de embajadores, en castellano, euskera e inglés. Lo presenté al Google Cloud Rapid Agent Hackathon (track MongoDB), con repositorio público y demo en vídeo.
El punto de partida
El hackathon pedía un agente real, no un chatbot de plantilla, hecho con IA de Google Cloud. En el track que elegí, además, tenía que integrarse con MongoDB a través de su MCP Server. El proyecto debía ser nuevo, open source y con una demo de menos de 3 minutos.
Qué hice
Un copiloto para quien gestiona un programa de embajadores internos. Responde sin que la persona escriba una sola consulta: ranking por engagement, búsqueda semántica de publicaciones parecidas y generación de borradores.
Lo construí con Google ADK (parte de Vertex AI Agent Builder) y Gemini 2.5 Flash sobre Vertex AI, con MongoDB Atlas como base de datos.
Cómo lo hice
Lectura por MCP
El MongoDB MCP Server expone herramientas de consulta (aggregate, etc.) en solo lectura (--readOnly). Toda escritura pasa por una única herramienta propia y auditable, guardar_borrador. Así reduzco el radio de impacto de un agente autónomo.
RAG semántico
Atlas Vector Search, con embeddings text-multilingual-embedding-002 de 768 dimensiones, encuentra publicaciones similares. Ante preguntas de engagement, el agente devuelve siempre un top-5 con nombre, departamento y puntos, para que la respuesta sea accionable.
Idioma determinista
Con el prompt en castellano, Gemini respondía siempre en castellano. Un before_model_callback detecta el idioma de la última pregunta e inyecta la directiva justo antes de llamar al modelo. Lo verifiqué en los tres idiomas, con la terminología correcta.
Despliegue
Imagen Docker en Artifact Registry, servicio en Cloud Run y el connection string de Atlas en Secret Manager. Durante la evaluación usé --min-instances=1: el MCP Server podía dar timeout en su primera consulta tras arrancar en frío.
Resultado
El agente funciona de punta a punta: consulta por MCP, RAG semántico y escritura controlada.
- Tiempos: ~1 s con
aggregate(MCP), ~5 s en la búsqueda semántica y ~66 ms al guardar un borrador. - Repositorio público (MIT) sin secretos, con datos sembrados y ficticios.
- Reglas del hackathon cumplidas: track MongoDB completo, IA solo de Google Cloud, soporte multilingüe y vídeo con subtítulos en inglés.
Arquitectura
Usuario → agente ADK (root_agent con Gemini 2.5 Flash en Vertex AI, autenticado por ADC con la cuenta de servicio de Cloud Run) → MCP Server en solo lectura y Vector Search sobre MongoDB Atlas (cluster gratuito M0) → herramienta propia para escribir borradores.
Qué me llevo
En un agente con LLM, lo crítico se fuerza con código determinista; el prompt no basta. Y conviene anticipar los cold starts de las dependencias externas si alguien va a probar en frío.
Demo y código
El vídeo (2:50) muestra el ranking por engagement, la búsqueda semántica y la generación de borradores, en tiempo real y en varios idiomas.