feat: Add Simple Multi-Agent Researcher tutorial for google ADK course

This commit is contained in:
Shubhamsaboo 2025-08-11 11:37:17 -05:00
parent f22107daf1
commit b837c057da
5 changed files with 224 additions and 0 deletions

View file

@ -0,0 +1,128 @@
# 🎯 Tutorial 8: Simple MultiAgent Researcher (Runs with ADK)
## 🎯 What You'll Learn
- **Multiagent orchestration** using a coordinator agent with specialized subagents
- **Sequential workflow** where agents build upon each other's outputs
- **Web search integration** for real-time research capabilities
- **Running with ADK Web** to interactively test the multiagent system
## 🧠 Core Concept: Multi-Agent Research Pipeline
A coordinator `LlmAgent` orchestrates three specialized agents in a sequential workflow: Research → Summarize → Critique. Each agent contributes to building a comprehensive research report.
```
User Query → Coordinator Agent
├──▶ Research Agent (web search + analysis)
│ │
│ └──▶ Research Findings
├──▶ Summarizer Agent (synthesis)
│ │
│ └──▶ Key Insights
└──▶ Critic Agent (quality analysis)
└──▶ Final Report with Recommendations
```
## 📁 Project Structure
```
8_simple_multi_agent/
├── README.md # This file
├── requirements.txt # Dependencies
├── multi_agent_researcher/ # Main implementation
│ ├── agent.py # Multi-agent system (exports root_agent)
└── .env # Environment variables (create this)
```
## 🚀 Getting Started
### 1. Install Dependencies
Navigate to the `8_simple_multi_agent` folder and install the required libraries:
```bash
cd 8_simple_multi_agent
pip install -r requirements.txt
```
### 2. Set Up Environment
Create a `.env` file in the `8_simple_multi_agent` folder:
```bash
# Create .env file
echo "GOOGLE_API_KEY=your_ai_studio_key_here" > .env
```
**Important**: Replace `your_ai_studio_key_here` with your actual Google AI Studio API key from [https://aistudio.google.com/](https://aistudio.google.com/)
### 3. Run with ADK Web (Recommended)
From the `8_simple_multi_agent` folder:
```bash
adk web
```
**ADK Web Setup:**
- Open the local URL printed in the terminal
- In the import section, use this path:
```
ai_agent_framework_crash_course.google_adk_crash_course.8_simple_multi_agent.multi_agent_researcher
```
- Select the `root_agent` object
- Start chatting with your multi-agent researcher!
## 🧪 Sample Prompts to Try
### **Comprehensive Research Query:**
```
Research the future of renewable energy integration in smart cities, including current technologies, implementation challenges, economic feasibility, and policy requirements. Provide a critique and suggestions.
```
### **Other Test Queries:**
```
"Research the current state of AI regulation in the European Union and its impact on business innovation"
```
```
"Investigate the latest developments in CRISPR gene editing technology and its potential applications in medicine"
```
```
"Research the effectiveness of personalized learning platforms in K-12 education, including current implementations and learning outcomes"
```
## 🔍 How It Works
### **Research Agent:**
- Conducts comprehensive web research using Google Search
- Gathers current information, trends, and developments
- Provides structured findings with sources and outlines
### **Summarizer Agent:**
- Synthesizes research into clear, actionable insights
- Creates executive summaries and key bullet points
- Identifies critical patterns and takeaways
### **Critic Agent:**
- Performs quality analysis and gap identification
- Provides risk assessment and opportunity analysis
- Gives actionable recommendations and next steps
### **Coordinator:**
- Orchestrates the entire research workflow
- Ensures proper sequence: Research → Summarize → Critique
- Integrates all outputs into a cohesive final report
## 📝 Tips for Best Results
- **Be specific** in your research queries for better agent coordination
- **Allow completion** of the full workflow for comprehensive results
- The system automatically follows the research pipeline for thorough analysis
- Each agent builds upon the previous agent's work for better insights
## 🔗 Next Steps
After mastering this tutorial, explore:
- **Tutorial 9**: Workflow Agents (Sequential, Parallel, Branching)
- **Advanced Patterns**: Custom tools and agent communication
- **Integration**: Connect with external data sources and APIs
## 🚨 Troubleshooting
- **API Key Issues**: Ensure your `.env` file is in the correct location and contains a valid `GOOGLE_API_KEY`
- **Import Errors**: Make sure you're using the exact import path shown above
- **Agent Not Found**: Verify that `root_agent` is properly exported from the module

View file

@ -0,0 +1,3 @@
# If using Gemini via Google AI Studio
GOOGLE_GENAI_USE_VERTEXAI=False
GOOGLE_API_KEY="your-api-key"

View file

@ -0,0 +1,90 @@
import os
from dotenv import load_dotenv
from google.adk.agents import LlmAgent
from google.adk.tools.agent_tool import AgentTool
from google.adk.tools import google_search
# Load environment variables
load_dotenv()
# --- Sub-agents ---
research_agent = LlmAgent(
name="research_agent",
model="gemini-2.0-flash",
description="Finds key information and outlines for a given topic.",
instruction=(
"You are a focused research specialist. Given a user topic or goal, "
"conduct thorough research and produce:\n"
"1. A comprehensive bullet list of key facts and findings\n"
"2. Relevant sources and references (when available)\n"
"3. A structured outline for approaching the topic\n"
"4. Current trends or recent developments\n\n"
"Keep your research factual, well-organized, and comprehensive. "
"Use the google_search tool to find current information when needed."
),
tools=[google_search]
)
summarizer_agent = LlmAgent(
name="summarizer_agent",
model="gemini-2.5-flash",
description="Summarizes research findings clearly and concisely.",
instruction=(
"You are a skilled summarizer. Given research findings, create:\n"
"1. A concise executive summary (2-3 sentences)\n"
"2. 5-7 key bullet points highlighting the most important information\n"
"3. A clear takeaway message\n"
"4. Any critical insights or patterns you notice\n\n"
"Focus on clarity, relevance, and actionable insights. "
"Avoid repetition and maintain the logical flow of information."
),
)
critic_agent = LlmAgent(
name="critic_agent",
model="gemini-2.5-flash",
description="Provides constructive critique and improvement suggestions.",
instruction=(
"You are a thoughtful analyst and critic. Given research and summaries, provide:\n"
"1. **Gap Analysis**: Identify missing information or areas that need more research\n"
"2. **Risk Assessment**: Highlight potential risks, limitations, or biases\n"
"3. **Opportunity Identification**: Suggest areas for further exploration or improvement\n"
"4. **Quality Score**: Rate the overall research quality (1-10) with justification\n"
"5. **Actionable Recommendations**: Provide specific next steps or improvements\n\n"
"Be constructive, thorough, and evidence-based in your analysis."
),
)
# --- Coordinator (root) agent ---
root_agent = LlmAgent(
name="multi_agent_researcher",
model="gemini-2.5-flash",
description="Advanced multi-agent research coordinator that orchestrates research, analysis, and critique.",
instruction=(
"You are an advanced research coordinator managing a team of specialized agents.\n\n"
"**Your Research Team:**\n"
"- **research_agent**: Conducts comprehensive research using web search and analysis\n"
"- **summarizer_agent**: Synthesizes findings into clear, actionable insights\n"
"- **critic_agent**: Provides quality analysis, gap identification, and recommendations\n\n"
"**Research Workflow:**\n"
"1. **Research Phase**: Delegate to research_agent to gather comprehensive information\n"
"2. **Synthesis Phase**: Use summarizer_agent to distill findings into key insights\n"
"3. **Analysis Phase**: Engage critic_agent to evaluate quality and identify opportunities\n"
"4. **Integration**: Combine all outputs into a cohesive research report\n\n"
"**For Each Research Request:**\n"
"- Always start with research_agent to gather information\n"
"- Then use summarizer_agent to create clear summaries\n"
"- Finally, engage critic_agent for quality analysis and recommendations\n"
"- Present the final integrated research report to the user\n\n"
"**Output Format:**\n"
"Provide a structured response that includes:\n"
"- Executive Summary\n"
"- Key Findings\n"
"- Critical Analysis\n"
"- Recommendations\n"
"- Next Steps\n\n"
"Coordinate your team effectively to deliver high-quality, comprehensive research."
),
sub_agents=[summarizer_agent, critic_agent],
tools=[AgentTool(research_agent)]
)

View file

@ -0,0 +1,2 @@
google-adk>=1.9.0
python-dotenv>=1.1.1