|  | """ | 
					
						
						|  | 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]}") | 
					
						
						|  |  |