Saltar al contenido
Gontzal Bilbao
← proyectos

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.