0
respostas

[Projeto] criar agente AI

Configurei o ambiente instalando o ADK, o SDK da Vertex AI para Python e o máximo de dependências. Em seguida, implementei duas ferramentas externas: uma para consultar dados/hora e outra para obter a previsão do tempo. Criei um agente com nome, descrição e instruções claras, orientando-o a usar essas ferramentas conforme a intenção da pergunta. Associei as ferramentas ao agente e realizei testes locais com sessão em memória, validando cenários de sucesso e erro. Por fim, preparei os requisitos do projeto e fiz o deploy do agente no Vertex AI Agent Engine, verificando o funcionamento e os logs de operação no ambiente da Vertex AI

configuração em notebook:

!pip install -U google-adk google-genai google-cloud-aiplatform requests

2) Configurar ambiente

import os

os.environ["GOOGLE_CLOUD_PROJECT"] = "seu-projeto"
os.environ["GOOGLE_CLOUD_LOCATION"] = "us-central1"
os.environ["GOOGLE_GENAI_USE_VERTEXAI"] = "true"

3) Criar como ferramentas

Ferramenta 1: dados/hora

from datetime import datetime
from zoneinfo import ZoneInfo

def get_current_time(city: str) -> dict:
timezones = {
"São Paulo": "America/Sao_Paulo",
"Lisboa": "Europe/Lisbon",
"Nova York": "America/New_York",
}
if city not in timezones:
return {"success": False, "error": f"Fuso horário para {city} não encontrado."}
now = datetime.now(ZoneInfo(timezones[city])).isoformat()
return {"success": True, "city": city, "timestamp": now}

Ferramenta 2: previsão do tempo

import requests

def get_weather(city: str) -> dict:
cities = {
"São Paulo": (-23.5505, -46.6333),
"Lisboa": (38.7223, -9.1393),
"Nova York": (40.7128, -74.0060),
}
if city not in cities:
return {"success": False, "error": f"Cidade {city} não encontrada."}

lat, lon = cities[city]
url = (
    "https://api.open-meteo.com/v1/forecast"
    f"?latitude={lat}&longitude={lon}&current=temperature_2m,relative_humidity_2m,wind_speed_10m"
)

try:
    resp = requests.get(url, timeout=20)
    resp.raise_for_status()
    data = resp.json()["current"]
    return {
        "success": True,
        "city": city,
        "temperature": data.get("temperature_2m"),
        "humidity": data.get("relative_humidity_2m"),
        "wind_speed": data.get("wind_speed_10m"),
    }
except Exception as e:
    return {"success": False, "error": str(e)}
    

4) Criar o agente

from google.adk.agents import Agent

root_agent = Agent(
name="assistente_tempo_hora",
model="gemini-2.0-flash",
description="Agente que informa data/hora e clima usando ferramentas externas.",
instruction=(
"Você é um assistente objetivo. "
"Use a tool de horário para perguntas sobre hora/data. "
"Use a tool de clima para perguntas sobre previsão/tempo. "
"Se a cidade não existir ou a tool falhar, explique o erro de forma clara."
),
tools=[get_current_time, get_weather],
)

5) Rodar localmente com sessão em memória

from google.adk.runners import InMemoryRunner

runner = InMemoryRunner(agent=root_agent)
session = runner.create_session(user_id="usuario_teste")

6) Fazer testes

response = runner.run(
session=session,
user_message="Qual a hora atual em São Paulo?"
)
print(response)

Cenário de erro

response = runner.run(
session=session,
user_message="Qual a hora em Atlantis?"
)
print(response)