Feat(Expansion Pack): Part 1 - Google Cloud Setup

This commit is contained in:
antmikinka
2025-07-27 12:26:53 -07:00
parent a2ddf926e5
commit c7fc5d3606
8 changed files with 392 additions and 0 deletions

File diff suppressed because one or more lines are too long

After

Width:  |  Height:  |  Size: 181 KiB

View File

@@ -0,0 +1,13 @@
# 1. Create new Google Cloud Project
gcloud projects create {{PROJECT_ID}} --name="{{COMPANY_NAME}} AI Agent System"
# 2. Set default project
gcloud config set project {{PROJECT_ID}}
# 3. Enable required APIs
gcloud services enable aiplatform.googleapis.com
gcloud services enable storage.googleapis.com
gcloud services enable cloudfunctions.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable firestore.googleapis.com
gcloud services enable secretmanager.googleapis.com

View File

@@ -0,0 +1,13 @@
# 1. Create new Google Cloud Project
gcloud projects create {{PROJECT_ID}} --name="{{COMPANY_NAME}} AI Agent System"
# 2. Set default project
gcloud config set project {{PROJECT_ID}}
# 3. Enable required APIs
gcloud services enable aiplatform.googleapis.com
gcloud services enable storage.googleapis.com
gcloud services enable cloudfunctions.googleapis.com
gcloud services enable run.googleapis.com
gcloud services enable firestore.googleapis.com
gcloud services enable secretmanager.googleapis.com

View File

@@ -0,0 +1,25 @@
{{company_name}}-ai-agents/
├── agents/
│ ├── __init__.py
│ ├── {{team_1}}/
│ │ ├── __init__.py
│ │ ├── {{agent_1}}.py
│ │ └── {{agent_2}}.py
│ └── {{team_2}}/
├── tasks/
│ ├── __init__.py
│ ├── {{task_category_1}}/
│ └── {{task_category_2}}/
├── templates/
│ ├── {{document_type_1}}/
│ └── {{document_type_2}}/
├── checklists/
├── data/
├── workflows/
├── config/
│ ├── settings.py
│ └── agent_config.yaml
├── main.py
└── deployment/
├── Dockerfile
└── cloudbuild.yaml

View File

@@ -0,0 +1,34 @@
import os
from pydantic import BaseSettings
class Settings(BaseSettings):
# Google Cloud Configuration
project_id: str = "{{PROJECT_ID}}"
location: str = "{{LOCATION}}" # e.g., "us-central1"
# Company Information
company_name: str = "{{COMPANY_NAME}}"
industry: str = "{{INDUSTRY}}"
business_type: str = "{{BUSINESS_TYPE}}"
# Agent Configuration
default_model: str = "gemini-1.5-pro"
max_iterations: int = 10
timeout_seconds: int = 300
# Storage Configuration
bucket_name: str = "{{COMPANY_NAME}}-ai-agents-storage"
database_name: str = "{{COMPANY_NAME}}-ai-agents-db"
# API Configuration
session_service_type: str = "vertex" # or "in_memory" for development
artifact_service_type: str = "gcs" # or "in_memory" for development
memory_service_type: str = "vertex" # or "in_memory" for development
# Security
service_account_path: str = "./{{COMPANY_NAME}}-ai-agents-key.json"
class Config:
env_file = ".env"
settings = Settings()

View File

@@ -0,0 +1,70 @@
import asyncio
from google.adk.agents import LlmAgent
from google.adk.runners import Runner
from google.adk.sessions import VertexAiSessionService
from google.adk.artifacts import GcsArtifactService
from google.adk.memory import VertexAiRagMemoryService
from google.adk.models import Gemini
from config.settings import settings
from agents.{{primary_team}}.{{main_orchestrator}} import {{MainOrchestratorClass}}
class {{CompanyName}}AISystem:
def __init__(self):
self.settings = settings
self.runner = None
self.main_orchestrator = None
async def initialize(self):
"""Initialize the AI agent system"""
# Create main orchestrator
self.main_orchestrator = {{MainOrchestratorClass}}()
# Initialize services
session_service = VertexAiSessionService(
project=self.settings.project_id,
location=self.settings.location
)
artifact_service = GcsArtifactService(
bucket_name=self.settings.bucket_name
)
memory_service = VertexAiRagMemoryService(
rag_corpus=f"projects/{self.settings.project_id}/locations/{self.settings.location}/ragCorpora/{{COMPANY_NAME}}-knowledge"
)
# Create runner
self.runner = Runner(
app_name=f"{self.settings.company_name}-AI-System",
agent=self.main_orchestrator,
session_service=session_service,
artifact_service=artifact_service,
memory_service=memory_service
)
print(f"{self.settings.company_name} AI Agent System initialized successfully!")
async def run_agent_interaction(self, user_id: str, session_id: str, message: str):
"""Run agent interaction"""
if not self.runner:
await self.initialize()
async for event in self.runner.run_async(
user_id=user_id,
session_id=session_id,
new_message=message
):
yield event
# Application factory
async def create_app():
ai_system = {{CompanyName}}AISystem()
await ai_system.initialize()
return ai_system
if __name__ == "__main__":
# Development server
import uvicorn
uvicorn.run("main:app", host="0.0.0.0", port=8000, reload=True)

View File

