An intelligent culinary agent built with the Google Agent Development Kit (ADK), Gemini, and Google Cloud services. The Recipe Assistant helps users discover recipes, scale portion yields, locate nearby grocery stores, generate dish visuals and cooking videos, and remember user dietary restrictions.
Based on the codebase in app/, the agent currently implements the following capabilities:
- Firestore Recipe Database: Queries and retrieves structured recipes stored in Google Cloud Firestore (
search_recipes,get_recipe_details,add_recipe). - Yield & Ingredient Scaling: Rescales ingredient amounts for target serving sizes (
scale_recipe_yield). - External Recipe Discovery: Searches external meal database APIs for global recipe ideas (
search_external_recipes). - Geolocation & Nearby Grocery Search: Geocodes user addresses and locates nearby supermarkets and specialty food stores via Google Maps & Places APIs (
geocode_address,find_nearby_places). - AI Food Visual Generation: Generates realistic dish photography using Gemini (
generate_recipe_visual), uploading image bytes to Google Cloud Storage and saving artifacts to the Playground panel. - AI Cooking Video Generation: Generates short culinary video clips using Google's Omni model (
gemini-omni-flash-previewvia Vertex AI Interactions API) ingenerate_recipe_video, uploading video bytes to Cloud Storage and saving artifacts. - Memory Bank Persistence: Remembers user allergen information and dietary preferences across sessions (
PreloadMemoryTool,generate_memories_callback). - Adaptive UI (A2UI): Renders structured, interactive UI cards using
A2uiSchemaManager(BasicCatalog v0.8) for dish details, ingredient lists, and location results. - Sandboxed Numerical Execution: Runs complex numerical calculations securely via
AgentEngineSandboxCodeExecutor.
- Vertex AI & Gemini:
gemini-2.5-flashfor agent reasoning andgemini-omni-flash-previewfor video generation. - Google Cloud Firestore: NoSQL document store for persistent recipe catalogs.
- Google Cloud Storage: Public bucket hosting generated dish images and video clips.
- Google Maps & Places APIs: Address geocoding and supermarket place searches.
- Agent Engine Reasoning Engine: Cloud execution environment for agent logic and sandboxed code execution.
.
├── app/
│ ├── agent.py # Main ADK agent definition, tools, and A2UI instruction
│ └── __init__.py
├── frontend/
│ ├── main.py # FastAPI proxy backend
│ └── static/
│ └── index.html # Rebranded chat interface & A2UI renderer
├── tests/ # Integration and unit tests
├── agents-cli-manifest.yaml# Agent Engine manifest
├── demo.gif # Demonstration recording
└── README.md
- Python 3.11+
uvpackage manager
Set the required project and API key configuration:
export FIRESTORE_PROJECT_ID="your-gcp-project-id"
export GCS_BUCKET_NAME="your-gcs-bucket-name"
export GOOGLE_MAPS_API_KEY="your-google-maps-api-key"Start the local ADK Web Playground:
uv run adk web . --port 8080 --reload_agentsNavigate to the frontend/ directory and launch the FastAPI proxy server:
cd frontend
export AGENT_ENGINE_RESOURCE_NAME="projects/YOUR_PROJECT/locations/us-central1/reasoningEngines/YOUR_ENGINE_ID"
export AGENT_DIRECTORY="app"
uv run python main.pyAccess the local web interface by navigating to port 8080 in your web browser.
GOOGLE_GENAI_USE_VERTEXAI=true GOOGLE_CLOUD_PROJECT="your-gcp-project-id" uv run pytest