Guia Completo do Google ADK: Crie Agentes de IA Eficazes

TL;DR: O Google Agent Development Kit (ADK) é uma biblioteca Python de código aberto que simplifica a criação de agentes de IA, desde aplicações simples até sistemas multiagentes complexos, oferecendo ferramentas modulares para desenvolvimento, teste e implantação na nuvem através do Google Cloud Vertex AI Agent Engine.

Takeaways:

  • O ADK se destaca por sua abordagem modular e flexível, especialmente para criar sistemas onde múltiplos agentes colaboram entre si, suportando diversas interfaces como CLI, console interativo e UI baseada em Angular.
  • É possível criar agentes especializados com ferramentas personalizadas (como funções matemáticas) e orquestrar a colaboração entre eles usando a classe SequentialAgent.
  • A preparação do ambiente é simples: instalação via pip, configuração de variáveis de ambiente e utilização de serviços de memória para gerenciar sessões e artefatos.
  • O framework permite implantar agentes como serviços escaláveis no Google Cloud, facilitando a transição do desenvolvimento local para a produção.
  • A implementação de agentes requer a definição de instruções claras, ferramentas específicas e configurações de geração adequadas para controlar a saída dos modelos de linguagem.

Guia Completo para Iniciantes: Construa seus Primeiros Agentes de IA com o Google Agent Development Kit (ADK)

Você já imaginou criar seus próprios agentes de inteligência artificial que possam interagir, colaborar e resolver problemas complexos? O Google Agent Development Kit (ADK) torna essa possibilidade acessível mesmo para desenvolvedores iniciantes. Neste guia completo, vamos explorar como construir desde agentes simples até sistemas multiagentes sofisticados, prontos para implantação na nuvem.

Introdução ao Google Agent Development Kit (ADK)

O Google Agent Development Kit (ADK) é uma biblioteca Python de código aberto projetada para simplificar a criação, teste e lançamento de agentes de IA sofisticados. Enquanto existem várias ferramentas para desenvolvimento de agentes de IA, como CrewAI e LangChain, o ADK se destaca por sua abordagem modular e flexível, especialmente quando se trata de criar sistemas onde múltiplos agentes precisam trabalhar juntos.

O ADK oferece um conjunto completo de ferramentas para:

  • Criar agentes individuais com modelos de linguagem grandes (LLMs)
  • Desenvolver agentes que funcionam como controladores de fluxo de trabalho
  • Facilitar a colaboração e orquestração entre múltiplos agentes
  • Criar ferramentas personalizadas para que os agentes interajam com o mundo externo

Uma das maiores vantagens do ADK é sua versatilidade de interfaces, suportando CLI, console interativo, contêineres, UI baseada em Angular e a Gemini Live Streaming API.

Pré-requisitos para começar a usar o Google ADK

Antes de mergulharmos na construção de agentes, vamos configurar nosso ambiente de desenvolvimento:

  1. Entenda o ADK: Familiarize-se com a documentação oficial na página Open Source adk-docs e na página do projeto google-adk no PyPI.
  2. Clone o repositório de tutorial:
    git clone https://github.com/sokart/adk-walkthrough.git
    
  3. Crie um ambiente virtual Python (Python 3.11 é recomendado):
    python -m venv .adk_venv
    source .adk_venv/bin/activate  # No Windows: .adk_venv\Scripts\activate
    
  4. Instale o ADK:
    pip install google-adk==0.1.0
    
  5. Configure o ambiente:
    • Copie o arquivo “dotenv.example” e renomeie-o para .env
    • Preencha os detalhes do Projeto, Localização e Modelo Padrão como parâmetros globais
  6. Teste a configuração:
    python chapter1_main_basic.py
    

Construindo um Agente Básico com ADK

Vamos começar criando um agente simples sem ferramentas externas, focando na funcionalidade fundamental do framework. Este exemplo demonstra como enviar consultas ao agente e receber respostas.

Criando o primeiro agente

from google.adk.agents import Agent
from google.adk.generation import GenerationConfig

# Instanciando o agente
agent_basic = Agent(
    name="agent_basic",
    description="This agent provides information about various topics.",
    instruction="You are a helpful AI assistant that provides accurate and concise information on a wide range of topics.",
    model="gemini-pro",
    generation_config=GenerationConfig(
        temperature=0.9,
        top_p=1.0,
        top_k=32,
        max_output_tokens=2048,
    )
)

