Mahynlo
Ready: unified env vars, deps, system packages, fixed app
5b715cc
"""
Configuración del modelo a usar para el agente GAIA.
Cambia aquí para elegir entre modelo local o API externa.
"""
# ==================================================
# CONFIGURACIÓN DEL MODELO
# ==================================================
# Opción 1: MODELO LOCAL (ejecuta en memoria del Space)
USE_LOCAL_MODEL = False # � Desactivado - Requiere más RAM de la disponible
LOCAL_MODEL_CONFIG = {
"model_id": "HuggingFaceH4/zephyr-7b-beta", # Zephyr (no requiere aprobación)
"load_in_8bit": True, # True = ~7GB RAM, False = ~14GB RAM
"max_new_tokens": 256,
"temperature": 0.0, # 0.0 = determinístico
}
# Alternativas para modelo local (16GB RAM disponibles):
# - "HuggingFaceH4/zephyr-7b-beta" (7B, ~7GB en 8-bit) ⚠️ Puede ser mucho para Space gratuito
# - "meta-llama/Llama-2-7b-chat-hf" (7B, ~7GB en 8-bit) ⚠️ Requiere aprobación + mucha RAM
# - "meta-llama/Llama-2-13b-chat-hf" (13B, ~13GB en 8-bit) ❌ Demasiado para Space
# Opción 2: MODELO VIA API (Gemini u otros via LiteLLM)
USE_API_MODEL = True # � ACTIVO - Recomendado para Spaces gratuitos
API_MODEL_CONFIG = {
"model_id": "gemini/gemini-2.0-flash-exp", # Gemini por defecto
"max_tokens": 256,
"temperature": 0.0,
}
# Alternativas para API (requiere API keys respectivas):
# - "gemini/gemini-2.0-flash-exp" (requiere GEMINI_API_KEY)
# - "gpt-4o-mini" (requiere OPENAI_API_KEY)
# - "claude-3-5-sonnet-20241022" (requiere ANTHROPIC_API_KEY)
# ==================================================
# FUNCIONES HELPER
# ==================================================
def get_active_model_config():
"""
Retorna configuración del modelo activo.
Returns:
tuple: (model_type, config_dict)
- model_type: "local" o "api"
- config_dict: Configuración del modelo
"""
if USE_LOCAL_MODEL and USE_API_MODEL:
raise ValueError("Solo puedes activar USE_LOCAL_MODEL O USE_API_MODEL, no ambos.")
if USE_LOCAL_MODEL:
return ("local", LOCAL_MODEL_CONFIG)
elif USE_API_MODEL:
return ("api", API_MODEL_CONFIG)
else:
raise ValueError("Debes activar USE_LOCAL_MODEL o USE_API_MODEL en config.py")
def get_model_display_name():
"""Retorna nombre amigable para mostrar en UI."""
model_type, config = get_active_model_config()
if model_type == "local":
model_id = config["model_id"]
quantization = "8-bit" if config.get("load_in_8bit") else "float16"
if "Llama-2-7b" in model_id:
return f"Llama 2 7B LOCAL ({quantization})"
elif "Llama-2-13b" in model_id:
return f"Llama 2 13B LOCAL ({quantization})"
elif "zephyr" in model_id:
return f"Zephyr 7B LOCAL ({quantization})"
else:
return f"{model_id.split('/')[-1]} LOCAL ({quantization})"
else: # api
model_id = config["model_id"]
if "gemini" in model_id.lower():
return "Google Gemini (API)"
elif "gpt" in model_id.lower():
return "OpenAI GPT (API)"
elif "claude" in model_id.lower():
return "Anthropic Claude (API)"
else:
return f"{model_id} (API)"
def get_required_env_var():
"""Retorna variable de entorno requerida según modelo activo."""
model_type, config = get_active_model_config()
if model_type == "local":
return "HF_TOKEN" # Para descargar modelos de HuggingFace
else: # api
model_id = config["model_id"].lower()
if "gemini" in model_id:
return "GEMINI_API_KEY"
elif "gpt" in model_id or "openai" in model_id:
return "OPENAI_API_KEY"
elif "claude" in model_id or "anthropic" in model_id:
return "ANTHROPIC_API_KEY"
else:
return "API_KEY"
def get_estimated_ram_usage():
"""Retorna uso estimado de RAM según modelo activo."""
model_type, config = get_active_model_config()
if model_type == "local":
model_id = config["model_id"]
is_8bit = config.get("load_in_8bit", False)
if "7b" in model_id.lower():
return "~7GB RAM" if is_8bit else "~14GB RAM"
elif "13b" in model_id.lower():
return "~13GB RAM" if is_8bit else "~26GB RAM (NO CABE)"
else:
return "~7-14GB RAM"
else: # api
return "~1-2GB RAM (solo cliente)"
# ==================================================
# INFORMACIÓN PARA DEBUG
# ==================================================
if __name__ == "__main__":
print("=== Configuración del Modelo ===")
print(f"Modelo activo: {get_model_display_name()}")
print(f"Tipo: {get_active_model_config()[0]}")
print(f"Variable requerida: {get_required_env_var()}")
print(f"RAM estimada: {get_estimated_ram_usage()}")
print(f"\nConfig completa: {get_active_model_config()[1]}")