import os import pickle import uuid import gradio as gr def default_config(): return { "agent_type": "custom", "max_steps": 100, "max_actions_per_step": 10, "use_vision": True, "tool_call_in_content": True, "llm_provider": "openai", "llm_model_name": "gpt-4o", "llm_temperature": 1.0, "llm_base_url": "", "llm_api_key": "", "use_own_browser": os.getenv("CHROME_PERSISTENT_SESSION", "false").lower() == "true", "keep_browser_open": False, "headless": False, "disable_security": True, "enable_recording": True, "window_w": 1280, "window_h": 1100, "save_recording_path": "./tmp/record_videos", "save_trace_path": "./tmp/traces", "save_agent_history_path": "./tmp/agent_history", "task": "go to google.com and type 'OpenAI' click search and give me the first url", } def load_config_from_file(config_file): try: with open(config_file, 'rb') as f: settings = pickle.load(f) return settings except Exception as e: return f"Error loading configuration: {str(e)}" def save_config_to_file(settings, save_dir="./tmp/webui_settings"): os.makedirs(save_dir, exist_ok=True) config_file = os.path.join(save_dir, f"{uuid.uuid4()}.pkl") try: with open(config_file, 'wb') as f: pickle.dump(settings, f) return f"Configuration saved to {config_file}" except Exception as e: return f"Error saving configuration: {str(e)}" def save_current_config(*args): current_config = { "agent_type": args[0], "max_steps": args[1], "max_actions_per_step": args[2], "use_vision": args[3], "tool_call_in_content": args[4], "llm_provider": args[5], "llm_model_name": args[6], "llm_temperature": args[7], "llm_base_url": args[8], "llm_api_key": args[9], "use_own_browser": args[10], "keep_browser_open": args[11], "headless": args[12], "disable_security": args[13], "enable_recording": args[14], "window_w": args[15], "window_h": args[16], "save_recording_path": args[17], "save_trace_path": args[18], "save_agent_history_path": args[19], "task": args[20], } return save_config_to_file(current_config) def update_ui_from_config(config_file): if config_file is not None: loaded_config = load_config_from_file(config_file.name) if isinstance(loaded_config, dict): return ( gr.update(value=loaded_config.get("agent_type", "custom")), gr.update(value=loaded_config.get("max_steps", 100)), gr.update(value=loaded_config.get("max_actions_per_step", 10)), gr.update(value=loaded_config.get("use_vision", True)), gr.update(value=loaded_config.get("tool_call_in_content", True)), gr.update(value=loaded_config.get("llm_provider", "openai")), gr.update(value=loaded_config.get("llm_model_name", "gpt-4o")), gr.update(value=loaded_config.get("llm_temperature", 1.0)), gr.update(value=loaded_config.get("llm_base_url", "")), gr.update(value=loaded_config.get("llm_api_key", "")), gr.update(value=loaded_config.get("use_own_browser", False)), gr.update(value=loaded_config.get("keep_browser_open", False)), gr.update(value=loaded_config.get("headless", False)), gr.update(value=loaded_config.get("disable_security", True)), gr.update(value=loaded_config.get("enable_recording", True)), gr.update(value=loaded_config.get("window_w", 1280)), gr.update(value=loaded_config.get("window_h", 1100)), gr.update(value=loaded_config.get("save_recording_path", "./tmp/record_videos")), gr.update(value=loaded_config.get("save_trace_path", "./tmp/traces")), gr.update(value=loaded_config.get("save_agent_history_path", "./tmp/agent_history")), gr.update(value=loaded_config.get("task", "")), "Configuration loaded successfully." ) else: return ( gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), "Error: Invalid configuration file." ) return ( gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), gr.update(), "No file selected." )