Spaces:
Runtime error
Runtime error
Upload folder using huggingface_hub
Browse files- Dockerfile +22 -15
- README.md +67 -35
- agentic_system.py +3 -2
- app.py +92 -54
- team_management.py +73 -12
Dockerfile
CHANGED
|
@@ -1,32 +1,39 @@
|
|
| 1 |
FROM python:3.10-slim
|
| 2 |
|
| 3 |
-
#
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 4 |
RUN apt-get update && apt-get install -y \
|
|
|
|
| 5 |
curl \
|
| 6 |
-
|
| 7 |
&& rm -rf /var/lib/apt/lists/*
|
| 8 |
|
| 9 |
-
|
| 10 |
-
|
| 11 |
-
# Set DNS configuration
|
| 12 |
-
RUN echo "nameserver 8.8.8.8" > /etc/resolv.conf && \
|
| 13 |
-
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
|
| 14 |
-
|
| 15 |
-
# Set network timeouts
|
| 16 |
-
ENV CURL_TIMEOUT=30
|
| 17 |
-
ENV REQUESTS_TIMEOUT=30
|
| 18 |
|
| 19 |
-
# Copy
|
| 20 |
COPY requirements.txt .
|
|
|
|
|
|
|
| 21 |
RUN pip install --no-cache-dir -r requirements.txt
|
| 22 |
|
| 23 |
# Copy application code
|
| 24 |
COPY . .
|
| 25 |
|
| 26 |
-
#
|
| 27 |
-
|
| 28 |
-
|
| 29 |
|
|
|
|
| 30 |
EXPOSE 7860
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
CMD ["python", "app.py"]
|
|
|
|
| 1 |
FROM python:3.10-slim
|
| 2 |
|
| 3 |
+
# Set environment variables
|
| 4 |
+
ENV PYTHONUNBUFFERED=1 \
|
| 5 |
+
DEBIAN_FRONTEND=noninteractive \
|
| 6 |
+
REQUESTS_TIMEOUT=30
|
| 7 |
+
|
| 8 |
+
# Install system dependencies
|
| 9 |
RUN apt-get update && apt-get install -y \
|
| 10 |
+
build-essential \
|
| 11 |
curl \
|
| 12 |
+
git \
|
| 13 |
&& rm -rf /var/lib/apt/lists/*
|
| 14 |
|
| 15 |
+
# Set working directory
|
| 16 |
+
WORKDIR /app
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 17 |
|
| 18 |
+
# Copy requirements first to leverage Docker cache
|
| 19 |
COPY requirements.txt .
|
| 20 |
+
|
| 21 |
+
# Install Python dependencies
|
| 22 |
RUN pip install --no-cache-dir -r requirements.txt
|
| 23 |
|
| 24 |
# Copy application code
|
| 25 |
COPY . .
|
| 26 |
|
| 27 |
+
# Set up DNS configuration
|
| 28 |
+
RUN echo "nameserver 8.8.8.8" > /etc/resolv.conf && \
|
| 29 |
+
echo "nameserver 8.8.4.4" >> /etc/resolv.conf
|
| 30 |
|
| 31 |
+
# Expose port
|
| 32 |
EXPOSE 7860
|
| 33 |
|
| 34 |
+
# Healthcheck
|
| 35 |
+
HEALTHCHECK --interval=30s --timeout=10s --start-period=5s --retries=3 \
|
| 36 |
+
CMD curl -f http://localhost:7860/health || exit 1
|
| 37 |
+
|
| 38 |
+
# Command to run the application
|
| 39 |
CMD ["python", "app.py"]
|
README.md
CHANGED
|
@@ -1,6 +1,6 @@
|
|
| 1 |
---
|
| 2 |
-
title: Advanced Reasoning System
|
| 3 |
-
emoji:
|
| 4 |
colorFrom: blue
|
| 5 |
colorTo: purple
|
| 6 |
sdk: gradio
|
|
@@ -10,63 +10,95 @@ pinned: false
|
|
| 10 |
license: mit
|
| 11 |
---
|
| 12 |
|
| 13 |
-
# Advanced Reasoning System
|
| 14 |
|
| 15 |
-
A sophisticated reasoning system that combines multiple strategies
|
| 16 |
|
| 17 |
## Features
|
| 18 |
|
| 19 |
-
-
|
| 20 |
-
- **Multiple Reasoning Strategies**:
|
| 21 |
- Chain of Thought
|
| 22 |
- Tree of Thoughts
|
| 23 |
- Meta Learning
|
|
|
|
| 24 |
- Recursive Reasoning
|
| 25 |
- Analogical Reasoning
|
| 26 |
-
- And more!
|
| 27 |
-
- **Adaptive Strategy Selection**: Dynamically chooses the best reasoning approach
|
| 28 |
-
- **GPU/CPU Flexibility**: Automatically uses GPU when available, falls back to CPU
|
| 29 |
-
- **Efficient Resource Usage**: Optimized for performance with configurable parameters
|
| 30 |
|
| 31 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
|
| 33 |
-
-
|
| 34 |
-
-
|
| 35 |
-
-
|
| 36 |
-
-
|
|
|
|
| 37 |
|
| 38 |
-
##
|
| 39 |
|
| 40 |
-
1.
|
| 41 |
-
|
| 42 |
-
|
| 43 |
-
|
|
|
|
|
|
|
| 44 |
|
| 45 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
| 46 |
|
| 47 |
-
|
| 48 |
-
|
| 49 |
-
|
|
|
|
| 50 |
|
| 51 |
-
##
|
|
|
|
|
|
|
| 52 |
|
| 53 |
```bash
|
| 54 |
-
|
| 55 |
-
|
| 56 |
```
|
| 57 |
|
| 58 |
-
##
|
| 59 |
|
| 60 |
-
|
| 61 |
-
|
| 62 |
-
|
| 63 |
-
|
| 64 |
-
|
| 65 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
|
| 67 |
## License
|
| 68 |
|
| 69 |
-
MIT License
|
| 70 |
|
| 71 |
## Files
|
| 72 |
- `app.py`: Main application with Gradio interface and API integration
|
|
|
|
| 1 |
---
|
| 2 |
+
title: Advanced Reasoning System 🤖
|
| 3 |
+
emoji: 🤖
|
| 4 |
colorFrom: blue
|
| 5 |
colorTo: purple
|
| 6 |
sdk: gradio
|
|
|
|
| 10 |
license: mit
|
| 11 |
---
|
| 12 |
|
| 13 |
+
# Advanced Reasoning System 🤖
|
| 14 |
|
| 15 |
+
A sophisticated multi-agent reasoning system that combines multiple strategies for advanced problem-solving.
|
| 16 |
|
| 17 |
## Features
|
| 18 |
|
| 19 |
+
- 🧠 Multiple Reasoning Strategies:
|
|
|
|
| 20 |
- Chain of Thought
|
| 21 |
- Tree of Thoughts
|
| 22 |
- Meta Learning
|
| 23 |
+
- Local LLM Integration
|
| 24 |
- Recursive Reasoning
|
| 25 |
- Analogical Reasoning
|
|
|
|
|
|
|
|
|
|
|
|
|
| 26 |
|
| 27 |
+
- 🤝 Multi-Agent System:
|
| 28 |
+
- Dynamic Team Formation
|
| 29 |
+
- Cross-Team Collaboration
|
| 30 |
+
- Resource Management
|
| 31 |
+
- Task Orchestration
|
| 32 |
|
| 33 |
+
- 🔄 Adaptive Learning:
|
| 34 |
+
- Performance Tracking
|
| 35 |
+
- Strategy Weight Adjustment
|
| 36 |
+
- Pattern Recognition
|
| 37 |
+
- Meta-Learning Integration
|
| 38 |
|
| 39 |
+
## Quick Start
|
| 40 |
|
| 41 |
+
1. **Environment Setup**:
|
| 42 |
+
```bash
|
| 43 |
+
python -m venv venv
|
| 44 |
+
source venv/bin/activate # On Windows: .\venv\Scripts\activate
|
| 45 |
+
pip install -r requirements.txt
|
| 46 |
+
```
|
| 47 |
|
| 48 |
+
2. **Configuration**:
|
| 49 |
+
```bash
|
| 50 |
+
cp .env.example .env
|
| 51 |
+
# Edit .env with your settings
|
| 52 |
+
```
|
| 53 |
|
| 54 |
+
3. **Run the Application**:
|
| 55 |
+
```bash
|
| 56 |
+
python app.py
|
| 57 |
+
```
|
| 58 |
|
| 59 |
+
## Docker Support
|
| 60 |
+
|
| 61 |
+
Build and run with Docker:
|
| 62 |
|
| 63 |
```bash
|
| 64 |
+
docker build -t advanced-reasoning .
|
| 65 |
+
docker run -p 7860:7860 advanced-reasoning
|
| 66 |
```
|
| 67 |
|
| 68 |
+
## API Endpoints
|
| 69 |
|
| 70 |
+
- `/`: Main interface
|
| 71 |
+
- `/health`: Health check endpoint
|
| 72 |
+
- `/api/process_query`: Process queries via API
|
| 73 |
+
|
| 74 |
+
## Components
|
| 75 |
+
|
| 76 |
+
1. **Reasoning Engine**:
|
| 77 |
+
- Unified reasoning combining multiple strategies
|
| 78 |
+
- Dynamic strategy selection
|
| 79 |
+
- Result synthesis
|
| 80 |
+
|
| 81 |
+
2. **Team Management**:
|
| 82 |
+
- Specialized teams (Coders, Business, Research, Trading)
|
| 83 |
+
- Cross-team collaboration
|
| 84 |
+
- Resource sharing
|
| 85 |
+
|
| 86 |
+
3. **Orchestration**:
|
| 87 |
+
- Task planning and decomposition
|
| 88 |
+
- Resource allocation
|
| 89 |
+
- Performance monitoring
|
| 90 |
+
|
| 91 |
+
## Contributing
|
| 92 |
+
|
| 93 |
+
1. Fork the repository
|
| 94 |
+
2. Create your feature branch
|
| 95 |
+
3. Commit your changes
|
| 96 |
+
4. Push to the branch
|
| 97 |
+
5. Create a Pull Request
|
| 98 |
|
| 99 |
## License
|
| 100 |
|
| 101 |
+
MIT License - see LICENSE file for details
|
| 102 |
|
| 103 |
## Files
|
| 104 |
- `app.py`: Main application with Gradio interface and API integration
|
agentic_system.py
CHANGED
|
@@ -27,6 +27,7 @@ from datetime import datetime
|
|
| 27 |
import uuid
|
| 28 |
from concurrent.futures import ThreadPoolExecutor
|
| 29 |
import numpy as np
|
|
|
|
| 30 |
|
| 31 |
from orchestrator import (
|
| 32 |
AgentOrchestrator,
|
|
@@ -35,8 +36,8 @@ from orchestrator import (
|
|
| 35 |
TaskPriority,
|
| 36 |
Task
|
| 37 |
)
|
| 38 |
-
from reasoning import ReasoningEngine, ReasoningMode
|
| 39 |
-
from meta_learning import MetaLearningStrategy
|
| 40 |
|
| 41 |
class AgentCapability(Enum):
|
| 42 |
"""Core capabilities of agents."""
|
|
|
|
| 27 |
import uuid
|
| 28 |
from concurrent.futures import ThreadPoolExecutor
|
| 29 |
import numpy as np
|
| 30 |
+
from collections import defaultdict
|
| 31 |
|
| 32 |
from orchestrator import (
|
| 33 |
AgentOrchestrator,
|
|
|
|
| 36 |
TaskPriority,
|
| 37 |
Task
|
| 38 |
)
|
| 39 |
+
from reasoning import UnifiedReasoningEngine as ReasoningEngine, StrategyType as ReasoningMode
|
| 40 |
+
from reasoning.meta_learning import MetaLearningStrategy
|
| 41 |
|
| 42 |
class AgentCapability(Enum):
|
| 43 |
"""Core capabilities of agents."""
|
app.py
CHANGED
|
@@ -19,7 +19,7 @@ from requests.adapters import HTTPAdapter, Retry
|
|
| 19 |
from agentic_system import AgenticSystem
|
| 20 |
from team_management import TeamManager
|
| 21 |
from orchestrator import AgentOrchestrator
|
| 22 |
-
from reasoning
|
| 23 |
|
| 24 |
# Configure logging
|
| 25 |
logging.basicConfig(level=logging.INFO)
|
|
@@ -29,31 +29,18 @@ logger = logging.getLogger(__name__)
|
|
| 29 |
TIMEOUT = int(os.getenv('REQUESTS_TIMEOUT', '30'))
|
| 30 |
RETRIES = 3
|
| 31 |
|
| 32 |
-
# Configure session with retries
|
| 33 |
-
session = requests.Session()
|
| 34 |
-
retries = Retry(total=RETRIES,
|
| 35 |
-
backoff_factor=1,
|
| 36 |
-
status_forcelist=[429, 500, 502, 503, 504])
|
| 37 |
-
session.mount('https://', HTTPAdapter(max_retries=retries))
|
| 38 |
-
session.mount('http://', HTTPAdapter(max_retries=retries))
|
| 39 |
-
|
| 40 |
def check_network():
|
| 41 |
"""Check network connectivity."""
|
| 42 |
try:
|
| 43 |
-
#
|
| 44 |
-
|
| 45 |
-
|
| 46 |
-
|
| 47 |
-
|
| 48 |
-
response.raise_for_status()
|
| 49 |
-
return True
|
| 50 |
-
except Exception as e:
|
| 51 |
-
logger.error(f"Network check failed: {e}")
|
| 52 |
return False
|
| 53 |
|
| 54 |
class AgentInterface:
|
| 55 |
"""Interface for the agentic system."""
|
| 56 |
-
|
| 57 |
def __init__(self):
|
| 58 |
"""Initialize the interface components."""
|
| 59 |
# Check network connectivity
|
|
@@ -66,66 +53,117 @@ class AgentInterface:
|
|
| 66 |
parallel_threshold=3,
|
| 67 |
learning_rate=0.1
|
| 68 |
)
|
| 69 |
-
|
|
|
|
|
|
|
| 70 |
async def process_query(self, message: str) -> str:
|
| 71 |
"""Process user query through the reasoning system."""
|
| 72 |
try:
|
| 73 |
-
#
|
| 74 |
-
|
| 75 |
-
|
| 76 |
-
|
| 77 |
-
'mode': 'analytical'
|
| 78 |
-
}
|
| 79 |
-
|
| 80 |
-
# Get response from reasoning engine
|
| 81 |
result = await self.reasoning_engine.reason(
|
| 82 |
query=message,
|
| 83 |
-
context=
|
| 84 |
)
|
| 85 |
-
|
| 86 |
-
|
| 87 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 88 |
except Exception as e:
|
| 89 |
logger.error(f"Error processing query: {e}")
|
| 90 |
return f"An error occurred: {str(e)}"
|
| 91 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 92 |
# Initialize interface
|
| 93 |
interface = AgentInterface()
|
| 94 |
|
| 95 |
# Create Gradio interface
|
| 96 |
-
with gr.Blocks(title="Advanced Reasoning System") as demo:
|
| 97 |
-
gr.Markdown("
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 98 |
|
| 99 |
with gr.Row():
|
| 100 |
-
with gr.Column():
|
| 101 |
-
|
| 102 |
-
label="Your
|
| 103 |
-
placeholder="Enter your
|
| 104 |
lines=3
|
| 105 |
)
|
| 106 |
-
|
|
|
|
|
|
|
| 107 |
|
| 108 |
-
with gr.Column():
|
| 109 |
-
|
| 110 |
label="Response",
|
| 111 |
-
lines=
|
|
|
|
| 112 |
)
|
| 113 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 114 |
submit_btn.click(
|
| 115 |
fn=interface.process_query,
|
| 116 |
-
inputs=
|
| 117 |
-
outputs=
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 118 |
)
|
| 119 |
-
|
| 120 |
-
# Start the server with health check endpoint
|
| 121 |
-
app = gr.mount_gradio_app(None, demo, path="/")
|
| 122 |
-
|
| 123 |
-
@app.get("/health")
|
| 124 |
-
async def health_check():
|
| 125 |
-
"""Health check endpoint."""
|
| 126 |
-
if check_network():
|
| 127 |
-
return {"status": "healthy"}
|
| 128 |
-
return {"status": "degraded", "reason": "network_issues"}
|
| 129 |
|
| 130 |
# Launch the interface
|
| 131 |
if __name__ == "__main__":
|
|
|
|
| 19 |
from agentic_system import AgenticSystem
|
| 20 |
from team_management import TeamManager
|
| 21 |
from orchestrator import AgentOrchestrator
|
| 22 |
+
from reasoning import UnifiedReasoningEngine
|
| 23 |
|
| 24 |
# Configure logging
|
| 25 |
logging.basicConfig(level=logging.INFO)
|
|
|
|
| 29 |
TIMEOUT = int(os.getenv('REQUESTS_TIMEOUT', '30'))
|
| 30 |
RETRIES = 3
|
| 31 |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 32 |
def check_network():
|
| 33 |
"""Check network connectivity."""
|
| 34 |
try:
|
| 35 |
+
# Test connection to Hugging Face
|
| 36 |
+
response = requests.get('https://huggingface.co', timeout=TIMEOUT)
|
| 37 |
+
return response.status_code == 200
|
| 38 |
+
except requests.RequestException as e:
|
| 39 |
+
logger.warning(f"Network connectivity issue: {e}")
|
|
|
|
|
|
|
|
|
|
|
|
|
| 40 |
return False
|
| 41 |
|
| 42 |
class AgentInterface:
|
| 43 |
"""Interface for the agentic system."""
|
|
|
|
| 44 |
def __init__(self):
|
| 45 |
"""Initialize the interface components."""
|
| 46 |
# Check network connectivity
|
|
|
|
| 53 |
parallel_threshold=3,
|
| 54 |
learning_rate=0.1
|
| 55 |
)
|
| 56 |
+
self.team_manager = TeamManager(self.orchestrator)
|
| 57 |
+
self.system = AgenticSystem()
|
| 58 |
+
|
| 59 |
async def process_query(self, message: str) -> str:
|
| 60 |
"""Process user query through the reasoning system."""
|
| 61 |
try:
|
| 62 |
+
# Log incoming query
|
| 63 |
+
logger.info(f"Processing query: {message}")
|
| 64 |
+
|
| 65 |
+
# Get reasoning result
|
|
|
|
|
|
|
|
|
|
|
|
|
| 66 |
result = await self.reasoning_engine.reason(
|
| 67 |
query=message,
|
| 68 |
+
context={"timestamp": datetime.now().isoformat()}
|
| 69 |
)
|
| 70 |
+
|
| 71 |
+
# Format response
|
| 72 |
+
if result.success:
|
| 73 |
+
response = f"Answer: {result.answer}\nConfidence: {result.confidence:.2f}"
|
| 74 |
+
if result.meta_insights:
|
| 75 |
+
response += "\nInsights:\n" + "\n".join(f"- {insight}" for insight in result.meta_insights)
|
| 76 |
+
else:
|
| 77 |
+
response = "I apologize, but I couldn't process your query effectively. Please try rephrasing or providing more context."
|
| 78 |
+
|
| 79 |
+
return response
|
| 80 |
+
|
| 81 |
except Exception as e:
|
| 82 |
logger.error(f"Error processing query: {e}")
|
| 83 |
return f"An error occurred: {str(e)}"
|
| 84 |
|
| 85 |
+
def health_check(self) -> Dict[str, Any]:
|
| 86 |
+
"""Check system health."""
|
| 87 |
+
return {
|
| 88 |
+
"status": "healthy",
|
| 89 |
+
"network": check_network(),
|
| 90 |
+
"components": {
|
| 91 |
+
"orchestrator": self.orchestrator is not None,
|
| 92 |
+
"reasoning_engine": self.reasoning_engine is not None,
|
| 93 |
+
"team_manager": self.team_manager is not None,
|
| 94 |
+
"system": self.system is not None
|
| 95 |
+
},
|
| 96 |
+
"timestamp": datetime.now().isoformat()
|
| 97 |
+
}
|
| 98 |
+
|
| 99 |
# Initialize interface
|
| 100 |
interface = AgentInterface()
|
| 101 |
|
| 102 |
# Create Gradio interface
|
| 103 |
+
with gr.Blocks(title="Advanced Reasoning System", theme=gr.themes.Soft()) as demo:
|
| 104 |
+
gr.Markdown("""
|
| 105 |
+
# 🤖 Advanced Reasoning System
|
| 106 |
+
|
| 107 |
+
Welcome to the Advanced Reasoning System! This system combines multiple reasoning strategies:
|
| 108 |
+
- Chain of Thought
|
| 109 |
+
- Tree of Thoughts
|
| 110 |
+
- Meta Learning
|
| 111 |
+
- Local LLM
|
| 112 |
+
- And more!
|
| 113 |
+
|
| 114 |
+
Ask any question and the system will use its advanced reasoning capabilities to help you.
|
| 115 |
+
""")
|
| 116 |
|
| 117 |
with gr.Row():
|
| 118 |
+
with gr.Column(scale=4):
|
| 119 |
+
query_input = gr.Textbox(
|
| 120 |
+
label="Your Question",
|
| 121 |
+
placeholder="Enter your question here...",
|
| 122 |
lines=3
|
| 123 |
)
|
| 124 |
+
with gr.Row():
|
| 125 |
+
submit_btn = gr.Button("Submit", variant="primary")
|
| 126 |
+
clear_btn = gr.Button("Clear")
|
| 127 |
|
| 128 |
+
with gr.Column(scale=6):
|
| 129 |
+
output = gr.Textbox(
|
| 130 |
label="Response",
|
| 131 |
+
lines=10,
|
| 132 |
+
interactive=False
|
| 133 |
)
|
| 134 |
|
| 135 |
+
# Add examples
|
| 136 |
+
gr.Examples(
|
| 137 |
+
examples=[
|
| 138 |
+
"How would you approach designing a scalable microservices architecture?",
|
| 139 |
+
"What are the key considerations for implementing a secure authentication system?",
|
| 140 |
+
"Can you help me understand the differences between various machine learning algorithms?",
|
| 141 |
+
],
|
| 142 |
+
inputs=query_input,
|
| 143 |
+
label="Example Questions"
|
| 144 |
+
)
|
| 145 |
+
|
| 146 |
+
# Event handlers
|
| 147 |
submit_btn.click(
|
| 148 |
fn=interface.process_query,
|
| 149 |
+
inputs=query_input,
|
| 150 |
+
outputs=output,
|
| 151 |
+
api_name="process_query"
|
| 152 |
+
)
|
| 153 |
+
clear_btn.click(
|
| 154 |
+
fn=lambda: ("", ""),
|
| 155 |
+
inputs=None,
|
| 156 |
+
outputs=[query_input, output],
|
| 157 |
+
api_name="clear"
|
| 158 |
+
)
|
| 159 |
+
|
| 160 |
+
# Add health check endpoint
|
| 161 |
+
demo.load(
|
| 162 |
+
fn=interface.health_check,
|
| 163 |
+
inputs=None,
|
| 164 |
+
outputs=None,
|
| 165 |
+
api_name="health"
|
| 166 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 167 |
|
| 168 |
# Launch the interface
|
| 169 |
if __name__ == "__main__":
|
team_management.py
CHANGED
|
@@ -22,8 +22,26 @@ from datetime import datetime
|
|
| 22 |
import uuid
|
| 23 |
from collections import defaultdict
|
| 24 |
|
| 25 |
-
from orchestrator import AgentOrchestrator, TaskPriority
|
| 26 |
-
from
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 27 |
|
| 28 |
class TeamType(Enum):
|
| 29 |
"""Specialized team types."""
|
|
@@ -70,7 +88,7 @@ class TeamManager:
|
|
| 70 |
def __init__(self, orchestrator: AgentOrchestrator):
|
| 71 |
self.orchestrator = orchestrator
|
| 72 |
self.teams: Dict[str, TeamProfile] = {}
|
| 73 |
-
self.agents: Dict[str, Dict[str, Agent]] = {} # team_id -> {agent_id -> Agent}
|
| 74 |
self.collaboration_network: Dict[str, CollaborationLink] = {}
|
| 75 |
self.shared_objectives: Dict[str, Set[str]] = defaultdict(set) # objective_id -> set of team_ids
|
| 76 |
self.lock = asyncio.Lock()
|
|
@@ -189,10 +207,14 @@ class TeamManager:
|
|
| 189 |
{
|
| 190 |
"role": AgentRole.COORDINATOR,
|
| 191 |
"capabilities": [
|
| 192 |
-
AgentCapability.
|
| 193 |
-
AgentCapability.
|
| 194 |
],
|
| 195 |
-
"personality": AgentPersonality.PROACTIVE
|
|
|
|
|
|
|
|
|
|
|
|
|
| 196 |
},
|
| 197 |
{
|
| 198 |
"role": AgentRole.EXECUTOR,
|
|
@@ -200,7 +222,11 @@ class TeamManager:
|
|
| 200 |
AgentCapability.EXECUTION,
|
| 201 |
AgentCapability.LEARNING
|
| 202 |
],
|
| 203 |
-
"personality": AgentPersonality.ANALYTICAL
|
|
|
|
|
|
|
|
|
|
|
|
|
| 204 |
}
|
| 205 |
]
|
| 206 |
|
|
@@ -214,7 +240,11 @@ class TeamManager:
|
|
| 214 |
AgentCapability.REASONING
|
| 215 |
],
|
| 216 |
"personality": AgentPersonality.CREATIVE,
|
| 217 |
-
"expertise": ["software_development", "system_design"]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 218 |
}
|
| 219 |
])
|
| 220 |
elif team_type == TeamType.BUSINESS:
|
|
@@ -226,7 +256,11 @@ class TeamManager:
|
|
| 226 |
AgentCapability.LEARNING
|
| 227 |
],
|
| 228 |
"personality": AgentPersonality.PROACTIVE,
|
| 229 |
-
"expertise": ["business_strategy", "market_analysis"]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 230 |
}
|
| 231 |
])
|
| 232 |
elif team_type == TeamType.RESEARCH:
|
|
@@ -238,7 +272,11 @@ class TeamManager:
|
|
| 238 |
AgentCapability.LEARNING
|
| 239 |
],
|
| 240 |
"personality": AgentPersonality.ANALYTICAL,
|
| 241 |
-
"expertise": ["research", "data_analysis"]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 242 |
}
|
| 243 |
])
|
| 244 |
elif team_type == TeamType.TRADERS:
|
|
@@ -250,7 +288,11 @@ class TeamManager:
|
|
| 250 |
AgentCapability.REASONING
|
| 251 |
],
|
| 252 |
"personality": AgentPersonality.CAUTIOUS,
|
| 253 |
-
"expertise": ["trading", "risk_management"]
|
|
|
|
|
|
|
|
|
|
|
|
|
| 254 |
}
|
| 255 |
])
|
| 256 |
|
|
@@ -316,7 +358,7 @@ class TeamManager:
|
|
| 316 |
team_agents = self.agents[team_id]
|
| 317 |
|
| 318 |
# Calculate team progress
|
| 319 |
-
active_agents = sum(1 for agent in team_agents.values() if agent.state ==
|
| 320 |
completion_rate = sum(agent.get_task_completion_rate() for agent in team_agents.values()) / len(team_agents)
|
| 321 |
|
| 322 |
team_progress[team.name] = {
|
|
@@ -440,3 +482,22 @@ class TeamManager:
|
|
| 440 |
sum(link.strength for link in team_links) /
|
| 441 |
len(team_links) if team_links else 0.5
|
| 442 |
)
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
| 22 |
import uuid
|
| 23 |
from collections import defaultdict
|
| 24 |
|
| 25 |
+
from orchestrator import AgentOrchestrator, TaskPriority, AgentRole, AgentState
|
| 26 |
+
from reasoning import UnifiedReasoningEngine
|
| 27 |
+
|
| 28 |
+
# Agent capabilities and personality types
|
| 29 |
+
class AgentCapability(Enum):
|
| 30 |
+
"""Core capabilities of agents."""
|
| 31 |
+
REASONING = "reasoning"
|
| 32 |
+
LEARNING = "learning"
|
| 33 |
+
EXECUTION = "execution"
|
| 34 |
+
COORDINATION = "coordination"
|
| 35 |
+
MONITORING = "monitoring"
|
| 36 |
+
|
| 37 |
+
class AgentPersonality(Enum):
|
| 38 |
+
"""Different personality types for agents."""
|
| 39 |
+
ANALYTICAL = "analytical"
|
| 40 |
+
CREATIVE = "creative"
|
| 41 |
+
PRAGMATIC = "pragmatic"
|
| 42 |
+
COLLABORATIVE = "collaborative"
|
| 43 |
+
PROACTIVE = "proactive"
|
| 44 |
+
CAUTIOUS = "cautious"
|
| 45 |
|
| 46 |
class TeamType(Enum):
|
| 47 |
"""Specialized team types."""
|
|
|
|
| 88 |
def __init__(self, orchestrator: AgentOrchestrator):
|
| 89 |
self.orchestrator = orchestrator
|
| 90 |
self.teams: Dict[str, TeamProfile] = {}
|
| 91 |
+
self.agents: Dict[str, Dict[str, 'Agent']] = {} # team_id -> {agent_id -> Agent}
|
| 92 |
self.collaboration_network: Dict[str, CollaborationLink] = {}
|
| 93 |
self.shared_objectives: Dict[str, Set[str]] = defaultdict(set) # objective_id -> set of team_ids
|
| 94 |
self.lock = asyncio.Lock()
|
|
|
|
| 207 |
{
|
| 208 |
"role": AgentRole.COORDINATOR,
|
| 209 |
"capabilities": [
|
| 210 |
+
AgentCapability.REASONING,
|
| 211 |
+
AgentCapability.COORDINATION
|
| 212 |
],
|
| 213 |
+
"personality": AgentPersonality.PROACTIVE,
|
| 214 |
+
"profile": {
|
| 215 |
+
"name": "Coordinator",
|
| 216 |
+
"description": "Team coordinator"
|
| 217 |
+
}
|
| 218 |
},
|
| 219 |
{
|
| 220 |
"role": AgentRole.EXECUTOR,
|
|
|
|
| 222 |
AgentCapability.EXECUTION,
|
| 223 |
AgentCapability.LEARNING
|
| 224 |
],
|
| 225 |
+
"personality": AgentPersonality.ANALYTICAL,
|
| 226 |
+
"profile": {
|
| 227 |
+
"name": "Executor",
|
| 228 |
+
"description": "Task executor"
|
| 229 |
+
}
|
| 230 |
}
|
| 231 |
]
|
| 232 |
|
|
|
|
| 240 |
AgentCapability.REASONING
|
| 241 |
],
|
| 242 |
"personality": AgentPersonality.CREATIVE,
|
| 243 |
+
"expertise": ["software_development", "system_design"],
|
| 244 |
+
"profile": {
|
| 245 |
+
"name": "Developer",
|
| 246 |
+
"description": "Software developer"
|
| 247 |
+
}
|
| 248 |
}
|
| 249 |
])
|
| 250 |
elif team_type == TeamType.BUSINESS:
|
|
|
|
| 256 |
AgentCapability.LEARNING
|
| 257 |
],
|
| 258 |
"personality": AgentPersonality.PROACTIVE,
|
| 259 |
+
"expertise": ["business_strategy", "market_analysis"],
|
| 260 |
+
"profile": {
|
| 261 |
+
"name": "Planner",
|
| 262 |
+
"description": "Business planner"
|
| 263 |
+
}
|
| 264 |
}
|
| 265 |
])
|
| 266 |
elif team_type == TeamType.RESEARCH:
|
|
|
|
| 272 |
AgentCapability.LEARNING
|
| 273 |
],
|
| 274 |
"personality": AgentPersonality.ANALYTICAL,
|
| 275 |
+
"expertise": ["research", "data_analysis"],
|
| 276 |
+
"profile": {
|
| 277 |
+
"name": "Researcher",
|
| 278 |
+
"description": "Researcher"
|
| 279 |
+
}
|
| 280 |
}
|
| 281 |
])
|
| 282 |
elif team_type == TeamType.TRADERS:
|
|
|
|
| 288 |
AgentCapability.REASONING
|
| 289 |
],
|
| 290 |
"personality": AgentPersonality.CAUTIOUS,
|
| 291 |
+
"expertise": ["trading", "risk_management"],
|
| 292 |
+
"profile": {
|
| 293 |
+
"name": "Trader",
|
| 294 |
+
"description": "Trader"
|
| 295 |
+
}
|
| 296 |
}
|
| 297 |
])
|
| 298 |
|
|
|
|
| 358 |
team_agents = self.agents[team_id]
|
| 359 |
|
| 360 |
# Calculate team progress
|
| 361 |
+
active_agents = sum(1 for agent in team_agents.values() if agent.state == AgentState.BUSY)
|
| 362 |
completion_rate = sum(agent.get_task_completion_rate() for agent in team_agents.values()) / len(team_agents)
|
| 363 |
|
| 364 |
team_progress[team.name] = {
|
|
|
|
| 482 |
sum(link.strength for link in team_links) /
|
| 483 |
len(team_links) if team_links else 0.5
|
| 484 |
)
|
| 485 |
+
|
| 486 |
+
class Agent:
|
| 487 |
+
def __init__(self, profile: Dict, reasoning_engine: UnifiedReasoningEngine, meta_learning: bool):
|
| 488 |
+
self.profile = profile
|
| 489 |
+
self.reasoning_engine = reasoning_engine
|
| 490 |
+
self.meta_learning = meta_learning
|
| 491 |
+
self.state = AgentState.IDLE
|
| 492 |
+
|
| 493 |
+
def get_task_completion_rate(self):
|
| 494 |
+
# Implement task completion rate calculation
|
| 495 |
+
pass
|
| 496 |
+
|
| 497 |
+
def get_completed_task_count(self):
|
| 498 |
+
# Implement completed task count calculation
|
| 499 |
+
pass
|
| 500 |
+
|
| 501 |
+
def get_total_task_count(self):
|
| 502 |
+
# Implement total task count calculation
|
| 503 |
+
pass
|