[REFACTORED] Usar prompt de archivo rates.prompt para consultas de tarifas

- Leer el prompt desde el archivo rates.prompt en lugar de tenerlo hardcoded
- Traducir tipos de programadores a sus equivalentes en inglés
- Adaptar sistema de prompts para trabajar con textos en inglés
- Mejorar instrucciones al modelo para obtener solo valores numéricos
- Agregar manejo de errores si el archivo del prompt no existe

🤖 Generated with [Claude Code](https://claude.ai/code)
Co-Authored-By: Claude <noreply@anthropic.com>
This commit is contained in:
Mauro Rosero P. 2025-03-12 12:17:17 -05:00
parent 2aa0ad44d3
commit 7b01fbf6ee
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -164,7 +164,7 @@ def query_perplexity(prompt, model="sonar"):
"messages": [
{
"role": "system",
"content": "You are a helpful assistant that provides accurate salary information for developers worldwide. Respond only with numeric values in USD with 2 decimal places."
"content": "You are a helpful assistant that provides accurate salary information for developers worldwide. Respond only with numeric values in USD with 2 decimal places. Do not include any text, currency symbols, or other characters."
},
{
"role": "user",
@ -503,32 +503,42 @@ def update_rate_files():
def generate_prompt_base(programmer_type):
"""
Genera un prompt para consultar la tarifa base por hora para un tipo de programador.
Utiliza el prompt definido en el archivo rates.prompt.
"""
# Mapa para traducir tipos de programador a términos en inglés
programmer_map = {
'bash': 'programador de scripts Bash/Shell',
'python': 'desarrollador Python',
'fullstack': 'desarrollador Full Stack',
'frontend': 'desarrollador Frontend',
'backend': 'desarrollador Backend',
'devops': 'ingeniero DevOps',
'mobile': 'desarrollador de aplicaciones móviles',
'java': 'desarrollador Java',
'php': 'desarrollador PHP',
'ruby': 'desarrollador Ruby',
'dotnet': 'desarrollador .NET',
'data': 'científico de datos',
'ml': 'ingeniero de Machine Learning',
'cloud': 'arquitecto Cloud',
'odoo': 'desarrollador Odoo'
'bash': 'Bash/Shell',
'python': 'Python',
'fullstack': 'Full Stack',
'frontend': 'Frontend',
'backend': 'Backend',
'devops': 'DevOps',
'mobile': 'Mobile App',
'java': 'Java',
'php': 'PHP',
'ruby': 'Ruby',
'dotnet': '.NET',
'data': 'Data Science',
'ml': 'Machine Learning',
'cloud': 'Cloud',
'odoo': 'Odoo'
}
programmer_description = programmer_map.get(programmer_type, f'desarrollador {programmer_type}')
programmer_description = programmer_map.get(programmer_type, programmer_type)
# Usamos el año actual para la consulta principal
current_year = time.strftime("%Y")
prompt = f"""¿Cuál es la tarifa POR HORA promedio mundial en dólares estadounidenses (USD) para un {programmer_description} en {current_year}?
IMPORTANTE: Responde ÚNICAMENTE con el valor numérico con dos decimales. Es ESENCIAL que sea el valor POR HORA."""
# Cargar el prompt desde el archivo
prompt_template = ""
prompt_file = CONFIG_DIR / 'rates.prompt'
try:
with open(prompt_file, 'r', encoding='utf-8') as f:
prompt_template = f.read().strip()
except FileNotFoundError:
# Si no se encuentra el archivo, usar un prompt predeterminado
prompt_template = "What is the average hourly rate in USD for a [developer type] developer, expressed as a numerical value with two decimal places?"
# Reemplazar [developer type] con el tipo de programador específico
prompt = prompt_template.replace('[developer type]', programmer_description)
return prompt