Neste código:

  • O name fornece um identificador para o agente
  • A description explica a função do agente
  • A instruction define o comportamento do agente em resposta às consultas
  • As configurações de geração influenciam a aleatoriedade das respostas

Interagindo com o agente

Para interagir com o agente, precisamos configurar a memória e criar uma sessão:

from google.adk.runners import Runner
from google.adk.persistence import MemorySessionService, MemoryArtifactService

# Configurando serviços de memória
session_service = MemorySessionService()
artifact_service = MemoryArtifactService()

def send_query_to_agent(agent, query):
    # Criar uma nova sessão
    session = session_service.new_session(app_name="agent_basic", user_id="user123")
    
    # Criar um runner para executar o agente
    runner = Runner(
        agent=agent,
        session_service=session_service,
        artifact_service=artifact_service,
    )
    
    # Executar o agente com a consulta
    events = runner.run_agent(session_id=session.id, message=query)
    
    # Analisar eventos e extrair resposta
    for _, event in enumerate(events):
        is_final_response = event.is_final_response()
        if is_final_response:
            final_response = event.content.parts[0].text
            print(f"Agent response: {final_response}")
            return final_response

Agora podemos enviar consultas ao nosso agente:

send_query_to_agent(agent_basic, "What are the benefits of artificial intelligence?")

Aprimorando Agentes com Ferramentas Personalizadas

Agora, vamos dar ao nosso agente a capacidade de realizar tarefas específicas adicionando ferramentas. Criaremos um agente matemático que pode realizar operações aritméticas básicas.

Definindo ferramentas matemáticas

def add(a: float, b: float) -> float:
    """
    Adds two numbers together.
    
    Args:
        a: The first number to add.
        b: The second number to add.
        
    Returns:
        The sum of a and b.
    """
    return a + b

def multiply(a: float, b: float) -> float:
    """
    Multiplies two numbers together.
    
    Args:
        a: The first number to multiply.
        b: The second number to multiply.
        
    Returns:
        The product of a and b.
    """
    return a * b

Criando o agente matemático

agent_math = Agent(
    name="agent_math",
    description="This agent can perform mathematical calculations.",
    instruction="You are a helpful AI assistant that performs mathematical calculations. When given a math problem, analyze it carefully and use the appropriate function to solve it.",
    model="gemini-pro",
    tools=[add, multiply]  # Adicionando as ferramentas ao agente
)

Processando respostas com chamadas de função

Para lidar com chamadas de função, precisamos modificar nossa função de análise de eventos:

def parse_event_content(event):
    """Parse the content section of an event dictionary."""
    if event.content and event.content.parts:
        for part in event.content.parts:
            if hasattr(part, 'text') and part.text:
                return {'type': 'text', 'text': part.text}
            elif hasattr(part, 'function_call'):
                return {
                    'type': 'function_call',
                    'name': part.function_call.name,
                    'args': part.function_call.args
                }
            elif hasattr(part, 'function_response'):
                return {
                    'type': 'function_response',
                    'name': part.function_response.name,
                    'response': part.function_response.response
                }
    return None

Agora podemos testar nosso agente matemático:

send_query_to_agent(agent_math, "First multiply numbers 1 to 3 and then add 4")

Interação Multi-Agente: Orquestrando Agentes Especializados

Vamos criar um sistema onde múltiplos agentes especializados colaboram para resolver problemas complexos. Nosso exemplo será um “assistente de professor” que corrige gramática, resolve problemas matemáticos e resume as informações.

Criando agentes especializados

Primeiro, criamos um agente de gramática:

def check_grammar(text: str) -> dict:
    """
    Checks the grammar of a given text.
    
    Args:
        text: The text to check for grammatical errors.
        
    Returns:
        A dictionary containing:
        - corrected_text: The text with grammar errors fixed
        - explanation: An explanation of the corrections made
        - is_correct: Boolean indicating if the original text was grammatically correct
    """
    # Implementação simplificada
    # Em um caso real, usaríamos um modelo de linguagem para análise gramatical
    
    return {
        "corrected_text": text,  # Texto corrigido
        "explanation": "No grammar issues found.",
        "is_correct": True
    }

agent_grammar = Agent(
    name="agent_grammar",
    description="This agent checks and corrects grammar in text.",
    instruction="You are a grammar assistant. Check the text for grammatical errors and provide corrections with explanations.",
    model="gemini-pro",
    tools=[check_grammar]
)

