A Python library that provides intelligent multi-agent orchestration for Google Cloud Platform. Routes user messages to appropriate agents, manages shared memory via Firestore, and supports agent-to-agent communication using a defined ACP (Agent Communication Protocol).
Project description
๐ gcp-agentor
GCP-Based Multi-Agent Orchestration Library
A Python library that provides intelligent multi-agent orchestration for Google Cloud Platform. Routes user messages to appropriate agents, manages shared memory via Firestore, and supports agent-to-agent communication using a defined ACP (Agent Communication Protocol).
โจ Features
- ๐ค Multi-Agent Routing: Intelligent message routing based on intent and context
- ๐ง Shared Memory: Persistent memory management using Firestore
- ๐ก ACP Protocol: Standardized Agent Communication Protocol
- ๐ Agent Registry: Dynamic agent registration and discovery
- ๐ Reasoning Logs: Comprehensive logging of agent decisions and reasoning
- โ๏ธ GCP Integration: Native support for Vertex AI Agent Builder and ADK
- ๐ง Extensible: Easy to add new agents and capabilities
๐ Quick Start
Installation
pip install gcp-agentor
Basic Usage
from gcp_agentor import AgentOrchestrator
from gcp_agentor.acp import ACPMessage
# Initialize the orchestrator
orchestrator = AgentOrchestrator()
# Create an ACP message
message = ACPMessage({
"from": "user:farmer123",
"to": "agent:router",
"intent": "get_crop_advice",
"message": "What crop should I grow in July?",
"language": "en-US",
"context": {
"location": "Jalgaon",
"soil_pH": 6.5
}
})
# Handle the message
response = orchestrator.handle_message(message.to_dict())
print(response)
๐ฆ Core Components
1. Agent Registry (agent_registry.py)
Manages registered agents and their metadata.
from gcp_agentor import AgentRegistry
registry = AgentRegistry()
registry.register("crop_advisor", CropAdvisorAgent(), {"capabilities": ["crop_advice"]})
2. Router (router.py)
Routes ACP messages to appropriate agents based on intent.
from gcp_agentor import AgentRouter
router = AgentRouter(registry, memory_manager)
response = router.route(acp_message)
3. Memory Manager (memory.py)
Shared memory layer using Firestore.
from gcp_agentor import MemoryManager
memory = MemoryManager()
memory.set_context("user123", "last_crop", "wheat")
context = memory.get_context("user123", "last_crop")
4. ACP Protocol (acp.py)
Standardized message schema for agent communication.
from gcp_agentor.acp import ACPMessage
message = ACPMessage({
"from": "user:farmer123",
"to": "agent:router",
"intent": "get_crop_advice",
"message": "What crop to grow?",
"context": {"location": "Jalgaon"}
})
๐๏ธ Architecture
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ User Input โโโโโถโ Agent Router โโโโโถโ Agent Registry โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ ACP Message โ โ Memory Manager โ โ Agent Invoker โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ โ โ
โผ โผ โผ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
โ Reasoning Loggerโ โ Firestore โ โ Vertex AI/ADK โ
โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ โโโโโโโโโโโโโโโโโโโ
๐ง Configuration
Environment Variables
export GOOGLE_APPLICATION_CREDENTIALS="path/to/service-account.json"
export GCP_PROJECT_ID="your-project-id"
export FIRESTORE_COLLECTION="agentor_memory"
GCP Setup
-
Enable APIs:
- Cloud Firestore API
- Vertex AI API
- Cloud Pub/Sub API (optional)
-
Service Account:
- Create a service account with appropriate permissions
- Download the JSON key file
- Set
GOOGLE_APPLICATION_CREDENTIALS
๐ Examples
AgriAgent Example
from gcp_agentor.examples.agri_agent import (
CropAdvisorAgent,
WeatherAgent,
PestAssistantAgent
)
# Register agents
registry = AgentRegistry()
registry.register("crop_advisor", CropAdvisorAgent())
registry.register("weather", WeatherAgent())
registry.register("pest_assistant", PestAssistantAgent())
# Use the orchestrator
orchestrator = AgentOrchestrator()
response = orchestrator.handle_message({
"from": "user:farmer123",
"intent": "get_crop_advice",
"message": "What should I plant this season?",
"context": {"location": "Jalgaon", "season": "monsoon"}
})
๐งช Testing
# Install development dependencies
pip install -e ".[dev]"
# Run tests
pytest tests/
# Run with coverage
pytest --cov=gcp_agentor tests/
๐ API Reference
AgentOrchestrator
Main orchestrator class that coordinates all components.
class AgentOrchestrator:
def __init__(self, project_id: str = None, collection_name: str = "agentor_memory")
def handle_message(self, acp_message: dict) -> dict
def register_agent(self, name: str, agent: Any, metadata: dict = {}) -> None
ACPMessage
Standardized message format for agent communication.
class ACPMessage:
def __init__(self, data: dict)
def to_dict(self) -> dict
def is_valid(self) -> bool
๐ค Contributing
- Fork the repository
- Create a feature branch
- Make your changes
- Add tests
- Submit a pull request
๐ License
MIT License - see LICENSE file for details.
๐ Support
- ๐ง Email: support@gcp-agentor.com
- ๐ Issues: GitHub Issues
- ๐ Docs: Documentation
Built with โค๏ธ for the GCP community
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file gcp_agentor-0.1.0.tar.gz.
File metadata
- Download URL: gcp_agentor-0.1.0.tar.gz
- Upload date:
- Size: 5.4 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
6b13e0996abfda1bcbdf6a550bdbb6564311fb5377e1c256dbc4c8c29fa85d1a
|
|
| MD5 |
a0d61241f8581d15b588dcef7d4b2fcc
|
|
| BLAKE2b-256 |
e3b884f4a9bd672bbb7653875a9c897693483df1d782f033172f9f3ce4fb9580
|
File details
Details for the file gcp_agentor-0.1.0-py3-none-any.whl.
File metadata
- Download URL: gcp_agentor-0.1.0-py3-none-any.whl
- Upload date:
- Size: 3.6 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.5
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
77645cafb6c1891b37445bdc8399c6da26df0f14a104ba7914662aa3fb6c8e38
|
|
| MD5 |
e3746f916800eca09ec697563f48febe
|
|
| BLAKE2b-256 |
8447a7a4c4d0b50a29a9466eb9707928b63a4873282f3477dd1f6661b1467196
|