File size: 1,477 Bytes
14aad8e
 
8b37747
14aad8e
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
8b37747
 
14aad8e
 
 
 
1
2
3
4
5
6
7
8
9
10
11
12
13
14
15
16
17
18
19
20
21
22
23
24
25
26
27
28
29
30
31
32
33
34
35
36
37
38
39
40
41
"""Skill Agent Orchestrator"""
from typing import Dict, Any, List, Optional
from src.services.groq_service import generate_response, DEFAULT_MODEL
from src.api.core.logger import logger


class SkillOrchestrator:
    def __init__(self):
        self.available_skills = {
            "code_review": "Review code for bugs, security issues, and best practices",
            "bug_detection": "Find and analyze bugs in code",
            "documentation": "Generate documentation for code",
            "refactoring": "Suggest code improvements and refactoring",
        }
    
    async def execute(
        self,
        prompt: str,
        skill_type: str,
        context: Optional[Dict[str, Any]] = None,
        tools: Optional[List[str]] = None,
    ) -> Dict[str, Any]:
        if skill_type not in self.available_skills:
            raise ValueError(f"Unknown skill type: {skill_type}")
        
        messages = [
            {
                "role": "system",
                "content": f"You are a skilled {skill_type} expert. {self.available_skills[skill_type]}"
            },
            {"role": "user", "content": prompt}
        ]
        
        try:
            # Use DEFAULT_MODEL directly
            result = await generate_response(messages, model=DEFAULT_MODEL)
            return {"skill_type": skill_type, "result": result, "status": "success"}
        except Exception as e:
            logger.error(f"Skill execution failed: {e}")
            raise