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

      Upwork Freelancers vs Dedicated React.js Teams: What’s Better for Your Project in 2025?

      August 1, 2025

      Is Agile dead in the age of AI?

      August 1, 2025

      Top 15 Enterprise Use Cases That Justify Hiring Node.js Developers in 2025

      July 31, 2025

      The Core Model: Start FROM The Answer, Not WITH The Solution

      July 31, 2025

      Finally, a sleek gaming laptop I can take to the office (without sacrificing power)

      August 1, 2025

      These jobs face the highest risk of AI takeover, according to Microsoft

      August 1, 2025

      Apple’s tariff costs and iPhone sales are soaring – how long until device prices are too?

      August 1, 2025

      5 ways to successfully integrate AI agents into your workplace

      August 1, 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

      Enhancing Laravel Queries with Reusable Scope Patterns

      August 1, 2025
      Recent

      Enhancing Laravel Queries with Reusable Scope Patterns

      August 1, 2025

      Everything We Know About Livewire 4

      August 1, 2025

      Everything We Know About Livewire 4

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

      YouTube wants to use AI to treat “teens as teens and adults as adults” — with the most age-appropriate experiences and protections

      August 1, 2025
      Recent

      YouTube wants to use AI to treat “teens as teens and adults as adults” — with the most age-appropriate experiences and protections

      August 1, 2025

      Sam Altman is afraid of OpenAI’s GPT-5 creation — “The Manhattan Project feels very fast, like there are no adults in the room”

      August 1, 2025

      9 new features that arrived on the Windows 11 Insider Program during the second half of July 2025

      August 1, 2025
    • Learning Resources
      • Books
      • Cheatsheets
      • Tutorials & Guides
    Home»Development»Machine Learning»A Coding Guide to Build a Scalable Multi-Agent System with Google ADK

    A Coding Guide to Build a Scalable Multi-Agent System with Google ADK

    July 31, 2025

    In this tutorial, we explore the advanced capabilities of Google’s Agent Development Kit (ADK) by building a multi-agent system equipped with specialized roles and tools. We guide you through creating agents tailored for tasks such as web research, mathematical computation, data analysis, and content creation. By integrating Google Search, asynchronous execution, and modular architecture, we demonstrate how to orchestrate a powerful, production-ready agent workflow using the Gemini model. Our goal is to help you understand how ADK can be leveraged to build scalable, intelligent systems suitable for enterprise applications. 🧵 Check out the Full Codes here

    Copy CodeCopiedUse a different Browser
    !pip install google-adk
    
    
    import os
    import asyncio
    import json
    from typing import List, Dict, Any
    from dataclasses import dataclass
    from google.adk.agents import Agent, LlmAgent
    from google.adk.tools import google_search
    
    
    def get_api_key():
       """Get API key from user input or environment variable"""
       api_key = os.getenv("GOOGLE_API_KEY")
       if not api_key:
           from getpass import getpass
           api_key = getpass("Enter your Google API Key: ")
           if not api_key:
               raise ValueError("API key is required to run this tutorial")
           os.environ["GOOGLE_API_KEY"] = api_key
       return api_key

    We begin by installing the google-adk package and importing the necessary libraries to build our agent system. To authenticate our access, we retrieve the Google API key either from the environment or securely prompt for it using the getpass module. This ensures our agents can interact with Google’s tools and services seamlessly. 🧵 Check out the Full Codes here

    Copy CodeCopiedUse a different Browser
    @dataclass
    class TaskResult:
       """Data structure for task results"""
       agent_name: str
       task: str
       result: str
       metadata: Dict[str, Any] = None
    
    
    class AdvancedADKTutorial:
       """Main tutorial class demonstrating ADK capabilities"""
      
       def __init__(self):
           self.model = "gemini-1.5-flash"
           self.agents = {}
           self.results = []
          
       def create_specialized_agents(self):
           """Create a multi-agent system with specialized roles"""
          
           self.agents['researcher'] = Agent(
               name="researcher",
               model=self.model,
               instruction="""You are a research specialist. Use Google Search to find
               accurate, up-to-date information. Provide concise, factual summaries with sources.
               Always cite your sources and focus on the most recent and reliable information.""",
               description="Specialist in web research and information gathering",
               tools=[google_search]
           )
          
           self.agents['calculator'] = Agent(
               name="calculator",
               model=self.model,
               instruction="""You are a mathematics expert. Solve calculations step-by-step.
               Show your work clearly and double-check results. Handle arithmetic, algebra,
               geometry, statistics, and financial calculations. Always explain your reasoning.""",
               description="Expert in mathematical calculations and problem solving"
           )
          
           self.agents['analyst'] = Agent(
               name="analyst",
               model=self.model,
               instruction="""You are a data analysis expert. When given numerical data:
               1. Calculate basic statistics (mean, median, min, max, range, std dev)
               2. Identify patterns, trends, and outliers
               3. Provide business insights and interpretations
               4. Show all calculations step-by-step
               5. Suggest actionable recommendations based on the data""",
               description="Specialist in data analysis and statistical insights"
           )
          
           self.agents['writer'] = Agent(
               name="writer",
               model=self.model,
               instruction="""You are a professional writing assistant. Help with:
               - Creating clear, engaging, and well-structured content
               - Business reports and executive summaries
               - Technical documentation and explanations
               - Content editing and improvement
               Always use professional tone and proper formatting.""",
               description="Expert in content creation and document writing"
           )
          
           print("✓ Created specialized agent system:")
           print(f"  • Researcher: Web search and information gathering")
           print(f"  • Calculator: Mathematical computations and analysis")
           print(f"  • Analyst: Data analysis and statistical insights")
           print(f"  • Writer: Professional content creation")
      
       async def run_agent_with_input(self, agent, user_input):
           """Helper method to run agent with proper error handling"""
           try:
               if hasattr(agent, 'generate_content'):
                   result = await agent.generate_content(user_input)
                   return result.text if hasattr(result, 'text') else str(result)
               elif hasattr(agent, '__call__'):
                   result = await agent(user_input)
                   return result.text if hasattr(result, 'text') else str(result)
               else:
                   result = str(agent) + f" processed: {user_input[:50]}..."
                   return result
           except Exception as e:
               return f"Agent execution error: {str(e)}"
      
       async def demonstrate_single_agent_research(self):
           """Demonstrate single agent research capabilities"""
           print("n=== Single Agent Research Demo ===")
          
           query = "What are the latest developments in quantum computing breakthroughs in 2024?"
           print(f"Research Query: {query}")
          
           try:
               response_text = await self.run_agent_with_input(
                   agent=self.agents['researcher'],
                   user_input=query
               )
               summary = response_text[:300] + "..." if len(response_text) > 300 else response_text
              
               task_result = TaskResult(
                   agent_name="researcher",
                   task="Quantum Computing Research",
                   result=summary
               )
               self.results.append(task_result)
              
               print(f"✓ Research Complete: {summary}")
               return response_text
              
           except Exception as e:
               error_msg = f"Research failed: {str(e)}"
               print(f"❌ {error_msg}")
               return error_msg
      
       async def demonstrate_calculator_agent(self):
           """Demonstrate mathematical calculation capabilities"""
           print("n=== Calculator Agent Demo ===")
          
           calc_problem = """Calculate the compound annual growth rate (CAGR) for an investment
           that grows from $50,000 to $125,000 over 8 years. Use the formula:
           CAGR = (Ending Value / Beginning Value)^(1/number of years) - 1
           Express the result as a percentage."""
          
           print("Math Problem: CAGR Calculation")
          
           try:
               response_text = await self.run_agent_with_input(
                   agent=self.agents['calculator'],
                   user_input=calc_problem
               )
               summary = response_text[:250] + "..." if len(response_text) > 250 else response_text
              
               task_result = TaskResult(
                   agent_name="calculator",
                   task="CAGR Calculation",
                   result=summary
               )
               self.results.append(task_result)
              
               print(f"✓ Calculation Complete: {summary}")
               return response_text
              
           except Exception as e:
               error_msg = f"Calculation failed: {str(e)}"
               print(f"❌ {error_msg}")
               return error_msg
      
       async def demonstrate_data_analysis(self):
           """Demonstrate data analysis capabilities"""
           print("n=== Data Analysis Agent Demo ===")
          
           data_task = """Analyze this quarterly sales data for a tech startup (in thousands USD):
           Q1 2023: $125K, Q2 2023: $143K, Q3 2023: $167K, Q4 2023: $152K
           Q1 2024: $187K, Q2 2024: $214K, Q3 2024: $239K, Q4 2024: $263K
          
           Calculate growth trends, identify patterns, and provide business insights."""
          
           print("Data Analysis: Quarterly Sales Trends")
          
           try:
               response_text = await self.run_agent_with_input(
                   agent=self.agents['analyst'],
                   user_input=data_task
               )
               summary = response_text[:250] + "..." if len(response_text) > 250 else response_text
              
               task_result = TaskResult(
                   agent_name="analyst",
                   task="Sales Data Analysis",
                   result=summary
               )
               self.results.append(task_result)
              
               print(f"✓ Analysis Complete: {summary}")
               return response_text
              
           except Exception as e:
               error_msg = f"Analysis failed: {str(e)}"
               print(f"❌ {error_msg}")
               return error_msg
      
       async def demonstrate_content_creation(self):
           """Demonstrate content creation capabilities"""
           print("n=== Content Creation Agent Demo ===")
          
           writing_task = """Create a brief executive summary (2-3 paragraphs) for a board presentation
           that combines the key findings from:
           1. Recent quantum computing developments
           2. Strong financial growth trends showing 58% year-over-year growth
           3. Recommendations for strategic planning
          
           Use professional business language suitable for C-level executives."""
          
           print("Content Creation: Executive Summary")
          
           try:
               response_text = await self.run_agent_with_input(
                   agent=self.agents['writer'],
                   user_input=writing_task
               )
               summary = response_text[:250] + "..." if len(response_text) > 250 else response_text
              
               task_result = TaskResult(
                   agent_name="writer",
                   task="Executive Summary",
                   result=summary
               )
               self.results.append(task_result)
              
               print(f"✓ Content Created: {summary}")
               return response_text
              
           except Exception as e:
               error_msg = f"Content creation failed: {str(e)}"
               print(f"❌ {error_msg}")
               return error_msg
      
       def display_comprehensive_summary(self):
           """Display comprehensive tutorial summary and results"""
           print("n" + "="*70)
           print("🚀 ADVANCED ADK TUTORIAL - COMPREHENSIVE SUMMARY")
           print("="*70)
          
           print(f"n📊 EXECUTION STATISTICS:")
           print(f"   • Total agents created: {len(self.agents)}")
           print(f"   • Total tasks completed: {len(self.results)}")
           print(f"   • Model used: {self.model} (Free Tier)")
           print(f"   • Runner type: Direct Agent Execution")
          
           print(f"n🤖 AGENT CAPABILITIES DEMONSTRATED:")
           print("   • Advanced web research with Google Search integration")
           print("   • Complex mathematical computations and financial analysis")
           print("   • Statistical data analysis with business insights")
           print("   • Professional content creation and documentation")
           print("   • Asynchronous agent execution and error handling")
          
           print(f"n🛠 KEY ADK FEATURES COVERED:")
           print("   • Agent() class with specialized instructions")
           print("   • Built-in tool integration (google_search)")
           print("   • InMemoryRunner for agent execution")
           print("   • Async/await patterns for concurrent operations")
           print("   • Professional error handling and logging")
           print("   • Modular, scalable agent architecture")
          
           print(f"n📋 TASK RESULTS SUMMARY:")
           for i, result in enumerate(self.results, 1):
               print(f"   {i}. {result.agent_name.title()}: {result.task}")
               print(f"      Result: {result.result[:100]}...")
          
           print(f"n🎯 PRODUCTION READINESS:")
           print("   • Code follows ADK best practices")
           print("   • Ready for deployment on Cloud Run")
           print("   • Compatible with Vertex AI Agent Engine")
           print("   • Scalable multi-agent architecture")
           print("   • Enterprise-grade error handling")
          
           print(f"n🔗 NEXT STEPS:")
           print("   • Explore sub-agent delegation with LlmAgent")
           print("   • Add custom tools and integrations")
           print("   • Deploy to Google Cloud for production use")
           print("   • Implement persistent memory and sessions")
          
           print("="*70)
           print("✅ Tutorial completed successfully! Happy Agent Building! 🎉")
           print("="*70)

    We define a TaskResult data structure to store outputs from each agent. Then, we build a multi-agent system using Google ADK, assigning specialized roles like researcher, calculator, analyst, and writer. Through asynchronous methods, we demonstrate each agent’s capabilities and compile a final summary of their performance and insights. 🧵 Check out the Full Codes here

    Copy CodeCopiedUse a different Browser
    async def main():
       """Main tutorial execution function"""
       print("🚀 Google ADK Python - Advanced Tutorial")
       print("=" * 50)
      
       try:
           api_key = get_api_key()
           print("✅ API key configured successfully")
       except Exception as e:
           print(f"❌ Error: {e}")
           return
      
       tutorial = AdvancedADKTutorial()
      
       tutorial.create_specialized_agents()
      
       print(f"n🎯 Running comprehensive agent demonstrations...")
      
       await tutorial.demonstrate_single_agent_research()
       await tutorial.demonstrate_calculator_agent()
       await tutorial.demonstrate_data_analysis()
       await tutorial.demonstrate_content_creation()
      
       tutorial.display_comprehensive_summary()
    
    
    def run_tutorial():
       """Run the tutorial in Jupyter/Colab environment"""
       import asyncio
      
       try:
           from IPython import get_ipython
           if get_ipython() is not None:
               return asyncio.create_task(main())
       except ImportError:
           pass
      
       return asyncio.run(main())
    
    
    if __name__ == "__main__":
       try:
           loop = asyncio.get_running_loop()
           print("Detected Notebook environment. Please run: await main()")
       except RuntimeError:
           asyncio.run(main())
    
    
    await main()
    

    We finalize the tutorial by defining the main() function, which initializes the system, runs all agent demonstrations, and displays a summary. We ensure compatibility with both script and notebook environments, allowing us to run everything seamlessly with await main() in Colab.

    In conclusion, we have successfully created and deployed a fully functional multi-agent system using Google ADK. We’ve seen our agents handle a diverse range of tasks, from conducting real-time research and solving complex financial equations to analyzing data trends and generating executive summaries. We also highlight how the ADK framework supports error handling, extensibility, and seamless integration with tools. Through this hands-on experience, we gain confidence in using ADK to develop robust agent-based solutions for real-world problems, and we’re excited to explore even more advanced orchestration and deployment strategies moving forward.


    Check out the Full Codes here. All credit for this research goes to the researchers of this project. Also, feel free to follow us on Twitter and don’t forget to join our 100k+ ML SubReddit and Subscribe to our Newsletter.

    🧵 You may also like NVIDIA’s Open Sourced Cosmos DiffusionRenderer [Check it now]

    The post A Coding Guide to Build a Scalable Multi-Agent System with Google ADK appeared first on MarkTechPost.

    Source: Read More 

    Facebook Twitter Reddit Email Copy Link
    Previous ArticleToo Much Thinking Can Break LLMs: Inverse Scaling in Test-Time Compute
    Next Article LWiAI Podcast #218 – Github Spark, MegaScience, US AI Action Plan

    Related Posts

    Machine Learning

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

    August 1, 2025
    Machine Learning

    TransEvalnia: A Prompting-Based System for Fine-Grained, Human-Aligned Translation Evaluation Using LLMs

    August 1, 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

    AI has grown beyond human knowledge, says Google’s DeepMind unit

    News & Updates

    Citrix bleeds again: This time a zero-day exploited – patch now

    Security

    Don’t miss these fantastic DJI drone deals during Amazon Prime Day

    News & Updates

    11 Best PC Games Under 20 GB to Download and Play Today

    Operating Systems

    Highlights

    News & Updates

    Lenovo’s new Yoga 9i AiO is the first Copilot+ all-in-one desktop PC — and almost the perfect flagship

    June 20, 2025

    Lenovo’s latest flagship desktop all-in-one is the first Copilot+ all-in-one PC, and it trumps the…

    CVE-2025-5794 – Tenda AC5 PPTP User List Buffer Overflow Vulnerability

    June 6, 2025

    Graphite Spyware Exploits Apple iOS Zero-Click Vulnerability to Attack Journalists

    June 13, 2025

    CVE-2025-5972 – PHPGurukul Restaurant Table Booking System Cross-Site Scripting Vulnerability

    June 10, 2025
    © DevStackTips 2025. All rights reserved.
    • Contact
    • Privacy Policy

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