Where your feelings feed the recipe.
ByteMyMood is an intelligent recipe recommendation system that uses a multi-agent architecture to understand your mood and preferences, plan meals, and execute cooking instructions.
- Mood-based recipe recommendations - AI understands your emotional state
- Weather-aware suggestions - Considers current weather conditions
- Personalized cooking plans - Adapts to your preferences and skills
- Visual cooking guidance - AI-generated images for each step
- Smart shopping lists - Paper-like format organized by store sections
- Equipment verification - Ensures you have the right tools
- Robust error handling - Retry logic for API failures
- User profile management - Persistent preferences and mood tracking
- Recipe verification - Ensures all suggestions are real and accessible
The system is built on a multi-agent architecture with three specialized sub-agents:
- Analyzes user's mood and preferences
- Generates creative recipe ideas
- Considers dietary restrictions and preferences
- Integrates weather data for contextual suggestions
- Verifies recipes through web search
- Located in
bytemymood/sub_agents/inspiration/
Tools & Agent-tools:
- Weather Check Agent: Uses
weather_api_toolto get current weather conditions - Recipe Grounding Agent: Uses
google_search_groundingto verify recipe authenticity - Memory Tools:
memorizefor storing user preferences and mood data
- Breaks down recipes into manageable steps
- Creates detailed cooking plans
- Generates shopping lists
- Analyzes available ingredients from fridge photos
- Verifies kitchen equipment requirements
- Located in
bytemymood/sub_agents/planning/
Tools & Agent-tools:
- Fridge Agent: Analyzes available ingredients using
memorizeandmemorize_list - Shopping List Agent: Generates organized shopping lists using
memorizeandmemorize_list - Memory Tools:
memorizeandmemorize_listfor tracking ingredients and lists
- Provides step-by-step cooking instructions
- Generates visual aids for each cooking step
- Handles real-time adjustments
- Manages cooking process
- Located in
bytemymood/sub_agents/execution/
Tools:
- Image Generation:
gemini_image_generation_toolfor creating cooking step visuals - Prompt Enhancement:
prompt_enhance_toolfor optimizing image generation prompts - Memory Tools:
memorizeandmemorize_listfor tracking cooking progress
- Memory System (
memory.py): User profile management and conversation state - Weather API (
weather.py): Real-time weather data with retry logic - Search API (
search.py): Recipe verification and web search capabilities - Image Generation (
image_generation/): Google Gemini-powered visual cooking aids
git clone <repository-url>
cd ByteMyMood# macOS/Linux
curl -LsSf https://astral.sh/uv/install.sh | sh
# Or using pip
pip install uv# Create virtual environment and install all dependencies
uv sync
# Install project in editable mode
uv pip install -e .Create a .env file in the project root:
# Create .env file
touch .envAdd your API keys to .env:
GOOGLE_API_KEY=your_google_api_key
GOOGLE_GEOCODING_API_KEY=your_geocoding_key
GOOGLE_WEATHER_API_KEY=your_weather_key# Install Google Cloud CLI if not already installed
# https://cloud.google.com/sdk/docs/install
# Authenticate your account
gcloud auth application-default login# Start ByteMyMood CLI
uv run adk run bytemymood# Launch web interface
uv run adk webDeploy ByteMyMood to Google Cloud Run for scalable, serverless hosting with automatic scaling and global distribution.
Before deploying, ensure you have the following set up:
- Google Cloud CLI installed and configured
- Google Cloud Project with billing enabled
- ADK CLI installed (
pip install google-adk)
# Log in to your GCP account
gcloud auth login
# Set your default project (replace with your actual project ID)
gcloud config set project YOUR_PROJECT_ID
# Set your deployment region
gcloud config set run/region us-central1
# Enable required APIs
gcloud services enable run.googleapis.com
gcloud services enable aiplatform.googleapis.com
gcloud services enable cloudbuild.googleapis.comWe'll create the Cloud Run service directly through the Google Cloud Console.
- Go to Google Cloud Console
- Select your project from the project dropdown
- Navigate to Cloud Run in the left sidebar
- Click "CREATE SERVICE"
Basic Settings:
- Service name:
bytemymood-service - Region: Choose your preferred region (e.g.,
us-central1) - CPU allocation:
CPU is only allocated during request processing - Memory:
512 MiB(recommended for ADK applications)
Container Settings:
- Container image URL: Leave blank (will be set by ADK deployment)
- Port:
8080(default for Cloud Run) - Request timeout:
300seconds (5 minutes for AI processing)
You have two options for configuring environment variables:
Option A: Using Google Cloud Console (Recommended) Click "VARIABLES & SECRETS" and add the following environment variables:
| Variable Name | Value | Description |
|---|---|---|
GOOGLE_GENAI_USE_VERTEXAI |
TRUE |
Enable Vertex AI for Gemini models |
GOOGLE_CLOUD_PROJECT |
YOUR_PROJECT_ID |
Your Google Cloud project ID |
GOOGLE_CLOUD_LOCATION |
global |
Vertex AI location (keep as global) |
GOOGLE_CLOUD_REGION |
us-central1 |
Specific region for Vertex AI |
Option B: Using .env File
Create a .env file in your project root:
# Create .env file
touch .envAdd the following content to .env:
# Cloud Run deployment configuration
GOOGLE_GENAI_USE_VERTEXAI=TRUE
GOOGLE_CLOUD_PROJECT=YOUR_PROJECT_ID
GOOGLE_CLOUD_LOCATION=global
GOOGLE_CLOUD_REGION=us-central1Important Notes:
- Replace
YOUR_PROJECT_IDwith your actual GCP project ID GOOGLE_CLOUD_LOCATIONmust remainglobal- These settings enable your Cloud Run service to access Vertex AI automatically
- If using Option B (.env file), the ADK deployment will automatically read these variables
Authentication:
- Authentication:
Allow unauthenticated invocations(for public access) - Service account: Use default compute service account
Networking:
- VPC connector: None (default)
- Ingress:
Allow all traffic
Scaling:
- Minimum number of instances:
0(for cost optimization) - Maximum number of instances:
100(adjust based on expected traffic) - Concurrency:
80(requests per instance)
Resource Limits:
- CPU:
1(vCPU) - Memory:
512 MiB
- Review all settings
- Click "CREATE"
- Wait for the service to be created (this may take a few minutes)
Note: The service will be created but won't have a container image yet. We'll deploy the actual application in the next step.
Navigate to your ByteMyMood project root directory and run the deployment command:
# Deploy ByteMyMood to Cloud Run
adk deploy cloud_run \
--project=YOUR_CLOUD_PROJECT_ID \
--region=us-central1 \
--service_name=your-cloud-run-service \
--with_ui \
./bytemymoodCommand Parameters:
--project: Your Google Cloud project ID--region: Your preferred Cloud Run region--service_name: Name for your Cloud Run service--with_ui: Enables the web interface./bytemymood: Path to your ADK project
bytemymood/
├── agent.py
├── prompt.py
├── sub_agents/
│ ├── inspiration/
│ │ ├── agent.py
│ │ └── prompt.py
│ ├── planning/
│ │ ├── agent.py
│ │ └── prompt.py
│ └── execution/
│ ├── agent.py
│ └── prompt.py
├── tools/
│ ├── memory.py
│ ├── weather.py
│ ├── search.py
│ └── image_generation/
│ ├── image_generation.py
│ └── image_generation_prompt.py
├── profiles/
│ ├── user_profile_default.json
│ ├── user_profile_example.json
│ └── user_profile_example_with_recipe.json
├── shared_libraries/
│ ├── constants.py
│ └── types.py
└── tests/
└── unit/
├── test_agents.py
├── test_tools.py
├── test_profile.py
├── test_image_generation.py
└── test_weather_api.py
See LICENSE for details.
