From e0fa4e6356830c2e19d4d27555870e1f38024bb1 Mon Sep 17 00:00:00 2001 From: martin legrand Date: Mon, 2 Jun 2025 22:25:22 +0200 Subject: [PATCH] readme upd --- README.md | 171 ++++++++++++++++++++------------------------- start_services.cmd | 13 ++++ 2 files changed, 87 insertions(+), 97 deletions(-) diff --git a/README.md b/README.md index dc99a5a..bd1fdc0 100644 --- a/README.md +++ b/README.md @@ -22,7 +22,7 @@ * 📋 Plans & Executes Complex Tasks - From trip planning to complex projects — it can split big tasks into steps and get things done using multiple AI agents. -* 🎙️ Voice-Enabled - Clean, fast, futuristic voice and speech to text allowing you to talk to it like it's your personal AI from a sci-fi movie +* 🎙️ Voice-Enabled - Clean, fast, futuristic voice and speech to text allowing you to talk to it like it's your personal AI from a sci-fi movie. (In progress) ### **Demo** @@ -32,19 +32,17 @@ https://github.com/user-attachments/assets/b8ca60e9-7b3b-4533-840e-08f9ac426316 Disclaimer: This demo, including all the files that appear (e.g: CV_candidates.zip), are entirely fictional. We are not a corporation, we seek open-source contributors not candidates. -> 🛠⚠️️ **Active Work in Progress** – Please note that Code/Bash is not dockerized yet but will be soon (see docker_deployement branch) - Do not deploy over network or production. +> 🛠⚠️️ **Active Work in Progress** -> 🙏 This project started as a side-project with zero roadmap and zero funding. It's grown way beyond what I expected by ending in GitHub Trending. Contributions, feedback, and patience are deeply appreciated. +> 🙏 This project started as a side-project and has zero roadmap and zero funding. It's grown way beyond what I expected by ending in GitHub Trending. Contributions, feedback, and patience are deeply appreciated. -## Installation +## Prerequisites Make sure you have chrome driver, docker and python3.10 installed. -We highly advise you use exactly python3.10 for the setup. Dependencies error might happen otherwise. - For issues related to chrome driver, see the **Chromedriver** section. -### 1️⃣ **Clone the repository and setup** +### **Clone the repository and setup** ```sh git clone https://github.com/Fosowl/agenticSeek.git @@ -52,73 +50,56 @@ cd agenticSeek mv .env.example .env ``` -### 2️ **Create a virtual env** +### Change the .env file content + +**API Key are totally optional for user who choose to run LLM locally. Which is the primary purpose of this project. Leave empty if you have sufficient hardware** ```sh -python3 -m venv agentic_seek_env -source agentic_seek_env/bin/activate -# On Windows: agentic_seek_env\Scripts\activate +SEARXNG_BASE_URL="http://127.0.0.1:8080" +REDIS_BASE_URL="redis://redis:6379/0" +WORK_DIR="/Users/mlg/Documents/workspace_for_ai" +OLLAMA_PORT="11434" +LM_STUDIO_PORT="1234" +CUSTOM_ADDITIONAL_LLM_PORT="11435" +OPENAI_API_KEY='optional' +DEEPSEEK_API_KEY='optional' +OPENROUTER_API_KEY='optional' +TOGETHER_API_KEY='optional' +GOOGLE_API_KEY='optional' +ANTHROPIC_API_KEY='optional' ``` -### 3️⃣ **Install package** +The following environment variables configure your application's connections and API keys. -Ensure Python, Docker and docker compose, and Google chrome are installed. +Update the `.env` file with your own values as needed: -We recommend Python 3.10.0. +- **SEARXNG_BASE_URL**: Leave unchanged +- **REDIS_BASE_URL**: Leave unchanged +- **WORK_DIR**: Path to your working directory on your local machine. AgenticSeek will be able to read and interact with these files. +- **OLLAMA_PORT**: Port number for the Ollama service. +- **LM_STUDIO_PORT**: Port number for the LM Studio service. +- **CUSTOM_ADDITIONAL_LLM_PORT**: Port for any additional custom LLM service. +All API key environment variables below are **optional**. You only need to provide them if you plan to use external APIs instead of running LLMs locally. -**Automatic Installation (recommended):** +### **Start Docker** -For Linux/Macos: +Make sure Docker is installed and running on your system. You can start Docker using the following commands: + +- **On Linux/macOS:** + Open a terminal and run: + ```sh + sudo systemctl start docker + ``` + Or launch Docker Desktop from your applications menu if installed. + +- **On Windows:** + Start Docker Desktop from the Start menu. + +You can verify Docker is running by executing: ```sh -./install.sh +docker info ``` - -For windows: - -```sh -./install.bat -``` - -**Manually:** - -**Note: For any OS, ensure the ChromeDriver you install matches your installed Chrome version. Run `google-chrome --version`. See known issues if you have chrome >135** - -- *Linux*: - -Update Package List: `sudo apt update` - -Install Dependencies: `sudo apt install -y alsa-utils portaudio19-dev python3-pyaudio libgtk-3-dev libnotify-dev libgconf-2-4 libnss3 libxss1` - -Install ChromeDriver matching your Chrome browser version: -`sudo apt install -y chromium-chromedriver` - -Install requirements: `pip3 install -r requirements.txt` - -- *Macos*: - -Update brew : `brew update` - -Install chromedriver : `brew install --cask chromedriver` - -Install portaudio: `brew install portaudio` - -Upgrade pip : `python3 -m pip install --upgrade pip` - -Upgrade wheel : : `pip3 install --upgrade setuptools wheel` - -Install requirements: `pip3 install -r requirements.txt` - -- *Windows*: - -Install pyreadline3 `pip install pyreadline3` - -Install portaudio manually (e.g., via vcpkg or prebuilt binaries) and then run: `pip install pyaudio` - -Download and install chromedriver manually from: https://sites.google.com/chromium.org/driver/getting-started - -Place chromedriver in a directory included in your PATH. - -Install requirements: `pip3 install -r requirements.txt` +If you see information about your Docker installation, it is running correctly. --- @@ -153,13 +134,12 @@ provider_server_address = 127.0.0.1:11434 agent_name = Jarvis # name of your AI recover_last_session = True # whenever to recover the previous session save_session = True # whenever to remember the current session -speak = True # text to speech -listen = False # Speech to text, only for CLI -work_dir = /Users/mlg/Documents/workspace # The workspace for AgenticSeek. +speak = False # text to speech +listen = False # Speech to text, only for CLI, experimental jarvis_personality = False # Whenever to use a more "Jarvis" like personality (experimental) languages = en zh # The list of languages, Text to speech will default to the first language on the list [BROWSER] -headless_browser = True # Whenever to use headless browser, recommended only if you use web interface. +headless_browser = True # leave unchanged unless using CLI on host. stealth_mode = True # Use undetected selenium to reduce browser detection ``` @@ -187,6 +167,8 @@ Next step: [Start services and run AgenticSeek](#Start-services-and-Run) ## Setup to run with an API +**Running with an API is optional, see above to run locally.** + Set the desired provider in the `config.ini`. See below for a list of API providers. ```sh @@ -212,9 +194,7 @@ Example: export `TOGETHER_API_KEY="xxxxx"` | togetherAI | No | Use together AI API (non-private) | | google | No | Use google gemini API (non-private) | -*We advise against using gpt-4o or other closedAI models*, performance are poor for web browsing and task planning. - -Please also note that coding/bash might fail with gemini, it seems to ignore our prompt for format to respect, which are optimized for deepseek r1. +Please note that coding/bash might fail with gemini, it seems to ignore our prompt for format to respect, which are optimized for deepseek r1. Model such are gpt-4o seem to perform poorly with our prompt as well. Next step: [Start services and run AgenticSeek](#Start-services-and-Run) @@ -226,44 +206,42 @@ Next step: [Start services and run AgenticSeek](#Start-services-and-Run) ## Start services and Run -Activate your python env if needed. -```sh -source agentic_seek_env/bin/activate -``` - Start required services. This will start all services from the docker-compose.yml, including: - searxng - redis (required by searxng) - frontend + - backend (if using `full`) + +```sh +sudo ./start_services.sh full # MacOS +start ./start_services.cmd full # Window +``` + +Go to `http://localhost:3000/` and you should see the web interface. + +**Optional:** Run with the CLI interface: + +To run with CLI interface you would have to install package on host: + +```sh +./install.sh +./install.bat # windows +``` + +Start services: ```sh sudo ./start_services.sh # MacOS start ./start_services.cmd # Window ``` -**Options 1:** Run with the CLI interface. - -```sh -python3 cli.py -``` - -We advise you set `headless_browser` to False in the config.ini for CLI mode. - -**Options 2:** Run with the Web interface. - -Start the backend. - -```sh -python3 api.py -``` - -Go to `http://localhost:3000/` and you should see the web interface. +Then run : `python3 cli.py` --- ## Usage -Make sure the services are up and running with `./start_services.sh` and run the AgenticSeek with `python3 cli.py` for CLI mode or `python3 api.py` then go to `localhost:3000` for web interface. +Make sure the services are up and running with `./start_services.sh full` and go to `localhost:3000` for web interface. You can also use speech to text by setting `listen = True` in the config. Only for CLI mode. @@ -359,6 +337,8 @@ Next step: [Start services and run AgenticSeek](#Start-services-and-Run) ## Speech to Text +Warning: speech to text only work in CLI mode at the moment. + Please note that currently speech to text only work in english. The speech-to-text functionality is disabled by default. To enable it, set the listen option to True in the config.ini file: @@ -398,7 +378,6 @@ recover_last_session = False save_session = False speak = False listen = False -work_dir = /Users/mlg/Documents/ai_folder jarvis_personality = False languages = en zh [BROWSER] @@ -426,8 +405,6 @@ stealth_mode = False - listen -> listen to voice input (True) or not (False). -- work_dir -> Folder the AI will have access to. eg: /Users/user/Documents/. - - jarvis_personality -> Uses a JARVIS-like personality (True) or not (False). This simply change the prompt file. - languages -> The list of supported language, needed for the llm router to work properly, avoid putting too many or too similar languages. diff --git a/start_services.cmd b/start_services.cmd index b069390..ce278a8 100644 --- a/start_services.cmd +++ b/start_services.cmd @@ -6,6 +6,19 @@ if "%1"=="full" ( echo Starting partial deployment... (backend run on host), use "full" to run all services in containers ) +where openssl >nul 2>&1 +if %ERRORLEVEL% == 0 ( + for /f %%i in ('openssl rand -hex 32') do set SEARXNG_SECRET_KEY=%%i +) else ( + where python3 >nul 2>&1 + if %ERRORLEVEL% == 0 ( + for /f %%i in ('python3 -c "import secrets; print(secrets.token_hex(32))"') do set SEARXNG_SECRET_KEY=%%i + ) else ( + echo Error: Neither openssl nor python is available to generate a secret key. + exit /b 1 + ) +) + REM Stop all containers echo Stopping containers... docker stop $(docker ps -aq) >nul 2>&1