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