readme upd
This commit is contained in:
@@ -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.
|
* 📋 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**
|
### **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.
|
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.
|
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.
|
For issues related to chrome driver, see the **Chromedriver** section.
|
||||||
|
|
||||||
### 1️⃣ **Clone the repository and setup**
|
### **Clone the repository and setup**
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
git clone https://github.com/Fosowl/agenticSeek.git
|
git clone https://github.com/Fosowl/agenticSeek.git
|
||||||
@@ -52,73 +50,56 @@ cd agenticSeek
|
|||||||
mv .env.example .env
|
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
|
```sh
|
||||||
python3 -m venv agentic_seek_env
|
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||||
source agentic_seek_env/bin/activate
|
REDIS_BASE_URL="redis://redis:6379/0"
|
||||||
# On Windows: agentic_seek_env\Scripts\activate
|
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
|
```sh
|
||||||
./install.sh
|
docker info
|
||||||
```
|
```
|
||||||
|
If you see information about your Docker installation, it is running correctly.
|
||||||
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`
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
@@ -153,13 +134,12 @@ provider_server_address = 127.0.0.1:11434
|
|||||||
agent_name = Jarvis # name of your AI
|
agent_name = Jarvis # name of your AI
|
||||||
recover_last_session = True # whenever to recover the previous session
|
recover_last_session = True # whenever to recover the previous session
|
||||||
save_session = True # whenever to remember the current session
|
save_session = True # whenever to remember the current session
|
||||||
speak = True # text to speech
|
speak = False # text to speech
|
||||||
listen = False # Speech to text, only for CLI
|
listen = False # Speech to text, only for CLI, experimental
|
||||||
work_dir = /Users/mlg/Documents/workspace # The workspace for AgenticSeek.
|
|
||||||
jarvis_personality = False # Whenever to use a more "Jarvis" like personality (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
|
languages = en zh # The list of languages, Text to speech will default to the first language on the list
|
||||||
[BROWSER]
|
[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
|
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
|
## 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.
|
Set the desired provider in the `config.ini`. See below for a list of API providers.
|
||||||
|
|
||||||
```sh
|
```sh
|
||||||
@@ -212,9 +194,7 @@ Example: export `TOGETHER_API_KEY="xxxxx"`
|
|||||||
| togetherAI | No | Use together AI API (non-private) |
|
| togetherAI | No | Use together AI API (non-private) |
|
||||||
| google | No | Use google gemini 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 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.
|
||||||
|
|
||||||
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.
|
|
||||||
|
|
||||||
Next step: [Start services and run AgenticSeek](#Start-services-and-Run)
|
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
|
## 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:
|
Start required services. This will start all services from the docker-compose.yml, including:
|
||||||
- searxng
|
- searxng
|
||||||
- redis (required by searxng)
|
- redis (required by searxng)
|
||||||
- frontend
|
- 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
|
```sh
|
||||||
sudo ./start_services.sh # MacOS
|
sudo ./start_services.sh # MacOS
|
||||||
start ./start_services.cmd # Window
|
start ./start_services.cmd # Window
|
||||||
```
|
```
|
||||||
|
|
||||||
**Options 1:** Run with the CLI interface.
|
Then run : `python3 cli.py`
|
||||||
|
|
||||||
```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.
|
|
||||||
|
|
||||||
---
|
---
|
||||||
|
|
||||||
## Usage
|
## 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.
|
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
|
## 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.
|
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:
|
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
|
save_session = False
|
||||||
speak = False
|
speak = False
|
||||||
listen = False
|
listen = False
|
||||||
work_dir = /Users/mlg/Documents/ai_folder
|
|
||||||
jarvis_personality = False
|
jarvis_personality = False
|
||||||
languages = en zh
|
languages = en zh
|
||||||
[BROWSER]
|
[BROWSER]
|
||||||
@@ -426,8 +405,6 @@ stealth_mode = False
|
|||||||
|
|
||||||
- listen -> listen to voice input (True) or not (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.
|
- 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.
|
- languages -> The list of supported language, needed for the llm router to work properly, avoid putting too many or too similar languages.
|
||||||
|
|||||||
@@ -6,6 +6,19 @@ if "%1"=="full" (
|
|||||||
echo Starting partial deployment... (backend run on host), use "full" to run all services in containers
|
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
|
REM Stop all containers
|
||||||
echo Stopping containers...
|
echo Stopping containers...
|
||||||
docker stop $(docker ps -aq) >nul 2>&1
|
docker stop $(docker ps -aq) >nul 2>&1
|
||||||
|
|||||||
Reference in New Issue
Block a user