Close Menu
    DevStackTipsDevStackTips
    • Home
    • News & Updates
      1. Tech & Work
      2. View All

      Stop writing tests: Automate fully with Generative AI

      August 19, 2025

      Opsera’s Codeglide.ai lets developers easily turn legacy APIs into MCP servers

      August 19, 2025

      Black Duck Security GitHub App, NuGet MCP Server preview, and more – Daily News Digest

      August 19, 2025

      10 Ways Node.js Development Boosts AI & Real-Time Data (2025-2026 Edition)

      August 18, 2025

      This new Coros watch has 3 weeks of battery life and tracks way more – even fly fishing

      August 20, 2025

      5 ways automation can speed up your daily workflow – and implementation is easy

      August 20, 2025

      This new C-suite role is more important than ever in the AI era – here’s why

      August 20, 2025

      iPhone users may finally be able to send encrypted texts to Android friends with iOS 26

      August 20, 2025
    • Development
      1. Algorithms & Data Structures
      2. Artificial Intelligence
      3. Back-End Development
      4. Databases
      5. Front-End Development
      6. Libraries & Frameworks
      7. Machine Learning
      8. Security
      9. Software Engineering
      10. Tools & IDEs
      11. Web Design
      12. Web Development
      13. Web Security
      14. Programming Languages
        • PHP
        • JavaScript
      Featured

      Creating Dynamic Real-Time Features with Laravel Broadcasting

      August 20, 2025
      Recent

      Creating Dynamic Real-Time Features with Laravel Broadcasting

      August 20, 2025

      Understanding Tailwind CSS Safelist: Keep Your Dynamic Classes Safe!

      August 19, 2025

      Sitecore’s Content SDK: Everything You Need to Know

      August 19, 2025
    • Operating Systems
      1. Windows
      2. Linux
      3. macOS
      Featured

      Why GNOME Replaced Eye of GNOME with Loupe as the Default Image Viewer

      August 19, 2025
      Recent

      Why GNOME Replaced Eye of GNOME with Loupe as the Default Image Viewer

      August 19, 2025

      Microsoft admits it broke “Reset this PC” in Windows 11 23H2 KB5063875, Windows 10 KB5063709

      August 19, 2025

      Windows 11 can now screen record specific app windows using Win + Shift + R (Snipping Tool)

      August 19, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»Development»Machine Learning»Step-by-Step Guide to Create an AI agent with Google ADK

    Step-by-Step Guide to Create an AI agent with Google ADK

    May 21, 2025

    Agent Development Kit (ADK) is an open-source Python framework that helps developers build, manage, and deploy multi-agent systems. It’s designed to be modular and flexible, making it easy to use for both simple and complex agent-based applications.

    In this tutorial, we’ll create a simple AI agent using ADK. The agent will have access to two tools:

    • get_company_overview
    • get_earnings

    Step 1: Setting up the dependencies

    Google API Key

    To use Google’s AI services, you’ll need an API key:

    • Visit https://aistudio.google.com/apikey
    • Sign in and generate your API key
    • Copy and store it securely — we’ll use it later in the tutorial.

    AlphaVantage API Key

    For accessing financial data, we’ll use the Alpha Vantage API:

    • Go to https://www.alphavantage.co/
    • Click “Get your free API key” or visit this direct link
    • Enter your email and follow the instructions
    • Once you receive your API key, copy and save it securely. We’ll use it to authenticate requests to financial endpoints.

    Python Libraries

    We only need one package:

    Copy CodeCopiedUse a different Browser
    pip install google-adk

    Step 2: Creating the Folder structure

    Set up your project folder with the following structure:

    Copy CodeCopiedUse a different Browser
    parent_folder/
    │
    └───multi_agent/
        ├── __init__.py
        ├── agent.py
        └── .env

    __init__.py

    Paste the following code into multi_agent/__init__.py:

    Copy CodeCopiedUse a different Browser
    from . import agent

    .env

    Create a .env file inside the multi_agent folder and paste the following:

    Copy CodeCopiedUse a different Browser
    GOOGLE_GENAI_USE_VERTEXAI=FALSE
    GOOGLE_API_KEY="<YOUR_GOOGLE_API_KEY>"
    ALPHA_VANTAGE_API_KEY="<YOUR_ALPHA_VANTAGE_KEY"

    Replace the placeholders with your actual API keys

    agent.py

    Paste the following code in the agent.py file:

    Copy CodeCopiedUse a different Browser
    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],
    )

    In this script, we define a financial analysis agent using the Google Agent Development Kit (ADK). The agent is designed to answer user queries by accessing real-time financial data through the Alpha Vantage API. Specifically, it exposes two tools: get_company_overview and get_earnings. The get_company_overview function retrieves key company details such as sector, market capitalization, P/E ratio, and 52-week high/low values. The get_earnings function provides both annual and quarterly earnings data, including reported EPS and surprise percentages.To create the agent, we use the Agent class from the google.adk.agents module, giving it a name, a model (e.g., Gemini 2.0 Flash), a description, and an instruction prompt. The agent is then equipped with the two tools mentioned above, allowing it to respond to questions related to company financials.

    Step 3: Running the Agent

    To run the agent, navigate to the parent directory of your agent project (e.g. using cd ..)

    Copy CodeCopiedUse a different Browser
    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

    After navigating, run the following code:

    Copy CodeCopiedUse a different Browser
    adk web

    Open the URL provided (usually http://localhost:8000 or http://127.0.0.1:8000) directly in your browser. You’ll see a simple chat interface where you can interact with your agent using the input textbox.

    Additionally, you can inspect each step of the agent’s reasoning by clicking on Actions. This allows you to view:

    • The tools being called
    • The inputs and outputs of each function
    • The responses generated by the language model

    GitHub Link

    You can find the entire code along with folder structure at this link: https://github.com/mohd-arham-islam/ADK-demo

    The post Step-by-Step Guide to Create an AI agent with Google ADK appeared first on MarkTechPost.

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleSampling Without Data is Now Scalable: Meta AI Releases Adjoint Sampling for Reward-Driven Generative Modeling
    Next Article Generative AI in the Enterprise: Transforming Everything from Content to Code🚀

    Related Posts

    Machine Learning

    How to Evaluate Jailbreak Methods: A Case Study with the StrongREJECT Benchmark

    August 19, 2025
    Machine Learning

    Streamline employee training with an intelligent chatbot powered by Amazon Q Business

    August 19, 2025
    Leave A Reply Cancel Reply

    For security, use of Google's reCAPTCHA service is required which is subject to the Google Privacy Policy and Terms of Use.

    Continue Reading

    10 Reasons to Choose Full-Stack Techies for Your Next React.js Development Project

    Tech & Work

    Free GenAI 65-Hour Bootcamp

    Development

    CVE-2025-5550 – FreeFloat FTP Server PBSZ Command Handler Buffer Overflow Vulnerability

    Common Vulnerabilities and Exposures (CVEs)

    The AI Fix #55: Atari beats ChatGPT at chess, and Apple says AI “thinking” is an illusion

    Development

    Highlights

    CVE-2025-5625 – Campcodes Online Teacher Record Management System SQL Injection Vulnerability

    June 4, 2025

    CVE ID : CVE-2025-5625

    Published : June 5, 2025, 1:15 a.m. | 2 hours, 23 minutes ago

    Description : A vulnerability was found in Campcodes Online Teacher Record Management System 1.0. It has been rated as critical. This issue affects some unknown processing of the file /search-teacher.php. The manipulation of the argument searchteacher leads to sql injection. The attack may be initiated remotely. The exploit has been disclosed to the public and may be used.

    Severity: 7.3 | HIGH

    Visit the link for more details, such as CVSS details, affected products, timeline, and more…

    Xbox just quietly added two of the best RPGs of all time to Game Pass

    June 5, 2025

    I changed 10 settings on my Fire TV for better performance and fewer distractions

    June 22, 2025

    PonyProg is a serial device programmer

    April 22, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

    Type above and press Enter to search. Press Esc to cancel.