File size: 2,987 Bytes
bf6456a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
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
42
43
44
45
46
47
48
49
50
51
52
53
54
55
56
57
58
59
60
61
62
63
64
65
66
67
68
69
70
71
72
73
import re

class PromptGenerator:
    @staticmethod
    def detect_intent(prompt: str) -> dict:
        """Detecta la intenci贸n del usuario basado en el prompt"""
        prompt_lower = prompt.lower().strip()
        
        # Detecci贸n de c贸digo
        code_keywords = [
            'c贸digo', 'code', 'programa', 'function', 'def ', 'import ',
            'python', 'javascript', 'java', 'c++', 'html', 'css', 'sql',
            'algoritmo', 'loop', 'for ', 'while ', 'if ', 'else',
            'variable', 'clase', 'class ', 'funci贸n', 'method'
        ]
        
        is_code = any(keyword in prompt_lower for keyword in code_keywords)
        
        # Detecci贸n de tipo de consulta
        if any(word in prompt_lower for word in ['explica', 'explicar', 'qu茅 es', 'qu茅 son', 'defin']):
            intent_type = "explication"
        elif any(word in prompt_lower for word in ['ejemplo', 'ejemplifica', 'muestra']):
            intent_type = "example"
        elif any(word in prompt_lower for word in ['corrige', 'error', 'bug', 'problema']):
            intent_type = "correction"
        else:
            intent_type = "general"
        
        return {
            "is_code": is_code,
            "type": intent_type,
            "language": PromptGenerator._detect_language(prompt_lower)
        }
    
    @staticmethod
    def _detect_language(prompt: str) -> str:
        """Detecta el lenguaje de programaci贸n mencionado"""
        languages = {
            'python': ['python', 'py'],
            'javascript': ['javascript', 'js', 'node'],
            'java': ['java'],
            'html': ['html'],
            'css': ['css'],
            'sql': ['sql', 'mysql', 'postgresql'],
            'c++': ['c++', 'cpp'],
            'c#': ['c#', 'csharp']
        }
        
        for lang, keywords in languages.items():
            if any(keyword in prompt for keyword in keywords):
                return lang
        return "unknown"
    
    @staticmethod
    def enhance_prompt(original_prompt: str, intent: dict) -> str:
        """Mejora el prompt basado en la intenci贸n detectada"""
        if intent["is_code"]:
            if intent["type"] == "explication":
                return f"Explica detalladamente este c贸digo: {original_prompt}"
            elif intent["type"] == "example":
                lang = intent["language"] if intent["language"] != "unknown" else "Python"
                return f"Da un ejemplo en {lang}: {original_prompt}"
            elif intent["type"] == "correction":
                return f"Corrige este c贸digo: {original_prompt}"
            else:
                return f"Responde sobre programaci贸n: {original_prompt}"
        else:
            if intent["type"] == "explication":
                return f"Explica claramente: {original_prompt}"
            elif intent["type"] == "example":
                return f"Proporciona ejemplos: {original_prompt}"
            else:
                return original_prompt