O mundo da IA está avançando rapidamente, deixando para trás os modelos de finalidade única e caminhando rumo a sistemas multiagentes autônomos e inteligentes. No entanto, a criação desses sistemas traz novos desafios. É por isso que, hoje, apresentamos o Agent Development Kit (ADK) no Google Cloud NEXT 2025, um novo framework de código aberto do Google projetado para simplificar o desenvolvimento de pilha completa de agentes e sistemas multiagentes, de ponta a ponta. O ADK permite que desenvolvedores como você criem aplicativos agênticos prontos para produção com mais flexibilidade e controle preciso.
O ADK é o mesmo framework que habilita os agentes nos produtos do Google, como o Agentspace e o Google Customer Engagement Suite (CES). Com o ADK de código aberto, pretendemos fornecer aos desenvolvedores ferramentas eficientes e flexíveis para a criação no dinâmico cenário dos agentes. O ADK foi projetado para ser flexível, usar diferentes modelos e criar agentes prontos para produção para diferentes ambientes de implantação.
O ADK fornece recursos em todo o ciclo de vida de desenvolvimento de agentes:
Sequential
, Parallel
, Loop
) para pipelines previsíveis ou use o roteamento dinâmico orientado por LLM (transferência de LlmAgent
) para comportamento adaptativo.Embora seja recomendado explorar os exemplos nos documentos, a ideia central é a simplicidade do código Python. Você define a lógica do agente, as ferramentas que ele pode usar e como ele deve processar as informações. O ADK fornece a estrutura para gerenciar o estado, orquestrar chamadas de ferramentas e interagir com os LLMs subjacentes. Segue um exemplo ilustrativo de um agente básico.
O código pode ser encontrado no guia de início 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="A helpful assistant agent that can answer questions.",
instruction="""Respond to the query using google search""",
tools=[google_search], # Provide an instance of the tool
)
# you can run this by using adk web
Esse exemplo simples mostra a estrutura básica. O ADK realmente se destaca na criação de aplicativos mais complexos com vários agentes, uso de ferramentas sofisticadas e orquestração dinâmica, tudo isso mantendo o controle.
O ADK oferece flexibilidade na maneira como você interage com os agentes: CLI, IU da Web, servidor de API e API (Python). A forma como você define o agente (a lógica central do agent.py
) é a mesma, independentemente de como você optar por interagir com ele. A diferença está em como você inicia e gerencia a interação. Veja exemplos de tudo isso na documentação do ADK.
O ADK realmente se destaca quando você vai além de agentes únicos e começa a criar sistemas colaborativos multiagentes que usam ferramentas. Imagine criar uma equipe de agentes especializados na qual um agente principal possa delegar tarefas com base na conversa. O ADK facilita isso por meio de estruturas hierárquicas e roteamento inteligente.
Vejamos um exemplo ilustrativo: um WeatherAgent
que lida com consultas meteorológicas, mas delega saudações a um GreetingAgent especializado.
1. Defina uma ferramenta: os agentes usam ferramentas para realizar ações. Aqui, nosso WeatherAgent
precisa de uma ferramenta para buscar dados meteorológicos. Definimos uma função Python; o ADK usa sua docstring
para entender quando e como usá-la.
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. Defina os agentes e seu relacionamento: usamos o LlmAgent
para criar nossos agentes. Preste muita atenção nos campos de instrução e descrição: o LLM depende muito deles para entender os papéis e tomar decisões de delegação usando delegações automáticas para agentes secundários.
greeting_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="greeting_agent",
instruction="You are the Greeting Agent. Your ONLY task is to provide a friendly greeting to the user. " "Do not engage in any other conversation or tasks.",
# Crucial for delegation: Clear description of capability
description="Handles simple greetings and hellos",
)
farewell_agent = Agent(
model=LiteLlm(model="anthropic/claude-3-sonnet-20240229"),
name="farewell_agent",
instruction="You are the Farewell Agent. Your ONLY task is to provide a polite goodbye message. "
"Do not perform any other actions.",
# Crucial for delegation: Clear description of capability
description="Handles simple farewells and goodbyes",
)
root_agent = Agent(
name="weather_agent_v2",
model="gemini-2.0-flash-exp",
description="You are the main Weather Agent, coordinating a team. - Your main task: Provide weather using the `get_weather` tool. Handle its 'status' response ('report' or 'error_message'). - Delegation Rules: - If the user gives a simple greeting (like 'Hi', 'Hello'), delegate to `greeting_agent`. - If the user gives a simple farewell (like 'Bye', 'See you'), delegate to `farewell_agent`. - Handle weather requests yourself using `get_weather`. - For other queries, state clearly if you cannot handle them.",
tools=[get_weather], # Root agent still needs the weather tool
sub_agents=[greeting_agent, farewell_agent]
)
description
do agente atual e os campos description
dos agentes relacionados (agentes principais/secundários definidos na hierarquia).GreetingAgent
), ele iniciará uma transferência.Descrições claras e distintas são essenciais, pois elas são usadas pelo LLM para rotear as tarefas de maneira eficaz.
Nesta configuração, se um usuário começar com "Oi", o WeatherAgent
(se ele for o agente-raiz que está processando a entrada) poderá reconhecer que essa não é uma consulta meteorológica, ver que o GreetingAgent
é mais adequado por meio de sua descrição e transferir automaticamente o controle. Se o usuário perguntar "Como está o tempo em Chicago?", o WeatherAgent
lidará com isso diretamente usando sua ferramenta get_weather
.
Este exemplo demonstra como a estrutura hierárquica do ADK e a delegação orientada por descrições permitem criar aplicativos multiagentes organizados, sofisticados e fáceis de manter.
Criar agentes inteligentes como o nosso agente meteorológico é uma etapa fundamental, mas levá-los aos usuários de maneira confiável exige executar algumas ações importantes: avaliação rigorosa e implantação direta. Antes de entrar em operação, é fundamental garantir que o agente se comporte de maneira previsível e correta. As ferramentas de avaliação integradas do ADK são projetadas exatamente para isso, permitindo testar sistematicamente os caminhos de execução e a qualidade das respostas em conjuntos de dados predefinidos, como o evaluation.test.json
ou o test.json
. Você pode executar essas verificações de maneira programática em seus pacotes de testes usando o AgentEvaluator.evaluate()
. Além disso, é possível usar a avaliação diretamente por meio da ferramenta de linha de comando "ADK eval" ou da IU da Web.
Quando o desempenho estiver satisfatório, o ADK oferecerá um caminho claro e simplificado para a produção, com a opção de implantação em qualquer ambiente de execução de contêiner ou por meio de sua integração com o Vertex AI Agent Engine. Isso permite aproveitar um ambiente de execução totalmente gerenciado, escalonável e de nível empresarial, concluindo o ciclo de vida de desenvolvimento e possibilitando a transição de protótipos sofisticados para aplicativos agênticos robustos e prontos para produção.
Ao explorar as possibilidades de criação de sistemas multiagentes com o ADK, pode surgir a dúvida de como ele se encaixa no cenário mais amplo das ferramentas de desenvolvimento de IA generativa do Google. Embora existam diversos SDKs e frameworks disponíveis, como o framework do Genkit, é importante entender o foco relativo do ADK. Veja abaixo uma comparação rápida:
No final das contas, a melhor escolha depende das metas específicas do projeto. Se você está criando sistemas de agentes complexos e colaborativos dentro de um framework bem definido, o ADK oferece uma solução eficiente. Já para outros projetos de IA generativa que exigem flexibilidade e amplo suporte a modelos, o Genkit é uma excelente escolha.
Embora o Agent Development Kit (ADK) ofereça flexibilidade para trabalhar com várias ferramentas, ele é otimizado para integração total no ecossistema do Google Cloud, especificamente com modelos Gemini e Vertex AI. Esse design personalizado permite que os desenvolvedores aproveitem totalmente os recursos avançados do Gemini, como o raciocínio aprimorado e o uso de ferramentas encontrados no Gemini 2.5 Pro Experimental, e fornece um caminho direto e nativo para implantar esses agentes no ambiente de execução de nível empresarial totalmente gerenciado da Vertex AI para garantir a escalonabilidade.
O mais importante é que essa ampla integração se estende ao cenário empresarial mais amplo; o ADK permite que os agentes se conectem diretamente a sistemas e dados por meio de mais de 100 conectores prontos, usem fluxos de trabalho criados com o Application Integration e acessem dados armazenados em sistemas como AlloyDB, BigQuery e NetApp sem exigir duplicação de dados.
Além disso, os agentes criados com o ADK podem explorar, com segurança, os investimentos existentes de sua organização em APIs gerenciadas pelo Apigee, o que aprimora ainda mais seus recursos ao usar as interfaces estabelecidas.
Essa conectividade abrangente entre modelos avançados de IA, a implantação escalonável, as diversas fontes de dados e as APIs existentes tornam o ADK excepcionalmente eficiente quando usado no ambiente do Google Cloud.
O Agent Development Kit (ADK) fornece uma base eficiente, flexível e de código aberto para a criação da próxima geração de aplicativos de IA. Ele lida com os principais desafios do desenvolvimento multiagentes ao oferecer:
Mal podemos esperar para ver o que você vai criar com o ADK!
Explore o código: documentação oficial do ADK.