ADK 2.12: menos latencia y control fino sobre tools y workflows
Google ADK 2.12 reduce el tiempo de arranque en sesiones largas, suma puntos de control sobre lo que las tools devuelven al modelo y sobre qué nodos de un workflow requieren aprobación humana antes de ejecutarse.
40% menos tiempo hasta la primera respuesta
En sesiones largas, el tiempo que pasa entre que invocás al agente y la primera request real al modelo bajó un 40%. Las notas no detallan qué parte del pipeline se optimizó, pero el impacto es directo si tu agente arrastra historiales extensos: cada turno nuevo tarda menos en arrancar. Si tenés agentes conversacionales que acumulan contexto durante minutos u horas de uso, esto se nota en la latencia percibida por el usuario final, no solo en benchmarks internos. No necesitás cambiar código para beneficiarte: es una mejora de la ejecución interna del runtime.
Filtrar lo que una tool devuelve antes de que llegue al modelo
Hasta ahora, lo que una tool retornaba iba directo al contexto del modelo sin un punto de intercepción oficial. Con after_tool_callback podés interceptar y filtrar el output de una tool antes de que se le entregue al modelo. Esto sirve para casos como recortar respuestas muy largas, enmascarar datos sensibles que la tool trajo desde un sistema externo, o reformatear la salida para que el modelo la consuma mejor. Es el complemento natural de los callbacks que ya existían para antes y después del modelo, pero aplicado específicamente a la capa de tools.
Aprobación humana antes de ejecutar un nodo de workflow
El nuevo parámetro require_confirmation, disponible tanto en el decorador @node como en FunctionNode, permite marcar un nodo de workflow para que no se ejecute automáticamente: necesita confirmación humana primero. Esto es relevante para flujos con acciones irreversibles o costosas, como enviar un correo, ejecutar un pago, o modificar un registro en producción, donde antes tenías que construir esa pausa manualmente con lógica propia. Ahora es un flag declarativo sobre el nodo. Se suma a otros cambios de la misma área, como el soporte de autenticación y reanudación de credenciales dentro de _ToolNode, lo que indica que el foco de esta versión en workflows es dar más puntos de pausa y control intermedio.
Cuentas de servicio dedicadas al desplegar en Agent Engine
Ahora podés desplegar agentes a Agent Engine usando una cuenta de servicio personalizada, en lugar de depender de la cuenta por defecto del proyecto. Esto responde a un pedido antiguo (el issue referenciado lleva número bajo, #2951) y es relevante en cualquier organización donde el principio de mínimo privilegio importa: cada agente desplegado puede tener permisos acotados a lo que efectivamente necesita, en vez de heredar el alcance amplio de una cuenta compartida. Es un cambio puramente de configuración de despliegue, no de la lógica del agente en sí.
Endurecimiento de superficie expuesta y credenciales
Varios fixes de esta versión apuntan a reducir exposición accidental. Los endpoints mutantes de /dev y del agent builder ahora se restringen a clientes locales por defecto, así que si tenías un servidor de desarrollo accesible desde la red, esa superficie se cierra salvo que la habilites explícitamente. También se agregó cifrado de las credenciales de Google que se guardan en la sesión, y se corrigió un bug donde las credenciales de auth podían filtrarse hacia los argumentos de tool que ve el modelo. Son cambios defensivos, no afectan la API pública que usás a diario, pero vale revisarlos si corrés el dev server en un entorno compartido.
Más resiliencia en llamadas paralelas y resumibilidad
Cuando varias tools corren en paralelo, ahora se cancelan correctamente las tareas hermanas si una de ellas se cancela desde un hijo, y las tareas paralelas se cancelan y esperan (await) también ante BaseException y GeneratorExit, no solo ante excepciones comunes. Esto evita tools que quedan corriendo en segundo plano después de que el flujo principal ya abortó. En la misma línea, ahora podés resumir generaciones de Gemini que quedaron pausadas usando un continuation token, útil para flujos largos que se interrumpen y necesitan retomar exactamente donde quedaron en vez de reiniciar la llamada al modelo desde cero.
Python 3.15 y otros ajustes sueltos
ADK ahora instala y corre sobre Python 3.15, así que si tu stack ya migró podés actualizar sin esperar un parche de compatibilidad. También se agregó la opción --state_file a adk run, para cargar un estado inicial desde archivo al correr el agente por CLI, y adk create ahora imprime los próximos pasos sugeridos después de crear un proyecto nuevo. Son cambios menores comparados con los anteriores, pero reducen fricción si trabajás principalmente desde la línea de comandos.
What you get
Si tenés agentes con sesiones largas, la reducción del 40% en tiempo de arranque se nota sin tocar código.
after_tool_callback te da un punto de control que antes no existía para filtrar o sanear lo que una tool devuelve al modelo.
require_confirmation convierte la pausa humana en workflows en un flag declarativo, no en lógica custom.
Las cuentas de servicio dedicadas para Agent Engine y el bloqueo por defecto de endpoints /dev son mejoras de seguridad que conviene revisar antes de desplegar.
Si tu stack ya corre Python 3.15, ADK 2.12 es compatible desde ya.
Want a class on this?
If enough people ask for it, it goes on the schedule. No email, no name needed.