Gontzal Bilbao

Gontzal Bilbao

  • Email Email
  • Ubicación País Vasco, ES

Agente IA conversacional con Google ADK, Gemini y MongoDB


Agente conversacional multilingüe (es/eu/EN) construido con Google ADK (Agent Development Kit, parte de Vertex AI Agent Builder) y Gemini 2.5 Flash sobre Vertex AI. Integra el MCP Server de MongoDB en solo lectura, hace RAG con Atlas Vector Search y expone una herramienta de escritura controlada. Lo presenté al Google Cloud Rapid Agent Hackathon (track MongoDB).

Google ADK Gemini 2.5 Flash Vertex AI MongoDB Atlas MCP Server Vector Search Cloud Run Python

Demo en vídeo (2:50)

El agente resuelve consultas sobre un programa de personas embajadoras: ranking por engagement, búsqueda semántica de publicaciones similares y generación de borradores, todo en tiempo real y en varios idiomas.

Ver demo en YouTube -> Repositorio (MIT)

El reto

El Google Cloud Rapid Agent Hackathon pedía un agente real (no un chatbot de plantilla), construido con IA de Google Cloud y, en el track que elegí, integrado con MongoDB a través de su MCP Server. El proyecto tenía que ser nuevo, con repositorio público open source y una demo grabada de menos de 3 minutos.

La idea: un copiloto conversacional para quien gestiona un programa de embajadores internos, capaz de responder preguntas de negocio sobre los datos sin que la persona tenga que escribir una sola consulta.

Arquitectura del agente

  • Framework: Google ADK, con un root_agent sobre el modelo gemini-2.5-flash.
  • LLM: Gemini 2.5 Flash vía Vertex AI, autenticado por ADC con la service account de Cloud Run.
  • Datos: MongoDB Atlas (cluster gratuito M0), con colecciones de embajadores, campañas, publicaciones y entregas.
  • Integración MCP: el MongoDB MCP Server expone herramientas de consulta (aggregate, etc.) en solo lectura (--readOnly).
  • RAG: Atlas Vector Search con embeddings text-multilingual-embedding-002 (768 dimensiones) para búsqueda semántica de publicaciones similares.
  • Escritura controlada: una única herramienta propia (guardar_borrador) que crea borradores; el resto del acceso es de lectura.

Decisiones técnicas clave

  • MCP en solo lectura: el agente nunca toca los datos por la vía MCP; toda escritura pasa por una herramienta propia y auditable. Así reduzco el radio de impacto de un agente autónomo.
  • Multilingüe determinista: el prompt en castellano hacía que Gemini respondiera siempre en castellano. Lo resolví con un before_model_callback que detecta el idioma de la última pregunta (es/eu/EN) e inyecta la directiva de idioma justo antes de llamar al modelo. Lo verifiqué en los tres idiomas, con la terminología correcta.
  • Ranking top-5: ante preguntas de engagement el agente devuelve siempre un ranking (nombre + departamento + puntos), no solo el primero, para que la respuesta sea accionable.
  • Datos ficticios: la demo usa datos sembrados (no reales), lo apropiado para un entorno de concurso público.

Despliegue

Empaqueté el agente en una imagen Docker, la subí a Artifact Registry y lo desplegué en Cloud Run, con el connection string de Atlas en Secret Manager. Para la ventana de evaluación usé --min-instances=1, que evita el cold start del MCP Server (su primera consulta tras un periodo de inactividad puede dar timeout mientras arranca en frío).

  • aggregate (MCP): ~1s.
  • búsqueda semántica (Vector Search): ~5s.
  • guardar borrador: ~66ms.

Resultado

  • Agente funcional probado de extremo a extremo: consulta MCP, RAG semántico y escritura controlada.
  • Repositorio público (MIT) sin secretos y demo grabada disponible en YouTube.
  • Cumplimiento verificado de las reglas del hackathon: track MongoDB completo, IA exclusivamente de Google Cloud, soporte multilingüe y vídeo con subtítulos en inglés.

Lecciones aprendidas

  • En agentes con LLM, forzar el comportamiento crítico con código determinista (callbacks) es más fiable que dejarlo todo en manos del prompt.
  • El patrón MCP en lectura + herramienta propia para escribir da una superficie de seguridad clara en agentes autónomos.
  • Los cold starts de dependencias externas (aquí, el MCP Server) conviene anticiparlos cuando un jurado o un usuario va a probar en frío.

¿Quieres explorar agentes IA con datos reales para tu equipo?

Diseñar agentes que consulten tus datos de forma segura (MCP, RAG, herramientas controladas) es un área en la que me gusta trabajar. El código del proyecto es público.

Ver repositorio en GitHub -> Comentar un caso similar