consul-adk
Project description
consul-adk
This is an AI Agent Development Kit(ADK) built on top of Google ADK to implement Agentic Service Mesh. Using this and Consul CE/ENT, you can discover and scale the Agents and MCP servers and create a desired agent graph using Service intentions. The ADK help to create the desired client's for the Agents and MCP servers as soon as the intentions are defined in Consul.
Installation
pip install consul-adk
Usage Example
Below is a simple example to get you started:
A simple agent with hardcoded instructions
# 🧠 Gemini-based AI agent provided by Google's ADK
from google.adk.agents.llm_agent import LlmAgent
from google.adk.tools import FunctionTool
from utilities.consul_agent import ConsulEnabledAIAgent
class WeatherAgent(ConsulEnabledAIAgent):
def build_agent(self) -> LlmAgent:
"""
⚙️ Creates and configures a Gemini agent with weather capabilities.
Returns:
LlmAgent: A configured agent object from Google's ADK
"""
# Manually adding the WeatherTool to the agent's tools
tools = [
FunctionTool(WeatherTool(name="WeatherTool", description="Gets the realtime weather for one or more locations").get_weather)
]
# Automatically add MCP tools as they are registered in Consul and Intentions are defined
for tool_set in self._remote_mcp_tools.values():
tools.append(tool_set)
return LlmAgent(
model="gemini-1.5-flash-latest", # Gemini model version
name="weather_agent", # Name of the agent
description="Provides weather information for multiple locations", # Description for metadata
instruction="You are a helpful weather assistant. When asked about weather, extract the 'locations' parameter as a list (even for a single location), then use the 'WeatherTool' to provide weather information. When multiple locations are requested, organize your response clearly with headings for each location. Be friendly and informative. If user asks for locations with specific weather conditions, first get weather for several cities in that region, then recommend ones that match the criteria.",
# System prompt
tools=tools,
)
from google.adk.tools import BaseTool
class WeatherTool(BaseTool):
"""A tool that provides weather information for multiple locations.
Attributes:
name: The name of the tool.
description: A brief description of what the tool does.
"""
name = "WeatherTool"
description = "Gets the current weather information for one or more specified locations"
async def get_weather(self, locations: List[str]) -> List[dict[str, Any]]:
# Hey developer, implement the logic to fetch weather data here
An orchestrator agent which adapts its instructions by reading the child-agent card.
class OrchestratorAgent(ConsulEnabledAIAgent):
def build_agent(self) -> LlmAgent:
"""
Construct the Gemini-based LlmAgent with tools
"""
tools = [
self._list_agents, # built-in tool to list all registered agents
self._agent_skills, # built-in tool to list all skills of a specific agent
self._delegate_task, # built-in tool to delegate tasks to other agents
self._tell_time # built-in tool to tell the current time
]
# Automatically add MCP tools as they are registered in Consul and Intentions are defined
for tool_set in self._remote_mcp_tools.values():
# Add each MCPToolset to the agent's tools
tools.append(tool_set)
ai_agent = LlmAgent(
model="gemini-1.5-flash-latest",
name="orchestrator_agent",
description="Delegates user queries to child A2A agents based on intent.",
instruction=self._root_instruction, # dynamically generated instruction based on current state of the child agents
tools=tools
)
return ai_agent
Features
- Auto discover AI agents and creates their client connections in this agent as soon as Consul intentions are defined
- Auto-configure agents and MCP servers
- Send and manage tasks between agents
Documentation
For more details, see the internal.md or explore the client/, models/, and server/ directories.
Contributing
We welcome contributions! Please read our contributing guidelines for details on how to get started.
Please run below command to ensure your code compiles before it is submitted:
python -m build
Project details
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 consul_adk-0.0.5.tar.gz.
File metadata
- Download URL: consul_adk-0.0.5.tar.gz
- Upload date:
- Size: 31.7 kB
- Tags: Source
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
cec98c782aed5e98fa29f9ec0bd8093b306e13f10df5653b5128d068488c6655
|
|
| MD5 |
ceb194036099417085189338b4d8d60a
|
|
| BLAKE2b-256 |
a13a32e46126fe608e41d2f0cb7324c677c14f20d01b421ef212e9999b82eb54
|
File details
Details for the file consul_adk-0.0.5-py3-none-any.whl.
File metadata
- Download URL: consul_adk-0.0.5-py3-none-any.whl
- Upload date:
- Size: 30.9 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? No
- Uploaded via: twine/6.1.0 CPython/3.13.7
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
23dafe3b7f32fa99654f179c3896e8e553f69024293a5448efaebfa7037cf7dc
|
|
| MD5 |
b7fd68391fba9543d61275f59222daf1
|
|
| BLAKE2b-256 |
d2362f79d3f07386c958063b5afa285185047d38c875ba557b4a03875e6ad86c
|