<НА ГЛАВНУЮ

Как создать финансового AI-агента с помощью Google ADK: подробное руководство

В этом руководстве показано, как создать финансового AI-агента с Google ADK, интегрируя данные в реальном времени через API Alpha Vantage для обзоров компаний и анализа доходов.

Что такое Google Agent Development Kit (ADK)

Agent Development Kit (ADK) — это открытый Python-фреймворк, который помогает разработчикам создавать, управлять и развёртывать мультиагентные системы. Он модульный и гибкий, подходит для простых и сложных приложений с агентами.

Создание простого финансового AI-агента

В этом руководстве мы создадим простой AI-агент с двумя финансовыми инструментами:

  • get_company_overview — получение обзора компании
  • get_earnings — получение данных о доходах

Шаг 1: Установка зависимостей

Ключ API Google

Для использования AI-сервисов Google нужно получить API-ключ на сайте Google AI Studio. Войдите, сгенерируйте ключ и сохраните его.

Ключ API Alpha Vantage

Для доступа к финансовым данным получите бесплатный ключ API на Alpha Vantage. Зарегистрируйтесь и сохраните ключ.

Python-библиотеки

Установите необходимый пакет:

pip install google-adk

Шаг 2: Структура проекта

Организуйте папки так:

parent_folder/
│
└───multi_agent/
    ├── __init__.py
    ├── agent.py
    └── .env
  • В __init__.py импортируем модуль агента:
from . import agent
  • В .env храним ключи:
GOOGLE_GENAI_USE_VERTEXAI=FALSE
GOOGLE_API_KEY="<ВАШ_GOOGLE_API_КЛЮЧ>"
ALPHA_VANTAGE_API_KEY="<ВАШ_ALPHA_VANTAGE_КЛЮЧ>"

Замените плейсхолдеры на свои ключи.

Шаг 3: Определение инструментов агента в agent.py

В agent.py определены функции для получения финансовых данных через API Alpha Vantage.

from google.adk.agents import Agent
import requests
import os
 
ALPHA_VANTAGE_API_KEY = os.getenv("ALPHA_VANTAGE_API_KEY")
 
def get_company_overview(symbol: str) -> dict:
    """
    Получение общей информации о компании и финансовых показателей
    """
    if not ALPHA_VANTAGE_API_KEY:
        return {"status": "error", "error": "Отсутствует API ключ"}
    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"]}
        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:
    """
    Получение годовых и квартальных данных о доходах (EPS) с аналитическими оценками и сюрпризами
    """
    if not ALPHA_VANTAGE_API_KEY:
        return {"status": "error", "error": "Отсутствует API ключ"}
    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"]}
        annual_earnings = data.get("annualEarnings", [])[:5]
        quarterly_earnings = data.get("quarterlyEarnings", [])[:4]
        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="Агент для предоставления обзоров компаний с ключевыми финансовыми метриками.",
    instruction="Вы полезный AI-агент, который предоставляет обзоры компаний и информацию о доходах",
    tools=[get_company_overview, get_earnings],
)

Шаг 4: Запуск агента

Перейдите в родительскую папку проекта:

cd parent_folder/

Запустите веб-интерфейс агента:

adk web

Откройте указанный URL (обычно http://localhost:8000) в браузере, чтобы общаться с агентом через чат. Можно просматривать действия агента, вызовы инструментов, входные и выходные данные, а также ответы модели.

Дополнительные материалы

Полный код и структуру проекта можно найти на GitHub: https://github.com/mohd-arham-islam/ADK-demo

🇬🇧

Switch Language

Read this article in English

Switch to English