BATUTOchatbot / promt_generator.py
ivanoctaviogaitansantos's picture
Actualizar promt_generator.py
867235a 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