[ADDED] Implementar configuración de temperatura desde archivo rate_temperature.ai

🤖 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:59:55 -05:00
parent 604786ad5f
commit 0efd6cf2b8
Signed by: mrosero
GPG key ID: 83BD2A5F674B7E26

View file

@ -87,8 +87,9 @@ BASE_DIR = Path(os.path.dirname(os.path.dirname(os.path.abspath(__file__))))
CONFIG_DIR = BASE_DIR / 'bin' / 'config' CONFIG_DIR = BASE_DIR / 'bin' / 'config'
RATES_DIR = CONFIG_DIR / 'rates' # Nueva ubicación para archivos de tarifas RATES_DIR = CONFIG_DIR / 'rates' # Nueva ubicación para archivos de tarifas
# Archivo de configuración para el modelo de IA # Archivos de configuración para la API de Perplexity
MODEL_CONFIG_FILE = CONFIG_DIR / 'rate_model.ai' MODEL_CONFIG_FILE = CONFIG_DIR / 'rate_model.ai'
TEMPERATURE_CONFIG_FILE = CONFIG_DIR / 'rate_temperature.ai'
def get_ai_model(): def get_ai_model():
"""Obtener el modelo de IA configurado.""" """Obtener el modelo de IA configurado."""
@ -104,6 +105,28 @@ def get_ai_model():
# Usar 'sonar' como modelo predeterminado (el más adecuado para la API de Perplexity) # Usar 'sonar' como modelo predeterminado (el más adecuado para la API de Perplexity)
return "sonar" return "sonar"
def get_ai_temperature():
"""Obtener la temperatura configurada para la API de Perplexity."""
try:
with open(TEMPERATURE_CONFIG_FILE, 'r', encoding='utf-8') as f:
temp_str = f.read().strip()
# Si hay un valor específico configurado, intentar convertirlo a float
if temp_str and temp_str.strip():
try:
temp = float(temp_str)
# Validar que está en el rango correcto (0.0 a 1.0)
if 0.0 <= temp <= 1.0:
return temp
else:
logger.warning(f"Temperatura fuera de rango en {TEMPERATURE_CONFIG_FILE}: {temp}. Usando valor predeterminado 0.3.")
except ValueError:
logger.warning(f"Valor no numérico en {TEMPERATURE_CONFIG_FILE}: {temp_str}. Usando valor predeterminado 0.3.")
except FileNotFoundError:
logger.info(f"Archivo de configuración {TEMPERATURE_CONFIG_FILE} no encontrado. Usando temperatura predeterminada 0.3.")
# Usar 0.3 como temperatura predeterminada
return 0.3
def get_perplexity_api_key(): def get_perplexity_api_key():
"""Obtener la clave API de Perplexity desde una variable de entorno o archivo.""" """Obtener la clave API de Perplexity desde una variable de entorno o archivo."""
# Intentar obtener la clave de la variable de entorno # Intentar obtener la clave de la variable de entorno
@ -151,6 +174,7 @@ def get_perplexity_api_key():
def query_perplexity(prompt, model="sonar"): def query_perplexity(prompt, model="sonar"):
"""Realizar una consulta a la API de Perplexity.""" """Realizar una consulta a la API de Perplexity."""
api_key = get_perplexity_api_key() api_key = get_perplexity_api_key()
temperature = get_ai_temperature() # Obtener temperatura configurada
url = "https://api.perplexity.ai/chat/completions" url = "https://api.perplexity.ai/chat/completions"
headers = { headers = {
@ -172,11 +196,12 @@ def query_perplexity(prompt, model="sonar"):
} }
], ],
"max_tokens": 100, "max_tokens": 100,
"temperature": 0.2 # Usar temperatura baja para respuestas más consistentes "temperature": temperature # Usar temperatura configurada para respuestas
} }
try: try:
logger.info(f"Enviando consulta a Perplexity usando modelo: {model}") logger.info(f"Enviando consulta a Perplexity usando modelo: {model}")
logger.info(f"Temperatura configurada: {temperature}")
logger.info(f"Prompt: {prompt}") logger.info(f"Prompt: {prompt}")
response = requests.post(url, headers=headers, json=data) response = requests.post(url, headers=headers, json=data)