From 3ed4ae4052b11ad4466f99b836b8fd914afb4c21 Mon Sep 17 00:00:00 2001 From: Tarek ElMalah Date: Thu, 3 Jul 2025 15:43:19 -0400 Subject: [PATCH 01/49] feat: update README and configuration for new model integrations and improved user prompts --- .env-sample | 3 + README.md | 149 ++++++++++++++++++++++++++++++++++---- operate/config.py | 27 ++++--- operate/main.py | 1 - operate/models/apis.py | 93 ++++++++++++++---------- operate/models/prompts.py | 2 +- operate/operate.py | 60 ++++++++++++--- 7 files changed, 257 insertions(+), 78 deletions(-) create mode 100644 .env-sample diff --git a/.env-sample b/.env-sample new file mode 100644 index 00000000..0f427c59 --- /dev/null +++ b/.env-sample @@ -0,0 +1,3 @@ +OPENAI_API_KEY=YOUR_OPENAI_API_KEY +GOOGLE_API_KEY=YOUR_GOOGLE_API_KEY +OLLAMA_HOST='http://localhost:11434/' \ No newline at end of file diff --git a/README.md b/README.md index 221b3fd8..ee46bf9b 100644 --- a/README.md +++ b/README.md @@ -20,7 +20,8 @@ ome ## Key Features - **Compatibility**: Designed for various multimodal models. -- **Integration**: Currently integrated with **GPT-4o, GPT-4.1, o1, Gemini Pro Vision, Claude 3, Qwen-VL and LLaVa.** +- **Expanded Model Support**: Now integrated with the latest **Gemini 2.5 Pro, Gemini 2.5 Flash**, and **Gemma 3n** models (including `e2b` and `e4b` variants), alongside existing support for GPT-4o, GPT-4.1, o1, Claude 3, Qwen-VL, and LLaVa. +- **Enhanced Ollama Integration**: Improved handling for Ollama models, including default host configuration and more informative error messages. - **Future Plans**: Support for additional models. ## Demo @@ -29,21 +30,34 @@ https://github.com/OthersideAI/self-operating-computer/assets/42594239/9e8abc96- ## Run `Self-Operating Computer` -1. **Install the project** -``` -pip install self-operating-computer -``` -2. **Run the project** -``` -operate -``` -3. **Enter your OpenAI Key**: If you don't have one, you can obtain an OpenAI key [here](https://platform.openai.com/account/api-keys). If you need you change your key at a later point, run `vim .env` to open the `.env` and replace the old key. +To run the application from your local copy (after making changes), follow these steps: + +1. **Uninstall previous installations (if any):** + ```bash + pip uninstall self-operating-computer + ``` + Confirm uninstallation when prompted. + +2. **Install in editable mode:** + Navigate to the project's root directory (where `setup.py` is located) and run: + ```bash + pip install -e . + ``` + This links your local source code to your Python environment, so changes are immediately reflected. + +3. **Run the project:** + ```bash + operate + ``` + If you run `operate` without any arguments, a welcome screen will be displayed, followed by an interactive model selection menu. If a model requires an API key that is not found in your environment variables or `.env` file, you will be prompted to enter it. + +4. **Enter your OpenAI Key**: If you don't have one, you can obtain an OpenAI key [here](https://platform.openai.com/account/api-keys). If you need you change your key at a later point, run `vim .env` to open the `.env` and replace the old key.
-4. **Give Terminal app the required permissions**: As a last step, the Terminal app will ask for permission for "Screen Recording" and "Accessibility" in the "Security & Privacy" page of Mac's "System Preferences". +5. **Give Terminal app the required permissions**: As a last step, the Terminal app will ask for permission for "Screen Recording" and "Accessibility" in the "Security & Privacy" page of Mac's "System Preferences".
@@ -68,9 +82,9 @@ operate -m gpt-4.1-with-ocr ### Multimodal Models `-m` -Try Google's `gemini-pro-vision` by following the instructions below. Start `operate` with the Gemini model +Try Google's `gemini-1.5-pro-latest`, `gemini-2.5-pro`, or `gemini-2.5-flash` by following the instructions below. Start `operate` with the Gemini model ``` -operate -m gemini-pro-vision +operate -m gemini-2.5-pro ``` **Enter your Google AI Studio API key when terminal prompts you for it** If you don't have one, you can obtain a key [here](https://makersuite.google.com/app/apikey) after setting up your Google AI Studio account. You may also need [authorize credentials for a desktop application](https://ai.google.dev/palm_docs/oauth_quickstart). It took me a bit of time to get it working, if anyone knows a simpler way, please make a PR. @@ -112,6 +126,28 @@ operate -m llava ``` **Important:** Error rates when using LLaVA are very high. This is simply intended to be a base to build off of as local multimodal models improve over time. +#### Try Gemma 3n Hosted Through Ollama `-m gemma3n` +If you wish to experiment with the Self-Operating Computer Framework using Gemma 3n on your own machine, you can with Ollama! +*Note: Ollama currently only supports MacOS and Linux. Windows now in Preview* + +First, install Ollama on your machine from https://ollama.ai/download. + +Once Ollama is installed, pull the Gemma 3n model: +``` +ollama pull gemma3n +``` +This will download the model on your machine. You can also pull specific versions like `ollama pull gemma3n:e2b` or `ollama pull gemma3n:e4b`. + +When Ollama has finished pulling Gemma 3n, start the server: +``` +ollama serve +``` + +That's it! Now start `operate` and select the Gemma 3n model. You can specify `gemma3n`, `gemma3n:e2b`, or `gemma3n:e4b`: +``` +operate -m gemma3n:e2b +``` + Learn more about Ollama at its [GitHub Repository](https://www.github.com/ollama/ollama) ### Voice Mode `--voice` @@ -176,7 +212,7 @@ For any input on improving this project, feel free to reach out to [Josh](https: For real-time discussions and community support, join our Discord server. - If you're already a member, join the discussion in [#self-operating-computer](https://discord.com/channels/877638638001877052/1181241785834541157). -- If you're new, first [join our Discord Server](https://discord.gg/YqaKtyBEzM) and then navigate to the [#self-operating-computer](https://discord.com/channels/877638638001877052/1181241785834541157). +- If you're new, first [join our Discord Server](https://discord.com/channels/877638638001877052/1181241785834541157). ## Follow HyperWriteAI for More Updates @@ -188,5 +224,88 @@ Stay updated with the latest developments: - This project is compatible with Mac OS, Windows, and Linux (with X server installed). ## OpenAI Rate Limiting Note -The ```gpt-4o``` model is required. To unlock access to this model, your account needs to spend at least \$5 in API credits. Pre-paying for these credits will unlock access if you haven't already spent the minimum \$5. +The ```gpt-4o``` model is required. To unlock access to this model, your account needs to spend at least $5 in API credits. Pre-paying for these credits will unlock access if you haven't already spent the minimum $5. Learn more **[here](https://platform.openai.com/docs/guides/rate-limits?context=tier-one)** + +## Supported Models Summary + +Here's a summary of all currently supported models and how to run them: + +* **OpenAI GPT-4o (Default):** + ``` + operate + ``` +* **OpenAI o1-with-ocr:** + ``` + operate -m o1-with-ocr + ``` +* **OpenAI gpt-4.1-with-ocr:** + ``` + operate -m gpt-4.1-with-ocr + ``` +* **OpenAI gpt-4-with-ocr:** + ``` + operate -m gpt-4-with-ocr + ``` +* **OpenAI gpt-4-with-som:** + ``` + operate -m gpt-4-with-som + ``` +* **Google Gemini 1.5 Pro (latest):** + ``` + operate -m gemini-1.5-pro-latest + ``` +* **Google Gemini 2.5 Pro:** + ``` + operate -m gemini-2.5-pro + ``` +* **Google Gemini 2.5 Flash:** + ``` + operate -m gemini-2.5-flash + ``` +* **Anthropic Claude 3:** + ``` + operate -m claude-3 + ``` +* **Qwen-VL:** + ``` + operate -m qwen-vl + ``` +* **LLaVa (via Ollama):** + ``` + operate -m llava + ``` +* **Gemma 3n (via Ollama):** + ``` + operate -m gemma3n + ``` +* **Gemma 3n:e2b (via Ollama):** + ``` + operate -m gemma3n:e2b + ``` +* **Gemma 3n:e4b (via Ollama):** + ``` + operate -m gemma3n:e4b + ``` + +## Release Notes + +### Version 0.0.X (Latest) + +**New Features:** + +* **Interactive Model Selection:** When running `operate` without specifying a model, a welcome screen is displayed, followed by an interactive menu to select your desired model. +* **Dynamic API Key Prompting:** The application now intelligently prompts for required API keys (e.g., OpenAI, Google, Anthropic) only when a model requiring that key is selected and the key is not found in your environment variables or `.env` file. + +**Improvements:** + +* **Expanded Google Gemini Support:** Added full support for `gemini-2.5-pro` and `gemini-2.5-flash` models. +* **Enhanced Ollama Integration:** Improved handling for Ollama models, including setting `http://localhost:11434` as the default host and providing more informative error messages when Ollama models are not found. +* **Gemma 3n Model Support:** Integrated support for `gemma3n`, `gemma3n:e2b`, and `gemma3n:e4b` models via Ollama. +* **Robust Error Handling:** Improved error handling for API calls to prevent unexpected fallbacks and provide clearer error messages. + +**Bug Fixes:** + +* Resolved an issue where the application would incorrectly prompt for an OpenAI API key when a Google Gemini model was selected. +* Fixed an issue where the application would attempt to use an incorrect model name for `gemini-2.5-flash-lite` (which is not a valid model name). +* Addressed the "Extra data" JSON parsing error when receiving responses from Gemini models. diff --git a/operate/config.py b/operate/config.py index 09f78da0..c9b898c2 100644 --- a/operate/config.py +++ b/operate/config.py @@ -92,7 +92,7 @@ def initialize_qwen(self): client.base_url = "https://dashscope.aliyuncs.com/compatible-mode/v1" return client - def initialize_google(self): + def initialize_google(self, model_name="gemini-1.5-pro-latest"): if self.google_api_key: if self.verbose: print("[Config][initialize_google] using cached google_api_key") @@ -104,7 +104,7 @@ def initialize_google(self): ) api_key = os.getenv("GOOGLE_API_KEY") genai.configure(api_key=api_key, transport="rest") - model = genai.GenerativeModel("gemini-pro-vision") + model = genai.GenerativeModel(model_name) return model @@ -117,7 +117,7 @@ def initialize_ollama(self): print( "[Config][initialize_ollama] no cached ollama host. Assuming ollama running locally." ) - self.ollama_host = os.getenv("OLLAMA_HOST", None) + self.ollama_host = os.getenv("OLLAMA_HOST", "http://localhost:11434") model = Client(host=self.ollama_host) return model @@ -135,20 +135,27 @@ def validation(self, model, voice_mode): self.require_api_key( "OPENAI_API_KEY", "OpenAI API key", - model == "gpt-4" - or voice_mode - or model == "gpt-4-with-som" - or model == "gpt-4-with-ocr" - or model == "gpt-4.1-with-ocr" - or model == "o1-with-ocr", + (model in [ + "gpt-4", + "gpt-4o", + "gpt-4-with-som", + "gpt-4-with-ocr", + "gpt-4.1-with-ocr", + "o1-with-ocr", + ]) or (voice_mode and not model.startswith("gemini")), ) self.require_api_key( - "GOOGLE_API_KEY", "Google API key", model == "gemini-pro-vision" + "GOOGLE_API_KEY", + "Google API key", + model == "gemini-1.5-pro-latest" + or model == "gemini-2.5-pro" + or model == "gemini-2.5-flash", ) self.require_api_key( "ANTHROPIC_API_KEY", "Anthropic API key", model == "claude-3" ) self.require_api_key("QWEN_API_KEY", "Qwen API key", model == "qwen-vl") + self.require_api_key("OLLAMA_HOST", "Ollama Host", model == "llava" or model.startswith("gemma3n")) def require_api_key(self, key_name, key_description, is_required): key_exists = bool(os.environ.get(key_name)) diff --git a/operate/main.py b/operate/main.py index 86832e4e..f7fb29f6 100644 --- a/operate/main.py +++ b/operate/main.py @@ -15,7 +15,6 @@ def main_entry(): "--model", help="Specify the model to use", required=False, - default="gpt-4-with-ocr", ) # Add a voice flag diff --git a/operate/models/apis.py b/operate/models/apis.py index 23794fca..12f1eab3 100644 --- a/operate/models/apis.py +++ b/operate/models/apis.py @@ -54,10 +54,10 @@ async def get_next_action(model, messages, objective, session_id): return operation, None if model == "agent-1": return "coming soon" - if model == "gemini-pro-vision": - return call_gemini_pro_vision(messages, objective), None - if model == "llava": - operation = call_ollama_llava(messages) + if model == "gemini-1.5-pro-latest" or model == "gemini-2.5-pro" or model == "gemini-2.5-flash": + return call_gemini(messages, objective, model), None + if model == "llava" or model == "gemma3n": + operation = call_ollama_model(messages, model) return operation, None if model == "claude-3": operation = await call_claude_3_with_ocr(messages, objective, model) @@ -259,13 +259,13 @@ async def call_qwen_vl_with_ocr(messages, objective, model): traceback.print_exc() return gpt_4_fallback(messages, objective, model) -def call_gemini_pro_vision(messages, objective): +def call_gemini(messages, objective, model_name): """ Get the next action for Self-Operating Computer using Gemini Pro Vision """ if config.verbose: print( - "[Self Operating Computer][call_gemini_pro_vision]", + "[Self Operating Computer][call_gemini_1_5_pro_latest]", ) # sleep for a second time.sleep(1) @@ -279,23 +279,23 @@ def call_gemini_pro_vision(messages, objective): capture_screen_with_cursor(screenshot_filename) # sleep for a second time.sleep(1) - prompt = get_system_prompt("gemini-pro-vision", objective) + prompt = get_system_prompt(model_name, objective) - model = config.initialize_google() + model = config.initialize_google(model_name) if config.verbose: - print("[call_gemini_pro_vision] model", model) + print("[call_gemini_1_5_pro_latest] model", model) response = model.generate_content([prompt, Image.open(screenshot_filename)]) - content = response.text[1:] + content = clean_json(response.text) if config.verbose: - print("[call_gemini_pro_vision] response", response) - print("[call_gemini_pro_vision] content", content) + print("[call_gemini_1_5_pro_latest] response", response) + print("[call_gemini_1_5_pro_latest] content", content) content = json.loads(content) if config.verbose: print( - "[get_next_action][call_gemini_pro_vision] content", + "[get_next_action][call_gemini_1_5_pro_latest] content", content, ) @@ -303,12 +303,11 @@ def call_gemini_pro_vision(messages, objective): except Exception as e: print( - f"{ANSI_GREEN}[Self-Operating Computer]{ANSI_BRIGHT_MAGENTA}[Operate] That did not work. Trying another method {ANSI_RESET}" + f"{ANSI_GREEN}[Self-Operating Computer]{ANSI_BRIGHT_MAGENTA}[Operate] Error calling Gemini model: {e}{ANSI_RESET}" ) if config.verbose: - print("[Self-Operating Computer][Operate] error", e) traceback.print_exc() - return call_gpt_4o(messages) + raise # Re-raise the exception to prevent fallback to GPT-4o async def call_gpt_4o_with_ocr(messages, objective, model): @@ -326,28 +325,37 @@ async def call_gpt_4o_with_ocr(messages, objective, model): os.makedirs(screenshots_dir) screenshot_filename = os.path.join(screenshots_dir, "screenshot.png") - # Call the function to capture the screen with the cursor - capture_screen_with_cursor(screenshot_filename) + + if config.display_screenshot: + # Call the function to capture the screen with the cursor + capture_screen_with_cursor(screenshot_filename) - with open(screenshot_filename, "rb") as img_file: - img_base64 = base64.b64encode(img_file.read()).decode("utf-8") + with open(screenshot_filename, "rb") as img_file: + img_base64 = base64.b64encode(img_file.read()).decode("utf-8") - if len(messages) == 1: - user_prompt = get_user_first_message_prompt() + if len(messages) == 1: + user_prompt = get_user_first_message_prompt() + else: + user_prompt = get_user_prompt() + + vision_message = { + "role": "user", + "content": [ + {"type": "text", "text": user_prompt}, + { + "type": "image_url", + "image_url": {"url": f"data:image/jpeg;base64,{img_base64}"}, + }, + ], + } + messages.append(vision_message) else: - user_prompt = get_user_prompt() - - vision_message = { - "role": "user", - "content": [ - {"type": "text", "text": user_prompt}, - { - "type": "image_url", - "image_url": {"url": f"data:image/jpeg;base64,{img_base64}"}, - }, - ], - } - messages.append(vision_message) + if len(messages) == 1: + user_prompt = get_user_first_message_prompt() + else: + user_prompt = get_user_prompt() + vision_message = {"role": "user", "content": user_prompt} + messages.append(vision_message) response = client.chat.completions.create( model="gpt-4o", @@ -438,6 +446,7 @@ async def call_gpt_4_1_with_ocr(messages, objective, model): os.makedirs(screenshots_dir) screenshot_filename = os.path.join(screenshots_dir, "screenshot.png") + capture_screen_with_cursor(screenshot_filename) with open(screenshot_filename, "rb") as img_file: @@ -545,6 +554,7 @@ async def call_o1_with_ocr(messages, objective, model): os.makedirs(screenshots_dir) screenshot_filename = os.path.join(screenshots_dir, "screenshot.png") + # Call the function to capture the screen with the cursor capture_screen_with_cursor(screenshot_filename) @@ -657,6 +667,7 @@ async def call_gpt_4o_labeled(messages, objective, model): os.makedirs(screenshots_dir) screenshot_filename = os.path.join(screenshots_dir, "screenshot.png") + # Call the function to capture the screen with the cursor capture_screen_with_cursor(screenshot_filename) @@ -787,7 +798,7 @@ async def call_gpt_4o_labeled(messages, objective, model): return call_gpt_4o(messages) -def call_ollama_llava(messages): +def call_ollama_model(messages, model_name): if config.verbose: print("[call_ollama_llava]") time.sleep(1) @@ -798,6 +809,7 @@ def call_ollama_llava(messages): os.makedirs(screenshots_dir) screenshot_filename = os.path.join(screenshots_dir, "screenshot.png") + # Call the function to capture the screen with the cursor capture_screen_with_cursor(screenshot_filename) @@ -820,10 +832,13 @@ def call_ollama_llava(messages): messages.append(vision_message) response = model.chat( - model="llava", + model=model_name, messages=messages, ) + if not response or "message" not in response or "content" not in response["message"]: + raise Exception(f"Invalid response from Ollama model {model_name}: {response}") + # Important: Remove the image path from the message history. # Ollama will attempt to load each image reference and will # eventually timeout. @@ -847,8 +862,7 @@ def call_ollama_llava(messages): except ollama.ResponseError as e: print( - f"{ANSI_GREEN}[Self-Operating Computer]{ANSI_RED}[Operate] Couldn't connect to Ollama. With Ollama installed, run `ollama pull llava` then `ollama serve`{ANSI_RESET}", - e, + f"{ANSI_GREEN}[Self-Operating Computer]{ANSI_RED}[Operate] Couldn't connect to Ollama. With Ollama installed, run `ollama pull {model_name}` then `ollama serve` {e}{ANSI_RESET}" ) except Exception as e: @@ -879,6 +893,7 @@ async def call_claude_3_with_ocr(messages, objective, model): os.makedirs(screenshots_dir) screenshot_filename = os.path.join(screenshots_dir, "screenshot.png") + capture_screen_with_cursor(screenshot_filename) # downsize screenshot due to 5MB size limit diff --git a/operate/models/prompts.py b/operate/models/prompts.py index 8cea8f3e..3572d081 100644 --- a/operate/models/prompts.py +++ b/operate/models/prompts.py @@ -232,7 +232,7 @@ def get_system_prompt(model, objective): os_search_str=os_search_str, operating_system=operating_system, ) - elif model == "gpt-4-with-ocr" or model == "gpt-4.1-with-ocr" or model == "o1-with-ocr" or model == "claude-3" or model == "qwen-vl": + elif model == "gpt-4-with-ocr" or model == "gpt-4.1-with-ocr" or model == "o1-with-ocr" or model == "claude-3" or model == "qwen-vl" or model.startswith("gemini"): prompt = SYSTEM_PROMPT_OCR.format( objective=objective, diff --git a/operate/operate.py b/operate/operate.py index c63d9851..a66b576e 100644 --- a/operate/operate.py +++ b/operate/operate.py @@ -2,7 +2,7 @@ import os import time import asyncio -from prompt_toolkit.shortcuts import message_dialog +from prompt_toolkit.shortcuts import message_dialog, radiolist_dialog from prompt_toolkit import prompt from operate.exceptions import ModelNotRecognizedException import platform @@ -30,6 +30,45 @@ operating_system = OperatingSystem() +def display_welcome_message(): + welcome_message = """ +Welcome to Self-Operating Computer! + +This tool allows multimodal models to operate a computer. +It uses screen vision and decides on mouse/keyboard actions. + +Let's get started! +""" + print(welcome_message) + + +def select_model_interactively(): + models = [ + ("gpt-4o", "OpenAI GPT-4o (Default)"), + ("gpt-4-with-ocr", "OpenAI GPT-4 with OCR"), + ("gpt-4.1-with-ocr", "OpenAI GPT-4.1 with OCR"), + ("o1-with-ocr", "OpenAI o1 with OCR"), + ("gpt-4-with-som", "OpenAI GPT-4 with Set-of-Mark Prompting"), + ("gemini-1.5-pro-latest", "Google Gemini 1.5 Pro (latest)"), + ("gemini-2.5-pro", "Google Gemini 2.5 Pro"), + ("gemini-2.5-flash", "Google Gemini 2.5 Flash"), + ("claude-3", "Anthropic Claude 3"), + ("qwen-vl", "Qwen-VL"), + ("llava", "LLaVa (via Ollama)"), + ("gemma3n", "Gemma 3n (via Ollama)"), + ("gemma3n:e2b", "Gemma 3n:e2b (via Ollama)"), + ("gemma3n:e4b", "Gemma 3n:e4b (via Ollama)"), + ] + + selected_model = radiolist_dialog( + title="Model Selection", + text="Please select a model to use:", + values=models, + ).run() + + return selected_model + + def main(model, terminal_prompt, voice_mode=False, verbose_mode=False): """ Main function for the Self-Operating Computer. @@ -47,6 +86,14 @@ def main(model, terminal_prompt, voice_mode=False, verbose_mode=False): # Initialize `WhisperMic`, if `voice_mode` is True config.verbose = verbose_mode + + display_welcome_message() + + if not model: + model = select_model_interactively() + if not model: # User cancelled model selection + sys.exit("Model selection cancelled. Exiting.") + config.validation(model, voice_mode) if voice_mode: @@ -61,17 +108,6 @@ def main(model, terminal_prompt, voice_mode=False, verbose_mode=False): ) sys.exit(1) - # Skip message dialog if prompt was given directly - if not terminal_prompt: - message_dialog( - title="Self-Operating Computer", - text="An experimental framework to enable multimodal models to operate computers", - style=style, - ).run() - - else: - print("Running direct prompt...") - # # Clear the console if platform.system() == "Windows": os.system("cls") From f2dbae05246226ca6dba7429e38519aba80007d2 Mon Sep 17 00:00:00 2001 From: Tarek ElMalah Date: Thu, 3 Jul 2025 23:27:46 -0400 Subject: [PATCH 02/49] feat: Add interactive model selection and custom system prompt feature --- .env-sample | 3 ++- README.md | 1 + operate/models/prompts.py | 8 +++++++- operate/operate.py | 36 ++++++++++++++++++++++++++++++++++-- 4 files changed, 44 insertions(+), 4 deletions(-) diff --git a/.env-sample b/.env-sample index 0f427c59..fe2e83c2 100644 --- a/.env-sample +++ b/.env-sample @@ -1,3 +1,4 @@ OPENAI_API_KEY=YOUR_OPENAI_API_KEY GOOGLE_API_KEY=YOUR_GOOGLE_API_KEY -OLLAMA_HOST='http://localhost:11434/' \ No newline at end of file +OLLAMA_HOST='http://localhost:11434/' +CUSTOM_SYSTEM_PROMPT='You are a helpful assistant that can perform tasks on a computer. You can execute commands, answer questions, and assist with various tasks. Your goal is to help the user efficiently and effectively.' \ No newline at end of file diff --git a/README.md b/README.md index ee46bf9b..b50d26cc 100644 --- a/README.md +++ b/README.md @@ -296,6 +296,7 @@ Here's a summary of all currently supported models and how to run them: * **Interactive Model Selection:** When running `operate` without specifying a model, a welcome screen is displayed, followed by an interactive menu to select your desired model. * **Dynamic API Key Prompting:** The application now intelligently prompts for required API keys (e.g., OpenAI, Google, Anthropic) only when a model requiring that key is selected and the key is not found in your environment variables or `.env` file. +* **Custom System Prompt:** Users can now provide a custom system prompt from a file or an environment variable (`CUSTOM_SYSTEM_PROMPT`). If the environment variable is set, the option to load from it will be hidden. **Improvements:** diff --git a/operate/models/prompts.py b/operate/models/prompts.py index 3572d081..41d973e1 100644 --- a/operate/models/prompts.py +++ b/operate/models/prompts.py @@ -207,11 +207,17 @@ Action:""" -def get_system_prompt(model, objective): +def get_system_prompt(model, objective, custom_system_prompt=None): """ Format the vision prompt more efficiently and print the name of the prompt used """ + if custom_system_prompt: + return custom_system_prompt + + if custom_system_prompt: + return custom_system_prompt + if platform.system() == "Darwin": cmd_string = "\"command\"" os_search_str = "[\"command\", \"space\"]" diff --git a/operate/operate.py b/operate/operate.py index a66b576e..71e3cc77 100644 --- a/operate/operate.py +++ b/operate/operate.py @@ -69,6 +69,36 @@ def select_model_interactively(): return selected_model +def get_custom_system_prompt(): + system_prompt_options = [ + ("none", "No custom system prompt"), + ("file", "Load from file"), + ] + + if os.getenv("CUSTOM_SYSTEM_PROMPT"): # Check if env variable exists + pass # Don't show the option if it's already set + else: + system_prompt_options.append(("env", "Load from environment variable (CUSTOM_SYSTEM_PROMPT)")) + + selected_option = radiolist_dialog( + title="Custom System Prompt", + text="How would you like to provide a custom system prompt?", + values=system_prompt_options, + ).run() + + if selected_option == "file": + file_path = prompt("Enter the path to the system prompt file:") + try: + with open(file_path, "r") as f: + return f.read() + except FileNotFoundError: + print(f"{ANSI_RED}Error: File not found at {file_path}{ANSI_RESET}") + return None + elif selected_option == "env": + return os.getenv("CUSTOM_SYSTEM_PROMPT") + return None + + def main(model, terminal_prompt, voice_mode=False, verbose_mode=False): """ Main function for the Self-Operating Computer. @@ -96,6 +126,8 @@ def main(model, terminal_prompt, voice_mode=False, verbose_mode=False): config.validation(model, voice_mode) + custom_system_prompt = get_custom_system_prompt() + if voice_mode: try: from whisper_mic import WhisperMic @@ -132,7 +164,7 @@ def main(model, terminal_prompt, voice_mode=False, verbose_mode=False): print(f"{ANSI_YELLOW}[User]{ANSI_RESET}") objective = prompt(style=style) - system_prompt = get_system_prompt(model, objective) + system_prompt = get_system_prompt(model, objective, custom_system_prompt) system_message = {"role": "system", "content": system_prompt} messages = [system_message] @@ -220,4 +252,4 @@ def operate(operations, model): print(f"{operate_thought}") print(f"{ANSI_BLUE}Action: {ANSI_RESET}{operate_type} {operate_detail}\n") - return False + return False \ No newline at end of file From 29e83a1b1748582507df1bd69cfe56b5ccc62791 Mon Sep 17 00:00:00 2001 From: Tarek ElMalah Date: Thu, 3 Jul 2025 23:37:05 -0400 Subject: [PATCH 03/49] docs: Add screenshots for interactive model selection and custom system prompt in README --- README.md | 11 +++++++++++ 1 file changed, 11 insertions(+) diff --git a/README.md b/README.md index b50d26cc..da3ccef7 100644 --- a/README.md +++ b/README.md @@ -51,6 +51,17 @@ To run the application from your local copy (after making changes), follow these ``` If you run `operate` without any arguments, a welcome screen will be displayed, followed by an interactive model selection menu. If a model requires an API key that is not found in your environment variables or `.env` file, you will be prompted to enter it. +
+ +
+ +Once you select a model, you will be prompted to provide a custom system prompt. This can be loaded from a file or an environment variable. + +
+ + +
+ 4. **Enter your OpenAI Key**: If you don't have one, you can obtain an OpenAI key [here](https://platform.openai.com/account/api-keys). If you need you change your key at a later point, run `vim .env` to open the `.env` and replace the old key.
From 901be5aa6dc3c7827280a781dbfcd0375ab4064f Mon Sep 17 00:00:00 2001 From: Tarek ElMalah Date: Thu, 3 Jul 2025 23:46:12 -0400 Subject: [PATCH 04/49] docs: Add image assets for README --- .gitignore | 3 ++- 1 file changed, 2 insertions(+), 1 deletion(-) diff --git a/.gitignore b/.gitignore index f23fd690..adeb97b4 100644 --- a/.gitignore +++ b/.gitignore @@ -162,5 +162,6 @@ cython_debug/ .DS_Store # Avoid sending testing screenshots up -*.png +# *.png operate/screenshots/ +screenshots/* From 169249d0f2598264217f08dc92bf5785e5384b86 Mon Sep 17 00:00:00 2001 From: Tarek ElMalah Date: Thu, 3 Jul 2025 23:51:16 -0400 Subject: [PATCH 05/49] add image --- readme/system-parameter-2.png | Bin 0 -> 149619 bytes 1 file changed, 0 insertions(+), 0 deletions(-) create mode 100644 readme/system-parameter-2.png diff --git a/readme/system-parameter-2.png b/readme/system-parameter-2.png new file mode 100644 index 0000000000000000000000000000000000000000..56a1e56c424d78e9c443911e62ef5fba68de2d23 GIT binary patch literal 149619 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