Google ADK 2.13: clasificadores sin LLM, voz y MongoDB
ADK 2.13 estabiliza 12 funciones experimentales, suma un clasificador que enruta workflows sin llamar a un LLM, habilita audio en vivo con barge-in y agrega MongoDB como backend de sesiones y memoria.
Doce funciones experimentales pasan a estable
Si tenías agentes en producción usando funciones marcadas como experimentales, esta release reduce el riesgo: 12 de esas funciones fueron promovidas a estable. Esto importa porque las funciones experimentales pueden cambiar de API sin previo aviso entre versiones menores, algo que complica mantener agentes en producción. Con la promoción a estable, esas 12 funciones quedan bajo las garantías normales de compatibilidad del proyecto. Las notas remiten al registro de funciones (feature registry) para ver el detalle de cuáles son, así que si tu código usa alguna, vale la pena revisar esa lista y quitar los warnings o flags de opt-in que ya no necesitas. También se agregó la variable de entorno ADK_SUPPRESS_EXPERIMENTAL_FEATURE_WARNINGS para silenciar avisos de las funciones que sigan siendo experimentales.
Enrutar workflows sin pasar por un LLM
Hasta ahora, clasificar la intención de un mensaje para decidir qué rama de un workflow ejecutar normalmente significaba una llamada a un LLM, con el costo y la latencia que eso implica. ADK 2.13 introduce TypesafeClassifier y ClassifierNode, que usan modelos Jev de TypeSafe para devolver probabilidades calibradas en un solo forward pass, mucho más rápido que un LLM. Esto te sirve cuando necesitas enrutar tráfico entre agentes o herramientas y la decisión es relativamente simple de clasificar, sin justificar el costo de una llamada a un modelo generativo completo. Junto con esto se agregó BaseClassifier con tipos de pregunta/respuesta tipados, y LlmClassifier para los casos donde sí quieres mantener la clasificación basada en LLM pero con la misma interfaz. La combinación te da flexibilidad para elegir el clasificador según el caso sin reescribir el nodo de routing.
Audio en vivo con interrupciones naturales
CascadeLiveConnection ahora soporta barge-in, es decir, que el usuario pueda interrumpir al agente mientras este está hablando, algo central para que una conversación de voz se sienta natural en lugar de un intercambio de turnos rígido. Esto viene acompañado de integración de speech-to-text y text-to-speech de Gemini directamente en CascadeLive, lo que reduce la necesidad de conectar servicios externos de voz por separado. También se agregaron helpers para empaquetar y desempaquetar frames visuales con ZIP_STORED dentro del módulo live. Si estás construyendo un agente de voz en tiempo real, esto cubre una limitación real de los flujos anteriores, donde el agente no podía ser interrumpido a mitad de una respuesta hablada.
MongoDB como backend de sesiones y memoria
MongoDbSessionService persiste las sesiones en MongoDB y permite compartirlas entre réplicas del runner, lo que resuelve un problema típico de escalar agentes horizontalmente: si cada réplica mantiene su propio estado en memoria, un usuario puede perder contexto según a qué instancia caiga su request. Junto con esto llega MongoDbMemoryService, que agrega memoria de largo plazo sin necesitar un modelo de embeddings: recupera turnos pasados por coincidencia de palabras clave, y funciona en cualquier despliegue de MongoDB sin necesitar un índice vectorial. Esto baja la barrera de entrada para equipos que ya operan MongoDB pero no quieren o no pueden configurar búsqueda vectorial en Atlas. Ambos servicios están marcados como experimentales, así que conviene tratarlos como tal en producción. También se agregó un método delete_memory en BaseMemoryService, disponible para cualquier implementación de memoria, no solo MongoDB.
MongoDbToolset listo para Agent Engine
Antes, desplegar un toolset de MongoDB a Agent Engine implicaba empaquetar la cadena de conexión junto con el código del agente, lo que mezcla credenciales con artefactos de despliegue. Ahora MongoDbToolset es picklable y las credenciales de MongoDB se mantienen fuera del paquete que se sube a Agent Engine. Además, se agregó soporte para Atlas Automated Embedding, que permite que Atlas genere los embeddings de las consultas de búsqueda del lado del servidor, sin que tu agente tenga que hacer una llamada a un modelo de embeddings de Google ni manejar esas credenciales. En conjunto, esto simplifica el modelo de seguridad de un despliegue que usa MongoDB como fuente de búsqueda semántica.
Hasta 8x más rápido en agentes con modelo string
Las notas reportan hasta 8 veces más velocidad en turnos de ejecución para agentes que definen el modelo como string, además de menor overhead al cargar eventos. Esto es relevante si configuras tus agentes pasando el nombre del modelo como texto en vez de una instancia ya construida, un patrón común en configuraciones declarativas o cargadas desde archivos. No se detalla el mecanismo interno del fix, pero el impacto práctico es directo: turnos más rápidos sin cambiar cómo defines el agente, lo que se nota especialmente en workflows con muchas invocaciones encadenadas donde el overhead por turno se acumula.
Breaking change: nuevo esquema de telemetría por defecto
ADK 2.13 cambia el esquema de telemetría por defecto a OpenTelemetry GenAI v2 (otel_semconv_1_44), lo que elimina el span call_llm que existía bajo el esquema anterior. Si tienes dashboards, alertas o queries construidas sobre ese span, van a dejar de funcionar al actualizar. Para mantener el comportamiento anterior mientras migras, puedes fijar la variable de entorno ADK_TELEMETRY_SCHEMA_VERSION_OPT_IN en otel_semconv_1_36. Esta release también suma piezas relacionadas a telemetría: conteo de compactaciones de conversación por workflow, contenido de llamadas a herramientas reportado bajo los atributos semconv correspondientes, y contenido de LLM elidido ahora servible a la ADK Web UI. Si usas observabilidad en producción, este es el cambio que requiere revisión antes de actualizar, no uno que puedas ignorar.
Qué te llevas
12 funciones experimentales pasaron a estable: revisa el feature registry para limpiar flags y warnings que ya no necesitas.
TypesafeClassifier y ClassifierNode permiten enrutar workflows sin llamar a un LLM, usando modelos Jev con probabilidades calibradas en un solo forward pass.
CascadeLive ahora soporta barge-in y STT/TTS de Gemini, cubriendo la interrupción natural en conversaciones de voz en tiempo real.
MongoDbSessionService y MongoDbMemoryService (experimentales) permiten estado compartido entre réplicas y memoria por keyword sin necesitar índice vectorial.
El cambio a OpenTelemetry GenAI v2 es breaking: si dependes del span call_llm, fija ADK_TELEMETRY_SCHEMA_VERSION_OPT_IN=otel_semconv_1_36 antes de actualizar.
¿Quieres una clase de esto?
Si varias personas lo piden, entra al programa. No hace falta dejar mail ni nombre.