Em seguida, criamos um agente de resumo:

agent_summary = Agent(
    name="agent_summary",
    description="This agent summarizes information from other agents.",
    instruction="You are a summarization assistant. Combine information from grammar and math analyses to provide a concise, friendly summary.",
    model="gemini-pro"
)

Orquestrando os agentes com SequentialAgent

Agora, vamos criar um agente orquestrador usando a classe SequentialAgent:

from google.adk.agents import SequentialAgent

agent_teaching_assistant = SequentialAgent(
    name="agent_teaching_assistant",
    description="This agent acts as a friendly teaching assistant, checking the grammar of kids' questions, performing math calculations using corrected or original text (if grammatically correct), and providing results or grammar feedback in a friendly tone.",
    sub_agents=[agent_grammar, agent_math, agent_summary],
)

O SequentialAgent executa os agentes na ordem especificada:

  1. O agente de gramática verifica e corrige o texto
  2. O agente matemático realiza os cálculos necessários
  3. O agente de resumo combina as informações e fornece uma resposta final

Podemos testar nosso assistente de professor:

send_query_to_agent(agent_teaching_assistant, 
                   "Hi teacher. Could she help me to multiply all the numbers between 1 and 10?")

Implantação de Agentes na Nuvem com Google Cloud Vertex AI Agent Engine

Finalmente, vamos implantar nosso sistema multi-agente no Google Cloud Vertex AI Agent Engine, tornando-o disponível como um serviço escalável.

Preparação para implantação

Antes de implantar, precisamos:

  1. Habilitar a API CloudTrace no console do Google Cloud
  2. Instalar as dependências necessárias:
    pip install google-cloud-aiplatform[adk,agent_engines]
    

Código de implantação

from vertexai import agent_engines
from vertexai.preview.reasoning_engines import AdkApp

# Flag para alternar entre implantação local e remota
IS_REMOTE_DEPLOYMENT = 0  # 0 para local, 1 para remota

if(IS_REMOTE_DEPLOYMENT == 0):
    # Simulação local
    deployed_agent = AdkApp(
        agent=agent_teaching_assistant,
        enable_tracing=True,
    )
else:
    # Implantação remota no Google Cloud
    deployed_agent = agent_engines.create(
        agent_teaching_assistant, 
        requirements=["google-cloud-aiplatform[adk,agent_engines]"]
    )

Interagindo com o agente implantado

O código para interagir com o agente permanece o mesmo, independentemente de estar usando simulação local ou implantação remota:

# Criar uma sessão
session = deployed_agent.create_session(user_id="user123")

# Enviar consulta ao agente
response = deployed_agent.send_message(
    session_id=session.name,
    message="Can you help me solve 5 * 8 + 12?"
)

# Processar a resposta
for event in response:
    content = parse_event_content(event)
    if content and content['type'] == 'text':
        print(f"Agent response: {content['text']}")

Conclusão

Neste guia, exploramos o Google Agent Development Kit (ADK) desde os conceitos básicos até a implantação de sistemas multi-agente complexos na nuvem. Começamos com um agente simples, adicionamos ferramentas personalizadas, construímos um sistema colaborativo de múltiplos agentes e finalmente implantamos tudo no Google Cloud.

O ADK oferece um caminho promissor para o desenvolvimento de aplicações de IA inovadoras, com capacidades que vão desde a automação de tarefas simples até a orquestração de equipes de IA complexas. A abordagem modular permite que você crie soluções escaláveis e robustas, aproveitando o poder dos modelos de linguagem grandes.

Agora é sua vez de explorar os exemplos de código fornecidos, experimentar com suas próprias ideias e consultar a documentação oficial do Google ADK para desbloquear todo o potencial desta poderosa ferramenta. As possibilidades são ilimitadas!

Referência Principal

  • Título: From Zero to Multi-Agents: A Beginner’s Guide to Google Agent Development Kit (ADK)
  • Autor: Dr. Sokratis Kartakis
  • Data: Não especificada
  • Fonte: Blog pessoal ou plataforma de publicação técnica do autor
  • Link: Indisponível diretamente no contexto fornecido, mas parece ser o texto-fonte integral para o conteúdo analisado.
Inscrever-se
Notificar de
guest

Este site utiliza o Akismet para reduzir spam. Saiba como seus dados em comentários são processados.

0 Comentários
mais recentes
mais antigos Mais votado
Feedbacks embutidos
Ver todos os comentários