mirror of
https://github.com/encounter/adk-python.git
synced 2026-07-09 18:19:28 -07:00
207 lines
6.8 KiB
Markdown
207 lines
6.8 KiB
Markdown
# Agent Builder Assistant
|
|
|
|
An intelligent assistant for building ADK multi-agent systems using YAML configurations.
|
|
|
|
## Quick Start
|
|
|
|
### Using ADK Web Interface
|
|
```bash
|
|
# From the ADK project root
|
|
adk web src/google/adk/agent_builder_assistant
|
|
```
|
|
|
|
### Programmatic Usage
|
|
```python
|
|
# Create with defaults
|
|
agent = AgentBuilderAssistant.create_agent()
|
|
|
|
# Create with custom settings
|
|
agent = AgentBuilderAssistant.create_agent(
|
|
model="gemini-2.5-pro",
|
|
schema_mode="query",
|
|
working_directory="/path/to/project"
|
|
)
|
|
```
|
|
|
|
## Core Features
|
|
|
|
### 🎯 **Intelligent Agent Design**
|
|
- Analyzes requirements and suggests appropriate agent types
|
|
- Designs multi-agent architectures (Sequential, Parallel, Loop patterns)
|
|
- Provides high-level design confirmation before implementation
|
|
|
|
### 📝 **Advanced YAML Configuration**
|
|
- Generates AgentConfig schema-compliant YAML files
|
|
- Supports all agent types: LlmAgent, SequentialAgent, ParallelAgent, LoopAgent
|
|
- Built-in validation with detailed error reporting
|
|
|
|
### 🛠️ **Multi-File Management**
|
|
- **Read/Write Operations**: Batch processing of multiple files
|
|
- **File Type Separation**: YAML files use validation tools, Python files use generic tools
|
|
- **Backup & Recovery**: Automatic backups before overwriting existing files
|
|
|
|
### 🗂️ **Project Structure Analysis**
|
|
- Explores existing project structures
|
|
- Suggests conventional ADK file organization
|
|
- Provides path recommendations for new components
|
|
|
|
### 🧭 **Dynamic Path Resolution**
|
|
- **Session Binding**: Each chat session bound to one root directory
|
|
- **Working Directory**: Automatic detection and context provision
|
|
- **ADK Source Discovery**: Finds ADK installation dynamically (no hardcoded paths)
|
|
|
|
## Schema Modes
|
|
|
|
Choose between two schema handling approaches:
|
|
|
|
### Embedded Mode (Default)
|
|
```python
|
|
agent = AgentBuilderAssistant.create_agent(schema_mode="embedded")
|
|
```
|
|
- Full AgentConfig schema embedded in context
|
|
- Faster execution, higher token usage
|
|
- Best for comprehensive schema work
|
|
|
|
### Query Mode
|
|
```python
|
|
agent = AgentBuilderAssistant.create_agent(schema_mode="query")
|
|
```
|
|
- Dynamic schema queries via tools
|
|
- Lower initial token usage
|
|
- Best for targeted schema operations
|
|
|
|
## Example Interactions
|
|
|
|
### Create a new agent
|
|
```
|
|
Create an agent that can roll n-sided number and check whether the rolled number is prime.
|
|
```
|
|
|
|
### Add Capabilities to Existing Agent
|
|
```
|
|
Could you make the agent under `./config_based/roll_and_check` a multi agent system : root_agent only for request routing and two sub agents responsible for two functions respectively ?
|
|
```
|
|
|
|
### Project Structure Analysis
|
|
```
|
|
Please analyze my existing project structure at './config_based/roll_and_check' and suggest improvements for better organization.
|
|
```
|
|
|
|
## Tool Ecosystem
|
|
|
|
### Core File Operations
|
|
- **`read_config_files`** - Read multiple YAML configurations with analysis
|
|
- **`write_config_files`** - Write multiple YAML files with validation
|
|
- **`read_files`** - Read multiple files of any type
|
|
- **`write_files`** - Write multiple files with backup options
|
|
- **`delete_files`** - Delete multiple files with backup options
|
|
|
|
### Project Analysis
|
|
- **`explore_project`** - Analyze project structure and suggest paths
|
|
- **`resolve_root_directory`** - Resolve paths with working directory context
|
|
|
|
### ADK knowledge Context
|
|
- **`google_search`** - Search for ADK examples and documentation
|
|
- **`url_context`** - Fetch content from URLs (GitHub, docs, etc.)
|
|
- **`search_adk_source`** - Search ADK source code with regex patterns
|
|
|
|
|
|
## File Organization Conventions
|
|
|
|
### ADK Project Structure
|
|
```
|
|
my_adk_project/
|
|
└── src/
|
|
└── my_app/
|
|
├── root_agent.yaml
|
|
├── sub_agent_1.yaml
|
|
├── sub_agent_2.yaml
|
|
├── tools/
|
|
│ ├── process_email.py # No _tool suffix
|
|
│ └── analyze_sentiment.py
|
|
└── callbacks/
|
|
├── logging.py # No _callback suffix
|
|
└── security.py
|
|
```
|
|
|
|
### Naming Conventions
|
|
- **Agent directories**: `snake_case`
|
|
- **Tool files**: `descriptive_action.py`
|
|
- **Callback files**: `descriptive_name.py`
|
|
- **Tool paths**: `project_name.tools.module.function_name`
|
|
- **Callback paths**: `project_name.callbacks.module.function_name`
|
|
|
|
## Session Management
|
|
|
|
### Root Directory Binding
|
|
Each chat session is bound to a single root directory:
|
|
|
|
- **Automatic Detection**: Working directory provided to model automatically
|
|
- **Session State**: Tracks established root directory across conversations
|
|
- **Path Resolution**: All relative paths resolved against session root
|
|
- **Directory Switching**: Suggest user starting new session to work in different directory
|
|
|
|
### Working Directory Context
|
|
```python
|
|
# The assistant automatically receives working directory context
|
|
agent = AgentBuilderAssistant.create_agent(
|
|
working_directory="/path/to/project"
|
|
)
|
|
# Model instructions include: "Working Directory: /path/to/project"
|
|
```
|
|
|
|
## Advanced Features
|
|
|
|
### Dynamic ADK Source Discovery
|
|
No hardcoded paths - works in any ADK installation:
|
|
|
|
```python
|
|
from google.adk.agent_builder_assistant.utils import (
|
|
find_adk_source_folder,
|
|
get_adk_schema_path,
|
|
load_agent_config_schema
|
|
)
|
|
|
|
# Find ADK source dynamically
|
|
adk_path = find_adk_source_folder()
|
|
|
|
# Load schema with caching
|
|
schema = load_agent_config_schema()
|
|
```
|
|
|
|
### Schema Validation
|
|
All YAML files validated against AgentConfig schema:
|
|
|
|
- **Syntax Validation**: YAML parsing with detailed error locations
|
|
- **Schema Compliance**: Full AgentConfig.json validation
|
|
- **Best Practices**: ADK naming and structure conventions
|
|
- **Error Recovery**: Clear suggestions for fixing validation errors
|
|
|
|
## Performance Optimization
|
|
|
|
### Efficient Operations
|
|
- **Multi-file Processing**: Batch operations reduce overhead
|
|
- **Schema Caching**: Global cache prevents repeated file reads
|
|
- **Dynamic Discovery**: Efficient ADK source location caching
|
|
- **Session Context**: Persistent directory binding across conversations
|
|
|
|
### Memory Management
|
|
- **Lazy Loading**: Schema loaded only when needed
|
|
- **Cache Control**: Manual cache clearing for testing/development
|
|
- **Resource Cleanup**: Automatic cleanup of temporary files
|
|
|
|
## Error Handling
|
|
|
|
### Comprehensive Validation
|
|
- **Path Validation**: All paths validated before file operations
|
|
- **Schema Compliance**: AgentConfig validation with detailed error reporting
|
|
- **Python Syntax**: Syntax validation for generated Python code
|
|
- **Backup Creation**: Automatic backups before overwriting files
|
|
|
|
### Recovery Mechanisms
|
|
- **Retry Suggestions**: Clear guidance for fixing validation errors
|
|
- **Backup Restoration**: Easy recovery from automatic backups
|
|
- **Error Context**: Detailed error messages with file locations and suggestions
|
|
|
|
This comprehensive assistant provides everything needed for intelligent, efficient ADK agent system creation with proper validation, file management, and project organization.
|