File size: 2,987 Bytes
bf6456a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
867235a
bf6456a
867235a
bf6456a
867235a
bf6456a
867235a
bf6456a
 
867235a
 
 
bf6456a
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
867235a
bf6456a
 
 
 
867235a
 
 
 
 
 
 
 
bf6456a
867235a
bf6456a
867235a
 
 
 
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