BATUTOchatbot / promt_generator.py
ivanoctaviogaitansantos's picture
Create promt_generator.py
bf6456a verified
raw
history blame
2.99 kB
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