Guía paso a paso para crear un agente de IA con Google ADK

Kit de desarrollo de agentes (ADK) es un marco de Python de código abierto que ayuda a los desarrolladores a construir, administrar e implementar sistemas de agentes múltiples. Está diseñado para ser modular y flexible, lo que facilita el uso de aplicaciones basadas en agentes simples y complejas.

En este tutorial, crearemos un agente de IA simple usando ADK. El agente tendrá acceso a dos herramientas:

Clave de API de Google

Para usar los servicios de IA de Google, necesitará una clave API:

Llave de API de Alphavantage

Para acceder a datos financieros, utilizaremos la API Alpha Vantage:

  • Ir a https://www.alphavantage.co/
  • Hacer clic “Obtenga su clave API gratuita” o visitar Este enlace directo
  • Ingrese su correo electrónico y siga las instrucciones
  • Una vez que reciba su clave API, copie y guárdela de forma segura. Lo usaremos para autenticar las solicitudes a los puntos finales financieros.

Bibliotecas de pitón

Solo necesitamos un paquete:

Configure su carpeta de proyecto con la siguiente estructura:

parent_folder/
│
└───multi_agent/
    ├── __init__.py
    ├── agent.py
    └── .env

__init__.py

Pegue el siguiente código en multi_agent/__ init__.py:

.env

Cree un archivo .env dentro de la carpeta multi_agent y pegue lo siguiente:

GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY="<YOUR_GOOGLE_API_KEY>"
ALPHA_VANTAGE_API_KEY="<YOUR_ALPHA_VANTAGE_KEY"

Reemplazar los marcadores de posición con sus claves API reales

agente.py

Pegue el siguiente código en el archivo agente.py:

from google.adk.agents import Agent
import requests
import os
from typing import Optional

ALPHA_VANTAGE_API_KEY = os.getenv("ALPHA_VANTAGE_API_KEY")

def get_company_overview(symbol: str) -> dict:
    """
    Get comprehensive company information and financial metrics
   
    Args:
        symbol: Stock ticker symbol (e.g., IBM)
   
    Returns:
        dict: Company overview data or error
    """
    if not ALPHA_VANTAGE_API_KEY:
        return {"status": "error", "error": "Missing API key"}
   
    base_url = "https://www.alphavantage.co/query"
    params = {
        "function": "OVERVIEW",
        "symbol": symbol,
        "apikey": ALPHA_VANTAGE_API_KEY
    }
   
    try:
        response = requests.get(base_url, params=params)
        response.raise_for_status()
        data = response.json()
       
        if "Error Message" in data:
            return {"status": "error", "error": data["Error Message"]}
           
        # Filter key metrics
        key_metrics = {
            "Description": data.get("Description"),
            "Sector": data.get("Sector"),
            "MarketCap": data.get("MarketCapitalization"),
            "PERatio": data.get("PERatio"),
            "ProfitMargin": data.get("ProfitMargin"),
            "52WeekHigh": data.get("52WeekHigh"),
            "52WeekLow": data.get("52WeekLow")
        }
       
        return {
            "status": "success",
            "symbol": symbol,
            "overview": key_metrics
        }
       
    except Exception as e:
        return {"status": "error", "error": str(e)}

def get_earnings(symbol: str) -> dict:
    """
    Get annual and quarterly earnings (EPS) data with analyst estimates and surprises
   
    Args:
        symbol: Stock ticker symbol (e.g., IBM)
   
    Returns:
        dict: Earnings data with estimates or error message
    """
    if not ALPHA_VANTAGE_API_KEY:
        return {"status": "error", "error": "Missing API key"}
   
    base_url = "https://www.alphavantage.co/query"
    params = {
        "function": "EARNINGS",
        "symbol": symbol,
        "apikey": ALPHA_VANTAGE_API_KEY
    }
   
    try:
        response = requests.get(base_url, params=params)
        response.raise_for_status()
        data = response.json()
       
        if "Error Message" in data:
            return {"status": "error", "error": data["Error Message"]}
           
        # Process annual and quarterly earnings
        annual_earnings = data.get("annualEarnings", [])[:5]  # Last 5 years
        quarterly_earnings = data.get("quarterlyEarnings", [])[:4]  # Last 4 quarters
       
        # Format surprise percentages
        for q in quarterly_earnings:
            if "surprisePercentage" in q:
                q["surprise"] = f"{q['surprisePercentage']}%"
       
        return {
            "status": "success",
            "symbol": symbol,
            "annual_earnings": annual_earnings,
            "quarterly_earnings": quarterly_earnings,
            "metrics": {
                "latest_eps": quarterly_earnings[0]["reportedEPS"] if quarterly_earnings else None
            }
        }
       
    except Exception as e:
        return {"status": "error", "error": str(e)}
   
   
root_agent = Agent(
    name="Financial_analyst_agent",
    model="gemini-2.0-flash",
    description=(
        "Agent to give company overviews with key financial metrics."
    ),
    instruction=(
        "You are a helpful AI agent that provides company overviews and earnings information"
    ),
    tools=[get_company_overview, get_earnings],
)

En este script, definimos un agente de análisis financiero utilizando el Kit de desarrollo de Google Agent (ADK). El agente está diseñado para responder consultas de los usuarios accediendo a datos financieros en tiempo real a través de la API Alpha Vantage. Específicamente, expone dos herramientas: get_company_overview y get_earnings. La función get_company_overview recupera detalles clave de la compañía como sector, capitalización de mercado, relación P/E y valores altos/bajos de 52 semanas. La función get_earnings proporciona datos de ganancias anuales y trimestrales, incluidos EPS informados y porcentajes de sorpresa. Para crear el agente, usamos la clase de agente del módulo google.adk.agents, dándole un nombre, un modelo (por ejemplo, Gemini 2.0 flash), una descripción y un mensaje de instrucción. Luego, el agente está equipado con las dos herramientas mencionadas anteriormente, lo que le permite responder a las preguntas relacionadas con las finanzas de la empresa.

Para ejecutar el agente, navegue al directorio principal de su proyecto de agente (por ejemplo, usando CD ..)

parent_folder/      ← Navigate to this directory in your terminal
│
└───multi_agent/
    ├── __init__.py     # Initializes the module
    ├── agent.py        # Contains the agent logic and tools
    └── .env            # Stores your API keys securely

Después de navegar, ejecute el siguiente código:

Abra la URL proporcionada (generalmente http: // localhost: 8000 o http://127.0.0.1:8000) directamente en su navegador. Verá una interfaz de chat simple donde puede interactuar con su agente usando el cuadro de texto de entrada.

Además, puede inspeccionar cada paso del razonamiento del agente haciendo clic en Comportamiento. Esto le permite ver:

  • Las herramientas que se llaman
  • Las entradas y salidas de cada función
  • Las respuestas generadas por el modelo de idioma

Puede encontrar el código completo junto con la estructura de la carpeta en este enlace: https://github.com/mohd-arham-islam/adk-demo


Soy un graduado de ingeniería civil (2022) de Jamia Millia Islamia, Nueva Delhi, y tengo un gran interés en la ciencia de datos, especialmente las redes neuronales y su aplicación en varias áreas.