fix(pos): bloquear modelos de pago — solo modelos :free permitidos

Validacion _validate_model() verifica que el modelo termine en ':free'.
Si alguien cambia MODEL a uno de pago, el chatbot lanza error en vez
de generar costos. Alternativas documentadas en comentario.

Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
This commit is contained in:
2026-04-02 08:02:10 +00:00
parent f30a782feb
commit 67e214db15

View File

@@ -6,7 +6,16 @@ import json
from config import OPENROUTER_API_KEY
OPENROUTER_URL = "https://openrouter.ai/api/v1/chat/completions"
MODEL = "qwen/qwen3-6b-preview:free" # Qwen 3.6 Plus Preview (free on OpenRouter)
# ⚠️ SOLO MODELOS GRATUITOS — No cambiar a modelos de pago.
# El modelo DEBE terminar en ":free" para garantizar costo $0.
# Alternativas gratuitas: "meta-llama/llama-4-scout:free", "google/gemma-3-27b-it:free"
MODEL = "qwen/qwen3-6b-preview:free"
def _validate_model(model_id):
"""Ensure only free models are used. Raises if model is not free."""
if not model_id.endswith(':free'):
raise ValueError(f"BLOQUEADO: Solo se permiten modelos gratuitos (:free). Modelo '{model_id}' no es gratuito.")
SYSTEM_PROMPT = """Eres un asistente de refaccionaria automotriz mexicana. Tu trabajo es ayudar a encontrar autopartes.
@@ -45,6 +54,7 @@ Reglas OBLIGATORIAS:
def chat(user_message, conversation_history=None):
"""Send a message to the AI and get a response with search suggestions."""
_validate_model(MODEL) # Block paid models
messages = [{"role": "system", "content": SYSTEM_PROMPT}]
if conversation_history:
messages.extend(conversation_history)