|
|
""" |
|
|
Configuración del modelo a usar para el agente GAIA. |
|
|
Cambia aquí para elegir entre modelo local o API externa. |
|
|
""" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USE_LOCAL_MODEL = False |
|
|
|
|
|
LOCAL_MODEL_CONFIG = { |
|
|
"model_id": "HuggingFaceH4/zephyr-7b-beta", |
|
|
"load_in_8bit": True, |
|
|
"max_new_tokens": 256, |
|
|
"temperature": 0.0, |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
USE_API_MODEL = True |
|
|
|
|
|
API_MODEL_CONFIG = { |
|
|
"model_id": "gemini/gemini-2.0-flash-exp", |
|
|
"max_tokens": 256, |
|
|
"temperature": 0.0, |
|
|
} |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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: |
|
|
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" |
|
|
|
|
|
else: |
|
|
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: |
|
|
return "~1-2GB RAM (solo cliente)" |
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
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]}") |
|
|
|