File size: 4,945 Bytes
43ab10a 5b715cc 43ab10a c3c998f 43ab10a 5b715cc 43ab10a 5b715cc 43ab10a |
1 2 3 4 5 6 7 8 9 10 11 12 13 14 15 16 17 18 19 20 21 22 23 24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 51 52 53 54 55 56 57 58 59 60 61 62 63 64 65 66 67 68 69 70 71 72 73 74 75 76 77 78 79 80 81 82 83 84 85 86 87 88 89 90 91 92 93 94 95 96 97 98 99 100 101 102 103 104 105 106 107 108 109 110 111 112 113 114 115 116 117 118 119 120 121 122 123 124 125 126 127 128 129 130 131 132 133 134 135 136 137 138 139 140 141 142 143 |
"""
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]}")
|