|
from dataclasses import dataclass
|
|
from typing import List, Dict, Any, Set
|
|
|
|
@dataclass
|
|
class AgentRole:
|
|
name: str
|
|
description: str
|
|
system_prompt: str
|
|
allowed_tools: Set[str]
|
|
specialization_areas: List[str]
|
|
temperature: float = 0.7
|
|
max_tokens: int = 4096
|
|
|
|
AGENT_ROLES = {
|
|
'coding': AgentRole(
|
|
name='coding',
|
|
description='Specialized in writing, reviewing, and debugging code',
|
|
system_prompt='''You are a coding specialist AI assistant. Your primary responsibilities:
|
|
- Write clean, efficient, well-structured code
|
|
- Review code for bugs, security issues, and best practices
|
|
- Refactor and optimize existing code
|
|
- Implement features based on specifications
|
|
- Follow language-specific conventions and patterns
|
|
Focus on code quality, maintainability, and performance.''',
|
|
allowed_tools={
|
|
'read_file', 'write_file', 'list_directory', 'create_directory',
|
|
'change_directory', 'get_current_directory', 'python_exec',
|
|
'run_command', 'index_directory'
|
|
},
|
|
specialization_areas=['code_writing', 'code_review', 'debugging', 'refactoring'],
|
|
temperature=0.3
|
|
),
|
|
|
|
'research': AgentRole(
|
|
name='research',
|
|
description='Specialized in information gathering and analysis',
|
|
system_prompt='''You are a research specialist AI assistant. Your primary responsibilities:
|
|
- Search for and gather relevant information
|
|
- Analyze data and documentation
|
|
- Synthesize findings into clear summaries
|
|
- Verify facts and cross-reference sources
|
|
- Identify trends and patterns in information
|
|
Focus on accuracy, thoroughness, and clear communication of findings.''',
|
|
allowed_tools={
|
|
'read_file', 'list_directory', 'index_directory',
|
|
'http_fetch', 'web_search', 'web_search_news',
|
|
'db_query', 'db_get'
|
|
},
|
|
specialization_areas=['information_gathering', 'analysis', 'documentation', 'fact_checking'],
|
|
temperature=0.5
|
|
),
|
|
|
|
'data_analysis': AgentRole(
|
|
name='data_analysis',
|
|
description='Specialized in data processing and analysis',
|
|
system_prompt='''You are a data analysis specialist AI assistant. Your primary responsibilities:
|
|
- Process and analyze structured and unstructured data
|
|
- Perform statistical analysis and pattern recognition
|
|
- Query databases and extract insights
|
|
- Create data summaries and reports
|
|
- Identify anomalies and trends
|
|
Focus on accuracy, data integrity, and actionable insights.''',
|
|
allowed_tools={
|
|
'db_query', 'db_get', 'db_set', 'read_file', 'write_file',
|
|
'python_exec', 'run_command', 'list_directory'
|
|
},
|
|
specialization_areas=['data_processing', 'statistical_analysis', 'database_operations'],
|
|
temperature=0.3
|
|
),
|
|
|
|
'planning': AgentRole(
|
|
name='planning',
|
|
description='Specialized in task planning and coordination',
|
|
system_prompt='''You are a planning specialist AI assistant. Your primary responsibilities:
|
|
- Break down complex tasks into manageable steps
|
|
- Create execution plans and workflows
|
|
- Identify dependencies and prerequisites
|
|
- Estimate effort and resource requirements
|
|
- Coordinate between different components
|
|
Focus on logical organization, completeness, and feasibility.''',
|
|
allowed_tools={
|
|
'read_file', 'write_file', 'list_directory', 'index_directory',
|
|
'db_set', 'db_get'
|
|
},
|
|
specialization_areas=['task_decomposition', 'workflow_design', 'coordination'],
|
|
temperature=0.6
|
|
),
|
|
|
|
'testing': AgentRole(
|
|
name='testing',
|
|
description='Specialized in testing and quality assurance',
|
|
system_prompt='''You are a testing specialist AI assistant. Your primary responsibilities:
|
|
- Design and execute test cases
|
|
- Identify edge cases and potential failures
|
|
- Verify functionality and correctness
|
|
- Test error handling and edge conditions
|
|
- Ensure code meets quality standards
|
|
Focus on thoroughness, coverage, and issue identification.''',
|
|
allowed_tools={
|
|
'read_file', 'write_file', 'python_exec', 'run_command',
|
|
'list_directory', 'db_query'
|
|
},
|
|
specialization_areas=['test_design', 'quality_assurance', 'validation'],
|
|
temperature=0.4
|
|
),
|
|
|
|
'documentation': AgentRole(
|
|
name='documentation',
|
|
description='Specialized in creating and maintaining documentation',
|
|
system_prompt='''You are a documentation specialist AI assistant. Your primary responsibilities:
|
|
- Write clear, comprehensive documentation
|
|
- Create API references and user guides
|
|
- Document code with comments and docstrings
|
|
- Organize and structure information logically
|
|
- Ensure documentation is up-to-date and accurate
|
|
Focus on clarity, completeness, and user-friendliness.''',
|
|
allowed_tools={
|
|
'read_file', 'write_file', 'list_directory', 'index_directory',
|
|
'http_fetch', 'web_search'
|
|
},
|
|
specialization_areas=['technical_writing', 'documentation_organization', 'user_guides'],
|
|
temperature=0.6
|
|
),
|
|
|
|
'orchestrator': AgentRole(
|
|
name='orchestrator',
|
|
description='Coordinates multiple agents and manages overall execution',
|
|
system_prompt='''You are an orchestrator AI assistant. Your primary responsibilities:
|
|
- Coordinate multiple specialized agents
|
|
- Delegate tasks to appropriate agents
|
|
- Integrate results from different agents
|
|
- Manage overall workflow execution
|
|
- Ensure task completion and quality
|
|
Focus on effective delegation, integration, and overall success.''',
|
|
allowed_tools={
|
|
'read_file', 'write_file', 'list_directory', 'db_set', 'db_get', 'db_query'
|
|
},
|
|
specialization_areas=['agent_coordination', 'task_delegation', 'result_integration'],
|
|
temperature=0.5
|
|
),
|
|
|
|
'general': AgentRole(
|
|
name='general',
|
|
description='General purpose agent for miscellaneous tasks',
|
|
system_prompt='''You are a general purpose AI assistant. Your responsibilities:
|
|
- Handle diverse tasks across multiple domains
|
|
- Provide balanced assistance for various needs
|
|
- Adapt to different types of requests
|
|
- Collaborate with specialized agents when needed
|
|
Focus on versatility, helpfulness, and task completion.''',
|
|
allowed_tools={
|
|
'read_file', 'write_file', 'list_directory', 'create_directory',
|
|
'change_directory', 'get_current_directory', 'python_exec',
|
|
'run_command', 'run_command_interactive', 'http_fetch',
|
|
'web_search', 'web_search_news', 'db_set', 'db_get', 'db_query',
|
|
'index_directory'
|
|
},
|
|
specialization_areas=['general_assistance'],
|
|
temperature=0.7
|
|
)
|
|
}
|
|
|
|
def get_agent_role(role_name: str) -> AgentRole:
|
|
return AGENT_ROLES.get(role_name, AGENT_ROLES['general'])
|
|
|
|
def list_agent_roles() -> Dict[str, AgentRole]:
|
|
return AGENT_ROLES.copy()
|
|
|
|
def get_recommended_agent(task_description: str) -> str:
|
|
task_lower = task_description.lower()
|
|
|
|
code_keywords = ['code', 'implement', 'function', 'class', 'bug', 'debug', 'refactor', 'optimize']
|
|
research_keywords = ['search', 'find', 'research', 'information', 'analyze', 'investigate']
|
|
data_keywords = ['data', 'database', 'query', 'statistics', 'analyze', 'process']
|
|
planning_keywords = ['plan', 'organize', 'workflow', 'steps', 'coordinate']
|
|
testing_keywords = ['test', 'verify', 'validate', 'check', 'quality']
|
|
doc_keywords = ['document', 'documentation', 'explain', 'guide', 'manual']
|
|
|
|
if any(keyword in task_lower for keyword in code_keywords):
|
|
return 'coding'
|
|
elif any(keyword in task_lower for keyword in research_keywords):
|
|
return 'research'
|
|
elif any(keyword in task_lower for keyword in data_keywords):
|
|
return 'data_analysis'
|
|
elif any(keyword in task_lower for keyword in planning_keywords):
|
|
return 'planning'
|
|
elif any(keyword in task_lower for keyword in testing_keywords):
|
|
return 'testing'
|
|
elif any(keyword in task_lower for keyword in doc_keywords):
|
|
return 'documentation'
|
|
else:
|
|
return 'general'
|