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