@@ -0,0 +1,26 @@
steps:
# Build the container image
- name: 'gcr.io/cloud-builders/docker'
args: ['build', '-t', 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA', '.']
# Push the container image to Container Registry
- name: 'gcr.io/cloud-builders/docker'
args: ['push', 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA']
# Deploy container image to Cloud Run
- name: 'gcr.io/google.com/cloudsdktool/cloud-sdk'
entrypoint: gcloud
args:
- 'run'
- 'deploy'
- '{{COMPANY_NAME}}-ai-agents'
- '--image'
- 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA'
- '--region'
- '{{LOCATION}}'
- '--platform'
- 'managed'
- '--allow-unauthenticated'
images:
- 'gcr.io/{{PROJECT_ID}}/{{COMPANY_NAME}}-ai-agents:$COMMIT_SHA'

View File

@@ -0,0 +1,109 @@
# BMad Expansion Pack: Google Cloud Vertex AI Agent System
[](https://opensource.org/licenses/MIT)
[](https://www.google.com/search?q=https://github.com/antmikinka/BMAD-METHOD)
[](https://cloud.google.com/)
This expansion pack provides a complete, deployable starter kit for building and hosting sophisticated AI agent systems on Google Cloud Platform (GCP). It bridges the gap between the BMad Method's natural language framework and a production-ready cloud environment, leveraging Google Vertex AI, Cloud Run, and the Google Agent Development Kit (ADK).
## Features
* **Automated GCP Setup**: `gcloud` scripts to configure your project, service accounts, and required APIs in minutes.
* **Production-Ready Deployment**: Includes a `Dockerfile` and `cloudbuild.yaml` for easy, repeatable deployments to Google Cloud Run.
* **Rich Template Library**: A comprehensive set of BMad-compatible templates for Teams, Agents, Tasks, Workflows, Documents, and Checklists.
* **Pre-configured Agent Roles**: Includes powerful master templates for key agent archetypes like Orchestrators and Specialists.
* **Highly Customizable**: Easily adapt the entire system with company-specific variables and industry-specific configurations.
* **Powered by Google ADK**: Built on the official Google Agent Development Kit for robust and native integration with Vertex AI services.
## Prerequisites
Before you begin, ensure you have the following installed and configured:
* A Google Cloud Platform (GCP) Account with an active billing account.
* The [Google Cloud SDK (`gcloud` CLI)](https://www.google.com/search?q=%5Bhttps://cloud.google.com/sdk/docs/install%5D\(https://cloud.google.com/sdk/docs/install\)) installed and authenticated.
* [Docker](https://www.docker.com/products/docker-desktop/) installed on your local machine.
* Python 3.11+
## Quick Start Guide
Follow these steps to get your own AI agent system running on Google Cloud.
### 1\. Configure Setup Variables
The setup scripts use placeholder variables. Before running them, open the files in the `/scripts` directory and replace the following placeholders with your own values:
* `{{PROJECT_ID}}`: Your unique Google Cloud project ID.
* `{{COMPANY_NAME}}`: Your company or project name (used for naming resources).
* `{{LOCATION}}`: The GCP region you want to deploy to (e.g., `us-central1`).
### 2\. Run the GCP Setup Scripts
Execute the setup scripts to prepare your Google Cloud environment.
```bash
# Navigate to the scripts directory
cd scripts/
# Run the project configuration script
sh 1-initial-project-config.sh
# Run the service account setup script
sh 2-service-account-setup.sh
```
These scripts will enable the necessary APIs, create a service account, assign permissions, and download a JSON key file required for authentication.
### 3\. Install Python Dependencies
Install the required Python packages for the application.
```bash
# From the root of the expansion pack
pip install -r requirements.txt
```
### 4\. Deploy to Cloud Run
Deploy the entire agent system as a serverless application using Cloud Build.
```bash
# From the root of the expansion pack
gcloud builds submit --config deployment/cloudbuild.yaml .
```
This command will build the Docker container, push it to the Google Container Registry, and deploy it to Cloud Run. Your agent system is now live\!
## How to Use
Once deployed, the power of this system lies in its natural language templates.
1. **Define Your Organization**: Go to `/templates/teams` and use the templates to define your agent teams (e.g., Product Development, Operations).
2. **Customize Your Agents**: In `/templates/agents`, use the `Master-Agent-Template.yaml` to create new agents or customize the existing Orchestrator and Specialist templates. Define their personas, skills, and commands in plain English.
3. **Build Your Workflows**: In `/templates/workflows`, link agents and tasks together to create complex, automated processes.
The deployed application reads these YAML and Markdown files to dynamically construct and run your AI workforce. When you update a template, your live agents automatically adopt the new behaviors.
## What's Included
This expansion pack has a comprehensive structure to get you started:
```
/
├── deployment/ # Dockerfile and cloudbuild.yaml for deployment
├── scripts/ # GCP setup scripts (project config, service accounts)
├── src/ # Python source code (main.py, settings.py)
├── templates/
│ ├── agents/ # Master, Orchestrator, Specialist agent templates
│ ├── teams/ # Team structure templates
│ ├── tasks/ # Generic and specialized task templates
│ ├── documents/ # Document and report templates
│ ├── checklists/ # Quality validation checklists
│ ├── workflows/ # Workflow definition templates
│ └── ...and more
├── config/ # Customization guides and variable files
└── requirements.txt # Python package dependencies
```
## Contributing
Contributions are welcome\! Please follow the main project's `CONTRIBUTING.md` guidelines. For major changes or new features for this expansion pack, please open an issue or discussion first.