El mundo de la IA está pasando rápidamente de usar modelos de un solo propósito a usar sistemas multiagente inteligentes y autónomos. Sin embargo, la creación de estos sistemas multiagente implica nuevos desafíos. Por ese motivo, hoy presentamos el Agent Development Kit (ADK) en Google Cloud NEXT 2025. El ADK es un marco de trabajo de código abierto de Google, diseñado para simplificar el desarrollo de extremo a extremo de la pila completa de sistemas de agentes y multiagente.
El ADK es el mismo marco de trabajo que permite a los agentes trabajar dentro de productos de Google, como Agentspace y el Paquete de interacción con los clientes (CES) de Google. Configuramos el ADK con código abierto porque queremos brindar a los desarrolladores herramientas potentes y flexibles para compilar en el panorama de agentes en rápida evolución. El ADK se diseñó para ser flexible, usar diferentes modelos y compilar agentes listos para la producción en diferentes entornos de desarrollo.
El ADK proporciona capacidades a lo largo de todo el ciclo de vida de desarrollo del agente:
secuenciales
, paralelos
, de bucle
) para canalizaciones de procesamiento predecibles, o aprovecha el enrutamiento dinámico impulsado por LLM (transferencia de LlmAgent
) para lograr un comportamiento adaptativo.Si bien te alentamos a explorar los ejemplos de los documentos, la idea central es aprovechar la simplicidad de Python. Tú defines la lógica de tu agente, las herramientas que puede usar y cómo debería procesar la información. El ADK proporciona la estructura para administrar el estado, orquestar llamadas a herramientas e interactuar con los LLM subyacentes. Aquí hay un ejemplo ilustrativo de un agente básico.
El código se puede encontrar en la guía de inicio rápido.
from google.adk.agents import LlmAgent
from google.adk.tools import google_Search
dice_agent = LlmAgent(
model="gemini-2.0-flash-exp", # Required: Specify the LLM
name="question_answer_agent", # Requdired: Unique agent name
description="Un agente asistente útil que pueda responder preguntas.",
instruction="""Responde la consulta usando google search""",
tools=[google_search], # Provide an instance of the tool
)
# you can run this by using adk web
En este ejemplo simple, se muestra la estructura básica. El ADK es muy eficaz cuando se compilan aplicaciones más complejas que involucran múltiples agentes, uso sofisticado de herramientas y orquestación dinámica, todo mientras se mantiene el control.
El ADK ofrece flexibilidad en la forma en que interactúas con tus agentes: CLI, IU web, servidor de API y API (Python). La forma en que defines tu agente (la lógica central dentro de agent.py
) es la misma, independientemente de cómo elijas interactuar con él. La diferencia radica en cómo inicias y administras la interacción. Encontrarás ejemplos de todo lo anterior en la documentación del ADK.
El ADK es muy eficaz cuando no solo se crean agentes individuales, sino que se crean sistemas colaborativos de multiagente que aprovechan las herramientas. Imagina crear un equipo de agentes especializados donde un agente principal puede delegar tareas en función de la conversación. El ADK facilita este trabajo a través de estructuras jerárquicas y enrutamiento inteligente.
Veamos un ejemplo ilustrativo: un WeatherAgent
que maneja las consultas meteorológicas, pero delega los saludos a un GreetingAgent especializado.
1. Define una herramienta: los agentes usan herramientas para realizar acciones. Aquí, nuestro WeatherAgent
necesita una herramienta para obtener datos meteorológicos. Definimos una función de Python; el ADK usa su docstring
para comprender cuándo y cómo usarla.
def get_weather(city: str) -> Dict:
# Best Practice: Log tool execution for easier debugging
print(f"--- Tool: get_weather called for city: {city} ---")
city_normalized = city.lower().replace(" ", "") # Basic input normalization
# Mock weather data for simplicity (matching Step 1 structure)
mock_weather_db = {
"newyork": {"status": "success", "report": "The weather in New York is sunny with a temperature of 25°C."},
"london": {"status": "success", "report": "It's cloudy in London with a temperature of 15°C."},
"tokyo": {"status": "success", "report": "Tokyo is experiencing light rain and a temperature of 18°C."},
"chicago": {"status": "success", "report": "The weather in Chicago is sunny with a temperature of 25°C."},
"toronto": {"status": "success", "report": "It's partly cloudy in Toronto with a temperature of 30°C."},
"chennai": {"status": "success", "report": "It's rainy in Chennai with a temperature of 15°C."},
}
# Best Practice: Handle potential errors gracefully within the tool
if city_normalized in mock_weather_db:
return mock_weather_db[city_normalized]
else:
return {"status": "error", "error_message": f"Sorry, I don't have weather information for '{city}'."}
2. Define los agentes y su relación: utilizamos LlmAgent
para crear nuestros agentes. Presta mucha atención a los campos de instrucción y descripción: el LLM depende en gran medida de estos para comprender los roles y tomar decisiones de delegación utilizando delegaciones automáticas para los subagentes.
greeting_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="greeting_agent",
instruction="Eres Greeting Agent. Tu ÚNICA tarea es dar una cálida bienvenida al usuario. " "No es necesario que converses ni realices otras tareas.",
# Crucial for delegation: Clear description of capability
description="Procesa saludos simples",
)
farewell_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="farewell_agent",
instruction="Eres Farewell Agent. Tu ÚNICA tarea es dar un cálido mensaje de despedida. "
"No realices ninguna otra acción.",
# Crucial for delegation: Clear description of capability
description="Procesa mensajes de despedida simples",
)
root_agent = Agent(
name="weather_agent_v2",
model="gemini-2.0-flash-exp",
description="Eres el principal Weather Agent y coordinas un equipo. - Tu tarea principal es proporcionar información del tiempo usando la herramienta `get_weather`. Procesa la respuesta de 'status' ('report' o 'error_message'). - Reglas de delegación: - Si el usuario envía un saludo simple (como 'Hola'), delega al `greeting_agent`. - Si el usuario envía un mensaje de despedida simple (como 'Adiós', 'Nos vemos'), delega al `farewell_agent`. - Procesa solicitudes de estado del tiempo usando `get_weather`. - Si hay otras consultas, indica claramente que no puedes procesarlas.",
tools=[get_weather], # Root agent still needs the weather tool
sub_agents=[greeting_agent, farewell_agent]
)
description
del agente actual y los campos description
de los agentes relacionados (agentes principales/subagentes definidos en la jerarquía).GreetingAgent
, inicia una transferencia.Las descripciones claras y distintas son vitales. El LLM las usa para enrutar las tareas de manera efectiva.
En esta configuración, si un usuario comienza con "Hola", el WeatherAgent
(si es el agente raíz que procesa la entrada) puede reconocer que no es una consulta meteorológica, ver que el GreetingAgent
es adecuado a través de su descripción y transferir automáticamente el control. Si el usuario pregunta "¿Cómo está el clima en Chicago?", el WeatherAgent
lo procesa directamente utilizando su herramienta get_weather
.
En este ejemplo, se demuestra cómo la estructura jerárquica del ADK y la delegación basada en descripciones te permiten crear aplicaciones multiagente organizadas, mantenibles y sofisticadas.
La creación de agentes inteligentes, como nuestro agente meteorológico, es fundamental, pero llevarlos de manera confiable a los usuarios implica cumplir los siguientes pasos fundamentales: una evaluación rigurosa y una implementación perfecta. Antes de publicarlo, es primordial garantizar que tu agente se comporte de manera predecible y correcta. Las herramientas de evaluación integradas del ADK se diseñaron precisamente para esto, lo que te permite probar sistemáticamente las rutas de ejecución y la calidad de la respuesta contra conjuntos de datos predefinidos, como evaluation.test.json
o test.json
. Puedes ejecutar estas comprobaciones con programación dentro de tus conjuntos de pruebas utilizando AgentEvaluator.evaluate()
. También puedes utilizar la evaluación directamente a través de la herramienta de línea de comandos ADK eval o a través de la IU web.
Una vez que estés conforme con el rendimiento, el ADK ofrece un camino claro y optimizado hacia la producción a través de la opción para implementar en cualquier tiempo de ejecución de contenedores o utilizando su integración con Vertex AI Agent Engine. Esto te permite aprovechar un tiempo de ejecución totalmente administrado, escalable y de nivel empresarial, completando el ciclo de vida de desarrollo y permitiéndote pasar de prototipos sofisticados a aplicaciones sólidas y ágiles listas para la producción.
A medida que exploras las posibilidades de crear sistemas multiagente con el ADK, es posible que te preguntes cómo encaja esto en el panorama más amplio de las herramientas de desarrollo de IA generativa de Google. Si bien hay una variedad de SDK y marcos disponibles, como el marco de trabajo Genkit, es útil comprender el enfoque relativo del ADK. A continuación, puedes ver una comparación rápida:
En última instancia, la mejor opción depende de los objetivos específicos de tu proyecto. Si estás compilando sistemas de agentes colaborativos intrincados dentro de un marco de trabajo bien definido, el ADK ofrece una solución poderosa. Para muchos otros proyectos de IA generativa que requieren flexibilidad y un amplio soporte de modelos, Genkit es una excelente opción.
Si bien el Agent Development Kit (ADK) ofrece flexibilidad para trabajar con varias herramientas, está optimizado para una integración perfecta dentro del ecosistema de Google Cloud, específicamente con los modelos Gemini y Vertex AI. Este diseño personalizado permite a los desarrolladores aprovechar al máximo las capacidades avanzadas de Gemini, como el razonamiento mejorado y el uso de herramientas que se encuentran en Gemini 2.5 Pro Experimental, y proporciona una vía directa y nativa para implementar estos agentes en el tiempo de ejecución de nivel empresarial totalmente administrado de Vertex AI para la escalabilidad.
Fundamentalmente, esta integración profunda se extiende a tu entorno empresarial más amplio; el ADK permite a los agentes conectarse directamente a sistemas y datos a través de más de 100 conectores preconstruidos, utilizar flujos de trabajo creados con Application Integration y acceder a datos almacenados en sistemas como AlloyDB, BigQuery y NetApp sin necesidad de duplicar datos.
Además, los agentes creados con el ADK pueden aprovechar de forma segura las inversiones de API existentes de tu organización administradas a través de Apigee, lo que mejorará aun más tus capacidades al aprovechar las interfaces establecidas.
Esta conectividad integral a través de modelos avanzados de IA, implementación escalable, diversas fuentes de datos y APIs existentes hace que el ADK sea excepcionalmente potente cuando se utiliza dentro del entorno de Google Cloud.
El Agent Development Kit (ADK) proporciona una base potente, flexible y de código abierto para crear la próxima generación de aplicaciones de IA. Aborda los desafíos centrales del desarrollo multiagente ya que ofrece lo siguiente:
Nos entusiasma mucho ver lo que desarrollas con el ADK.
Explora el código: Documentación oficial del ADK.