Merge pull request #403 from Fosowl/dev
Fix various ubuntu issues + CLI instructions
This commit is contained in:
+1
-1
@@ -10,7 +10,7 @@ RUN apt-get update -y && apt-get install -y \
|
||||
unzip \
|
||||
xvfb \
|
||||
libxss1 \
|
||||
libappindicator1 \
|
||||
#libappindicator1 \
|
||||
fonts-liberation \
|
||||
libnss3 \
|
||||
libatk1.0-0 \
|
||||
|
||||
@@ -57,7 +57,7 @@ mv .env.example .env
|
||||
### 2. Change the .env file content
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||
SEARXNG_BASE_URL="http://searxng:8080" # http://127.0.0.1:8080 if running on host
|
||||
REDIS_BASE_URL="redis://redis:6379/0"
|
||||
WORK_DIR="/Users/mlg/Documents/workspace_for_ai"
|
||||
OLLAMA_PORT="11434"
|
||||
@@ -74,7 +74,7 @@ ANTHROPIC_API_KEY='optional'
|
||||
|
||||
Update the `.env` file with your own values as needed:
|
||||
|
||||
- **SEARXNG_BASE_URL**: Leave unchanged
|
||||
- **SEARXNG_BASE_URL**: Leave unchanged unless running on host with CLI mode.
|
||||
- **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.
|
||||
@@ -277,6 +277,12 @@ To run with CLI interface you would have to install package on host:
|
||||
./install.bat # windows
|
||||
```
|
||||
|
||||
Then you must change the SEARXNG_BASE_URL in `config.ini` to:
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://localhost:8080"
|
||||
```
|
||||
|
||||
Start required services. This will start some services from the docker-compose.yml, including:
|
||||
- searxng
|
||||
- redis (required by searxng)
|
||||
@@ -287,6 +293,8 @@ Start required services. This will start some services from the docker-compose.y
|
||||
start start_services.cmd # Window
|
||||
```
|
||||
|
||||
Run: uv run: `uv run python -m ensurepip` to ensure uv has pip enabled.
|
||||
|
||||
Use the CLI: `uv run cli.py`
|
||||
|
||||
|
||||
@@ -615,6 +623,14 @@ raise ValueError("SearxNG base URL must be provided either as an argument or via
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.`
|
||||
```
|
||||
|
||||
This might arise if you are running the CLI mode with the wrong base url for searxng.
|
||||
|
||||
The SEARXNG_BASE_URL should be depending on whenever you run in docker or on host:
|
||||
|
||||
**Run on host**: `SEARXNG_BASE_URL="http://localhost:8080"`
|
||||
|
||||
**Run fully in docker (web interface)**: `SEARXNG_BASE_URL="http://searxng:8080"`
|
||||
|
||||
## FAQ
|
||||
|
||||
**Q: What hardware do I need?**
|
||||
|
||||
+351
-215
@@ -4,7 +4,7 @@
|
||||
<img align="center" src="./media/agentic_seek_logo.png" width="300" height="300" alt="Agentic Seek Logo">
|
||||
<p>
|
||||
|
||||
[English](./README.md) | 中文 | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md)
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md) | [Español](./README_ES.md)
|
||||
|
||||
*一个**100%本地运行的 Manus AI 替代品**,支持语音的 AI 助手,可自主浏览网页、编写代码、规划任务,所有数据仅保存在你的设备上。专为本地推理模型设计,完全在你的硬件上运行,确保隐私无忧,无需云端依赖。*
|
||||
|
||||
@@ -38,11 +38,15 @@ https://github.com/user-attachments/assets/b8ca60e9-7b3b-4533-840e-08f9ac426316
|
||||
|
||||
## 前置条件
|
||||
|
||||
请确保已安装 chrome driver、docker 和 python3.10。
|
||||
开始前,请确保已安装以下软件:
|
||||
|
||||
如遇 chrome driver 相关问题,请参见 **Chromedriver** 部分。
|
||||
* **Git:** 用于克隆仓库。[下载 Git](https://git-scm.com/downloads)
|
||||
* **Python 3.10.x:** 强烈推荐使用 Python 3.10.x 版本。使用其他版本可能导致依赖错误。[下载 Python 3.10](https://www.python.org/downloads/release/python-3100/)(选择 3.10.x 版本)。
|
||||
* **Docker Engine & Docker Compose:** 用于运行捆绑服务如 SearxNG。
|
||||
* 安装 Docker Desktop(包含 Docker Compose V2):[Windows](https://docs.docker.com/desktop/install/windows-install/) | [Mac](https://docs.docker.com/desktop/install/mac-install/) | [Linux](https://docs.docker.com/desktop/install/linux-install/)
|
||||
* 或者在 Linux 上分别安装 Docker Engine 和 Docker Compose:[Docker Engine](https://docs.docker.com/engine/install/) | [Docker Compose](https://docs.docker.com/compose/install/)(确保安装 Compose V2,例如 `sudo apt-get install docker-compose-plugin`)。
|
||||
|
||||
### 1. **克隆仓库并初始化**
|
||||
### 1. **克隆仓库并设置**
|
||||
|
||||
```sh
|
||||
git clone https://github.com/Fosowl/agenticSeek.git
|
||||
@@ -53,7 +57,7 @@ mv .env.example .env
|
||||
### 2. 修改 .env 文件内容
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||
SEARXNG_BASE_URL="http://searxng:8080" # 如果在主机上运行 CLI 模式,使用 http://127.0.0.1:8080
|
||||
REDIS_BASE_URL="redis://redis:6379/0"
|
||||
WORK_DIR="/Users/mlg/Documents/workspace_for_ai"
|
||||
OLLAMA_PORT="11434"
|
||||
@@ -67,195 +71,241 @@ GOOGLE_API_KEY='optional'
|
||||
ANTHROPIC_API_KEY='optional'
|
||||
```
|
||||
|
||||
**API Key 完全可选,若你选择本地运行 LLM(本项目主要目的),可留空,只要硬件足够。**
|
||||
|
||||
以下环境变量用于配置应用的连接和 API 密钥。
|
||||
|
||||
根据需要更新 `.env` 文件:
|
||||
|
||||
- **SEARXNG_BASE_URL**:保持不变
|
||||
- **REDIS_BASE_URL**:保持不变
|
||||
- **WORK_DIR**:本地工作目录路径,AgenticSeek 可读取和操作这些文件
|
||||
- **OLLAMA_PORT**:Ollama 服务端口
|
||||
- **LM_STUDIO_PORT**:LM Studio 服务端口
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**:自定义 LLM 服务端口
|
||||
- **SEARXNG_BASE_URL**: 除非在主机上运行 CLI 模式,否则保持不变。
|
||||
- **REDIS_BASE_URL**: 保持不变
|
||||
- **WORK_DIR**: 本地工作目录路径。AgenticSeek 可读取和操作这些文件。
|
||||
- **OLLAMA_PORT**: Ollama 服务端口号。
|
||||
- **LM_STUDIO_PORT**: LM Studio 服务端口号。
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: 任何额外自定义 LLM 服务的端口。
|
||||
|
||||
下方所有 API 密钥环境变量均为**可选**,仅在你打算使用外部 API 而非本地 LLM 时填写。
|
||||
**API 密钥对于选择本地运行 LLM 的用户完全可选,这也是本项目的主要目的。如果硬件足够,请留空。**
|
||||
|
||||
### 3. **启动 Docker**
|
||||
|
||||
确保已安装并运行 Docker。可通过以下命令启动:
|
||||
确保 Docker 已安装并在系统上运行。可以使用以下命令启动 Docker:
|
||||
|
||||
- **Linux/macOS:**
|
||||
- **Linux/macOS:**
|
||||
打开终端运行:
|
||||
```sh
|
||||
sudo systemctl start docker
|
||||
```
|
||||
或在应用菜单启动 Docker Desktop。
|
||||
或者如果已安装,从应用程序菜单启动 Docker Desktop。
|
||||
|
||||
- **Windows:**
|
||||
在开始菜单启动 Docker Desktop。
|
||||
|
||||
验证 Docker 是否运行:
|
||||
- **Windows:**
|
||||
从开始菜单启动 Docker Desktop。
|
||||
|
||||
可以通过执行以下命令验证 Docker 是否运行:
|
||||
```sh
|
||||
docker info
|
||||
```
|
||||
如能看到 Docker 信息,则运行正常。
|
||||
如果看到 Docker 安装信息,则表示运行正常。
|
||||
|
||||
请参阅下面的[本地提供商列表](#本地提供商列表)了解摘要。
|
||||
|
||||
下一步:[本地运行 AgenticSeek](#启动服务并运行)
|
||||
|
||||
*如果遇到问题,请参阅[故障排除](#故障排除)部分。*
|
||||
*如果硬件无法本地运行 LLM,请参阅[使用 API 运行设置](#使用-api-运行设置)。*
|
||||
*有关详细 `config.ini` 说明,请参阅[配置部分](#配置)。*
|
||||
|
||||
---
|
||||
|
||||
## 本地运行 LLM 的设置
|
||||
## 在您的机器上本地运行 LLM 的设置
|
||||
|
||||
**硬件要求:**
|
||||
|
||||
本地运行 LLM 需有足够硬件。至少需支持 Qwen/Deepseek 14B 的 GPU。详细模型/性能建议见 FAQ。
|
||||
要本地运行 LLM,您需要足够的硬件。至少需要能够运行 Magistral、Qwen 或 Deepseek 14B 的 GPU。有关详细的模型/性能建议,请参阅 FAQ。
|
||||
|
||||
**启动本地 provider**
|
||||
**设置您的本地提供商**
|
||||
|
||||
以 ollama 为例,启动本地 provider:
|
||||
启动您的本地提供商,例如使用 ollama:
|
||||
|
||||
```sh
|
||||
ollama serve
|
||||
```
|
||||
|
||||
下方有本地支持的 provider 列表。
|
||||
请参阅下面的本地支持提供商列表。
|
||||
|
||||
**修改 config.ini**
|
||||
**更新 config.ini**
|
||||
|
||||
将 config.ini 文件中的 provider_name 设置为支持的 provider,provider_model 设置为 provider 支持的 LLM。推荐推理模型如 *Qwen* 或 *Deepseek*。
|
||||
更改 config.ini 文件,将 provider_name 设置为支持的提供商,provider_model 设置为您的提供商支持的 LLM。我们推荐推理模型,如 *Magistral* 或 *Deepseek*。
|
||||
|
||||
详细硬件要求见 README 末尾 FAQ。
|
||||
有关所需硬件,请参阅 README 末尾的 **FAQ**。
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
is_local = True # 是否本地运行
|
||||
provider_name = ollama # 或 lm-studio、openai 等
|
||||
provider_model = deepseek-r1:14b # 选择适合硬件的模型
|
||||
is_local = True # 无论您是本地运行还是使用远程提供商。
|
||||
provider_name = ollama # 或 lm-studio、openai 等。
|
||||
provider_model = deepseek-r1:14b # 选择适合您硬件的模型
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
agent_name = Jarvis # AI 名称
|
||||
recover_last_session = True # 是否恢复上次会话
|
||||
save_session = True # 是否保存当前会话
|
||||
speak = False # 语音输出
|
||||
listen = False # 语音输入,仅 CLI,实验性
|
||||
jarvis_personality = False # 是否使用 Jarvis 风格(实验性)
|
||||
languages = en zh # 语言列表,语音默认第一个
|
||||
agent_name = Jarvis # 您的 AI 名称
|
||||
recover_last_session = True # 是否恢复上一个会话
|
||||
save_session = True # 是否记住当前会话
|
||||
speak = False # 文本转语音
|
||||
listen = False # 语音转文本,仅限 CLI,实验性
|
||||
jarvis_personality = False # 是否使用更"Jarvis"风格的性格(实验性)
|
||||
languages = en zh # 语言列表,文本转语音将默认使用列表中的第一种语言
|
||||
[BROWSER]
|
||||
headless_browser = True # 除非 CLI,否则保持不变
|
||||
stealth_mode = True # 使用 undetected selenium 降低被检测概率
|
||||
headless_browser = True # 除非在主机上使用 CLI,否则保持不变。
|
||||
stealth_mode = True # 使用不可检测的 selenium 减少浏览器检测
|
||||
```
|
||||
|
||||
**警告:**
|
||||
**警告**:
|
||||
|
||||
- `config.ini` 不支持注释。不要直接复制示例配置,否则注释会导致错误。请手动修改 config.ini,去除注释。
|
||||
- `config.ini` 文件格式不支持注释。
|
||||
不要直接复制粘贴示例配置,因为注释会导致错误。相反,手动修改 `config.ini` 文件,使用您所需的设置,排除任何注释。
|
||||
|
||||
- 若用 LM-studio 运行 LLM,provider_name 不要设为 `openai`,应设为 `lm-studio`。
|
||||
- 如果使用 LM-studio 运行 LLM,请*不要*将 provider_name 设置为 `openai`。将其设置为 `lm-studio`。
|
||||
|
||||
- 某些 provider(如 lm-studio)要求 IP 前加 `http://`,如 `http://127.0.0.1:1234`
|
||||
- 某些提供商(例如:lm-studio)要求您在 IP 前加上 `http://`。例如 `http://127.0.0.1:1234`
|
||||
|
||||
**本地 provider 列表**
|
||||
**本地提供商列表**
|
||||
|
||||
| Provider | 本地? | 说明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| ollama | 是 | 使用 ollama 本地运行 LLM |
|
||||
| lm-studio | 是 | 使用 LM studio 本地运行 LLM(provider_name 设为 lm-studio)|
|
||||
| openai | 是 | 使用 openai 兼容 API(如 llama.cpp server) |
|
||||
| 提供商 | 本地? | 描述 |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | 是 | 使用 ollama 作为 LLM 提供商轻松本地运行 LLM |
|
||||
| lm-studio | 是 | 使用 LM studio 本地运行 LLM(将 `provider_name` 设置为 `lm-studio`)|
|
||||
| openai | 是 | 使用 openai 兼容 API(例如:llama.cpp 服务器) |
|
||||
|
||||
下一步:[启动服务并运行 AgenticSeek](#Start-services-and-Run)
|
||||
下一步:[启动服务并运行 AgenticSeek](#启动服务并运行)
|
||||
|
||||
*如遇问题见**已知问题**部分*
|
||||
|
||||
*硬件无法本地运行 deepseek 时见**API 运行**部分*
|
||||
|
||||
*详细配置说明见**Config**部分*
|
||||
|
||||
---
|
||||
*如果遇到问题,请参阅[故障排除](#故障排除)部分。*
|
||||
*如果硬件无法本地运行 LLM,请参阅[使用 API 运行设置](#使用-api-运行设置)。*
|
||||
*有关详细 `config.ini` 说明,请参阅[配置部分](#配置)。*
|
||||
|
||||
## 使用 API 运行设置
|
||||
|
||||
**API 运行为可选,见上方本地运行方法。**
|
||||
此设置使用外部、基于云的 LLM 提供商。您需要从所选服务获取 API 密钥。
|
||||
|
||||
在 `config.ini` 设置所需 provider。API provider 列表如下。
|
||||
**1. 选择 API 提供商并获取 API 密钥:**
|
||||
|
||||
请参阅下面的[API 提供商列表](#api-提供商列表)。访问他们的网站注册并获取 API 密钥。
|
||||
|
||||
**2. 将您的 API 密钥设置为环境变量:**
|
||||
|
||||
* **Linux/macOS:**
|
||||
打开终端并使用 `export` 命令。最好将其添加到 shell 的配置文件中(例如 `~/.bashrc`、`~/.zshrc`)以保持持久性。
|
||||
```sh
|
||||
export PROVIDER_API_KEY="your_api_key_here"
|
||||
# 将 PROVIDER_API_KEY 替换为特定的变量名,例如 OPENAI_API_KEY、GOOGLE_API_KEY
|
||||
```
|
||||
TogetherAI 示例:
|
||||
```sh
|
||||
export TOGETHER_API_KEY="xxxxxxxxxxxxxxxxxxxxxx"
|
||||
```
|
||||
* **Windows:**
|
||||
* **命令提示符(当前会话临时):**
|
||||
```cmd
|
||||
set PROVIDER_API_KEY=your_api_key_here
|
||||
```
|
||||
* **PowerShell(当前会话临时):**
|
||||
```powershell
|
||||
$env:PROVIDER_API_KEY="your_api_key_here"
|
||||
```
|
||||
* **永久性:** 在 Windows 搜索栏中搜索"环境变量",点击"编辑系统环境变量",然后点击"环境变量..."按钮。添加一个新的用户变量,使用适当的名称(例如 `OPENAI_API_KEY`)和您的密钥作为值。
|
||||
|
||||
*(有关更多详细信息,请参阅 FAQ:[如何设置 API 密钥?](#如何设置-api-密钥))。*
|
||||
|
||||
|
||||
**3. 更新 `config.ini`:**
|
||||
```ini
|
||||
[MAIN]
|
||||
is_local = False
|
||||
provider_name = google
|
||||
provider_model = gemini-2.0-flash
|
||||
provider_server_address = 127.0.0.1:5000 # 无关紧要
|
||||
provider_name = openai # 或 google、deepseek、togetherAI、huggingface
|
||||
provider_model = gpt-3.5-turbo # 或 gemini-1.5-flash、deepseek-chat、mistralai/Mixtral-8x7B-Instruct-v0.1 等。
|
||||
provider_server_address = # 当 is_local = False 时,对于大多数 API 通常被忽略或可以留空
|
||||
# ... 其他设置 ...
|
||||
```
|
||||
警告:确保 config 中无多余空格。
|
||||
*警告:* 确保 `config.ini` 值中没有尾随空格。
|
||||
|
||||
导出 API key:`export <<PROVIDER>>_API_KEY="xxx"`
|
||||
**API 提供商列表**
|
||||
|
||||
示例:`export TOGETHER_API_KEY="xxxxx"`
|
||||
| 提供商 | `provider_name` | 本地? | 描述 | API 密钥链接(示例) |
|
||||
|--------------|-----------------|--------|---------------------------------------------------|---------------------------------------------|
|
||||
| OpenAI | `openai` | 否 | 通过 OpenAI 的 API 使用 ChatGPT 模型。 | [platform.openai.com/signup](https://platform.openai.com/signup) |
|
||||
| Google Gemini| `google` | 否 | 通过 Google AI Studio 使用 Google Gemini 模型。 | [aistudio.google.com/keys](https://aistudio.google.com/keys) |
|
||||
| Deepseek | `deepseek` | 否 | 通过他们的 API 使用 Deepseek 模型。 | [platform.deepseek.com](https://platform.deepseek.com) |
|
||||
| Hugging Face | `huggingface` | 否 | 使用 Hugging Face Inference API 中的模型。 | [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) |
|
||||
| TogetherAI | `togetherAI` | 否 | 通过 TogetherAI API 使用各种开源模型。| [api.together.ai/settings/api-keys](https://api.together.ai/settings/api-keys) |
|
||||
|
||||
**API provider 列表**
|
||||
*注意:*
|
||||
* 我们不建议将 `gpt-4o` 或其他 OpenAI 模型用于复杂的网页浏览和任务规划,因为当前的提示优化针对 Deepseek 等模型。
|
||||
* 编码/bash 任务可能会遇到 Gemini 的问题,因为它可能不严格遵循针对 Deepseek 优化的格式化提示。
|
||||
* 当 `is_local = False` 时,`config.ini` 中的 `provider_server_address` 通常不使用,因为 API 端点通常在相应提供商的库中硬编码。
|
||||
|
||||
| Provider | 本地? | 说明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| openai | 视情况 | 使用 ChatGPT API |
|
||||
| deepseek | 否 | Deepseek API(非私有) |
|
||||
| huggingface| 否 | Hugging-Face API(非私有) |
|
||||
| togetherAI | 否 | 使用 together AI API(非私有) |
|
||||
| google | 否 | 使用 google gemini API(非私有) |
|
||||
下一步:[启动服务并运行 AgenticSeek](#启动服务并运行)
|
||||
|
||||
注意:使用 gemini 时代码/bash 可能失败,模型对格式提示不敏感,优化针对 deepseek r1。gpt-4o 在本项目 prompt 下表现也较差。
|
||||
*如果遇到问题,请参阅**已知问题**部分*
|
||||
|
||||
下一步:[启动服务并运行 AgenticSeek](#Start-services-and-Run)
|
||||
|
||||
*如遇问题见**已知问题**部分*
|
||||
|
||||
*详细配置说明见**Config**部分*
|
||||
*有关详细配置文件说明,请参阅**配置**部分。*
|
||||
|
||||
---
|
||||
|
||||
## 启动服务并运行
|
||||
|
||||
启动所需服务。此操作会启动 docker-compose.yml 中的所有服务,包括:
|
||||
默认情况下,AgenticSeek 完全在 Docker 中运行。
|
||||
|
||||
**选项 1:** 在 Docker 中运行,使用 Web 界面:
|
||||
|
||||
启动所需服务。这将启动 docker-compose.yml 中的所有服务,包括:
|
||||
- searxng
|
||||
- redis(searxng 依赖)
|
||||
- redis(searxng 所需)
|
||||
- frontend
|
||||
- backend(如用 `full`)
|
||||
- backend(如果使用 Web 界面时使用 `full`)
|
||||
|
||||
```sh
|
||||
./start_services.sh full # MacOS
|
||||
start start_services.cmd full # Windows
|
||||
```
|
||||
|
||||
**警告:** 此步骤会下载并加载所有 Docker 镜像,可能需 30 分钟。启动后请等待 backend 服务完全运行(日志中出现 backend: <info>),再发送消息。backend 启动比其他服务慢。
|
||||
**警告:** 此步骤将下载并加载所有 Docker 镜像,可能需要长达 30 分钟。启动服务后,请等待后端服务完全运行(您应该在日志中看到 **backend: "GET /health HTTP/1.1" 200 OK**)后再发送任何消息。首次运行时,后端服务可能需要 5 分钟才能启动。
|
||||
|
||||
访问 `http://localhost:3000/`,即可看到网页界面。
|
||||
转到 `http://localhost:3000/`,您应该会看到 Web 界面。
|
||||
|
||||
**可选:使用 CLI 界面运行:**
|
||||
*服务启动故障排除:* 如果这些脚本失败,请确保 Docker Engine 正在运行并且 Docker Compose(V2,`docker compose`)已正确安装。检查终端输出中的错误消息。请参阅 [FAQ:帮助!运行 AgenticSeek 或其脚本时出现错误。](#faq-故障排除)
|
||||
|
||||
如需 CLI 界面,需在主机安装依赖:
|
||||
**选项 2:** CLI 模式:
|
||||
|
||||
要使用 CLI 界面运行,您必须在主机上安装软件包:
|
||||
|
||||
```sh
|
||||
./install.sh
|
||||
./install.bat # windows
|
||||
```
|
||||
|
||||
启动服务:
|
||||
然后您必须将 `config.ini` 中的 SEARXNG_BASE_URL 更改为:
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://localhost:8080"
|
||||
```
|
||||
|
||||
启动所需服务。这将启动 docker-compose.yml 中的一些服务,包括:
|
||||
- searxng
|
||||
- redis(searxng 所需)
|
||||
- frontend
|
||||
|
||||
```sh
|
||||
./start_services.sh # MacOS
|
||||
start start_services.cmd # Windows
|
||||
```
|
||||
|
||||
然后运行:`uv run cli.py`
|
||||
运行:uv run: `uv run python -m ensurepip` 以确保 uv 已启用 pip。
|
||||
|
||||
使用 CLI:`uv run cli.py`
|
||||
|
||||
---
|
||||
|
||||
## 使用方法
|
||||
|
||||
确保服务已通过 `./start_services.sh full` 启动,并访问 `localhost:3000` 使用网页界面。
|
||||
确保服务已通过 `./start_services.sh full` 启动并运行,然后转到 `localhost:3000` 使用 Web 界面。
|
||||
|
||||
CLI 模式下可通过设置 `listen = True` 启用语音转文本。
|
||||
您也可以通过设置 `listen = True` 来使用语音转文本。仅限 CLI 模式。
|
||||
|
||||
退出时,只需说/输入 `goodbye`。
|
||||
要退出,只需说/输入 `goodbye`。
|
||||
|
||||
以下为示例用法:
|
||||
以下是一些使用示例:
|
||||
|
||||
> *用 python 写一个贪吃蛇游戏!*
|
||||
|
||||
@@ -271,60 +321,60 @@ CLI 模式下可通过设置 `listen = True` 启用语音转文本。
|
||||
|
||||
> *周五,搜索免费股票价格 API,用 supersuper7434567@gmail.com 注册,然后写 Python 脚本每日获取特斯拉股价,结果保存到 stock_prices.csv*
|
||||
|
||||
*表单填写功能仍为实验性,可能失败。*
|
||||
*请注意,表单填写功能仍为实验性,可能失败。*
|
||||
|
||||
输入查询后,AgenticSeek 会自动分配最佳代理执行任务。
|
||||
输入查询后,AgenticSeek 将分配最佳代理执行任务。
|
||||
|
||||
由于目前为早期原型,代理路由系统可能无法总是正确分配代理。
|
||||
由于这是早期原型,代理路由系统可能无法总是根据您的查询分配正确的代理。
|
||||
|
||||
因此,建议明确表达需求及 AI 执行方式。例如需网页搜索时,不要说:
|
||||
因此,您应该非常明确地表达您想要什么以及 AI 可能如何进行,例如如果您希望它进行网页搜索,不要说:
|
||||
|
||||
`你知道哪些适合独自旅行的国家吗?`
|
||||
|
||||
而应说:
|
||||
|
||||
`请进行网页搜索,找出最适合独自旅行的国家`
|
||||
`进行网页搜索,找出最适合独自旅行的国家`
|
||||
|
||||
---
|
||||
|
||||
## **在自有服务器运行 LLM 的设置**
|
||||
## **在自己的服务器上运行 LLM 的设置**
|
||||
|
||||
如有高性能电脑或服务器,可用自定义 llm server 远程运行 LLM。
|
||||
如果您有功能强大的计算机或可以使用的服务器,但想从笔记本电脑使用它,您可以选择使用我们的自定义 llm 服务器在远程服务器上运行 LLM。
|
||||
|
||||
在运行 AI 模型的“服务器”上获取 IP 地址:
|
||||
在将运行 AI 模型的"服务器"上,获取 IP 地址
|
||||
|
||||
```sh
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # 本地 IP
|
||||
curl https://ipinfo.io/ip # 公网 IP
|
||||
curl https://ipinfo.io/ip # 公共 IP
|
||||
```
|
||||
|
||||
注:Windows/macOS 可用 ipconfig 或 ifconfig 查询 IP。
|
||||
注意:对于 Windows 或 macOS,分别使用 ipconfig 或 ifconfig 查找 IP 地址。
|
||||
|
||||
克隆仓库并进入 `server/` 文件夹:
|
||||
克隆仓库并进入 `server/` 文件夹。
|
||||
|
||||
```sh
|
||||
git clone --depth 1 https://github.com/Fosowl/agenticSeek.git
|
||||
cd agenticSeek/llm_server/
|
||||
```
|
||||
|
||||
安装服务器依赖:
|
||||
安装服务器特定要求:
|
||||
|
||||
```sh
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
运行服务器脚本:
|
||||
运行服务器脚本。
|
||||
|
||||
```sh
|
||||
python3 app.py --provider ollama --port 3333
|
||||
```
|
||||
|
||||
可选择 `ollama` 或 `llamacpp` 作为 LLM 服务。
|
||||
您可以选择使用 `ollama` 和 `llamacpp` 作为 LLM 服务。
|
||||
|
||||
在你的个人电脑上:
|
||||
现在在您的个人计算机上:
|
||||
|
||||
修改 `config.ini`,将 `provider_name` 设为 `server`,`provider_model` 设为 `deepseek-r1:xxb`。
|
||||
`provider_server_address` 设为运行模型机器的 IP。
|
||||
更改 `config.ini` 文件,将 `provider_name` 设置为 `server`,`provider_model` 设置为 `deepseek-r1:xxb`。
|
||||
将 `provider_server_address` 设置为将运行模型的机器的 IP 地址。
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
@@ -334,40 +384,40 @@ provider_model = deepseek-r1:70b
|
||||
provider_server_address = http://x.x.x.x:3333
|
||||
```
|
||||
|
||||
下一步:[启动服务并运行 AgenticSeek](#Start-services-and-Run)
|
||||
下一步:[启动服务并运行 AgenticSeek](#启动服务并运行)
|
||||
|
||||
---
|
||||
|
||||
## 语音转文本
|
||||
|
||||
警告:目前仅 CLI 模式支持语音转文本。
|
||||
警告:目前语音转文本仅适用于 CLI 模式。
|
||||
|
||||
目前仅支持英文语音转文本。
|
||||
请注意,目前语音转文本仅适用于英语。
|
||||
|
||||
默认关闭语音转文本。启用方法:在 config.ini 设置 listen 为 True:
|
||||
语音转文本功能默认禁用。要启用它,请在 config.ini 文件中将 listen 选项设置为 True:
|
||||
|
||||
```
|
||||
listen = True
|
||||
```
|
||||
|
||||
启用后,语音转文本会监听触发词(即 agent 名称),再开始处理输入。可通过修改 *config.ini* 的 `agent_name` 自定义:
|
||||
启用后,语音转文本功能会监听触发关键字,即代理的名称,然后开始处理您的输入。您可以通过更新 *config.ini* 文件中的 `agent_name` 值来自定义代理的名称:
|
||||
|
||||
```
|
||||
agent_name = Friday
|
||||
```
|
||||
|
||||
建议使用常见英文名如 "John" 或 "Emma" 作为 agent 名称。
|
||||
为了获得最佳识别效果,我们建议使用常见的英文名称,如 "John" 或 "Emma" 作为代理名称。
|
||||
|
||||
看到转录开始出现后,呼叫 agent 名称唤醒(如“Friday”)。
|
||||
一旦您看到转录开始出现,请大声说出代理的名称以唤醒它(例如,"Friday")。
|
||||
|
||||
清晰说出你的请求。
|
||||
清晰地说出您的查询。
|
||||
|
||||
以确认短语结尾,表示系统可继续处理。例如:
|
||||
用确认短语结束您的请求,以指示系统继续。确认短语的示例包括:
|
||||
```
|
||||
"do it", "go ahead", "execute", "run", "start", "thanks", "would ya", "please", "okay?", "proceed", "continue", "go on", "do that", "go it", "do you understand?"
|
||||
```
|
||||
|
||||
## 配置说明
|
||||
## 配置
|
||||
|
||||
配置示例:
|
||||
```
|
||||
@@ -375,162 +425,249 @@ agent_name = Friday
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
provider_server_address = http://127.0.0.1:11434 # Ollama 示例;LM-Studio 使用 http://127.0.0.1:1234
|
||||
agent_name = Friday
|
||||
recover_last_session = False
|
||||
save_session = False
|
||||
speak = False
|
||||
listen = False
|
||||
|
||||
jarvis_personality = False
|
||||
languages = en zh
|
||||
languages = en zh # TTS 和潜在路由的语言列表。
|
||||
[BROWSER]
|
||||
headless_browser = False
|
||||
stealth_mode = False
|
||||
```
|
||||
|
||||
**说明:**
|
||||
**`config.ini` 设置说明**:
|
||||
|
||||
- is_local -> 本地运行(True)或远程服务器(False)
|
||||
* **`[MAIN]` 部分:**
|
||||
* `is_local`: 如果使用本地 LLM 提供商(Ollama、LM-Studio、本地 OpenAI 兼容服务器)或自托管服务器选项,则为 `True`。如果使用基于云的 API(OpenAI、Google 等),则为 `False`。
|
||||
* `provider_name`: 指定 LLM 提供商。
|
||||
* 本地选项:`ollama`、`lm-studio`、`openai`(用于本地 OpenAI 兼容服务器)、`server`(用于自托管服务器设置)。
|
||||
* API 选项:`openai`、`google`、`deepseek`、`huggingface`、`togetherAI`。
|
||||
* `provider_model`: 所选提供商的特定模型名称或 ID(例如,Ollama 的 `deepseekcoder:6.7b`,OpenAI API 的 `gpt-3.5-turbo`,TogetherAI 的 `mistralai/Mixtral-8x7B-Instruct-v0.1`)。
|
||||
* `provider_server_address`: 您的 LLM 提供商的地址。
|
||||
* 对于本地提供商:例如,Ollama 的 `http://127.0.0.1:11434`,LM-Studio 的 `http://127.0.0.1:1234`。
|
||||
* 对于 `server` 提供商类型:您的自托管 LLM 服务器的地址(例如 `http://your_server_ip:3333`)。
|
||||
* 对于云 API(`is_local = False`):这通常被忽略或可以留空,因为 API 端点通常由客户端库处理。
|
||||
* `agent_name`: AI 助手的名称(例如 Friday)。如果启用,用作语音转文本的触发词。
|
||||
* `recover_last_session`: `True` 尝试恢复上一个会话的状态,`False` 重新开始。
|
||||
* `save_session`: `True` 保存当前会话的状态以供潜在恢复,`False` 否则。
|
||||
* `speak`: `True` 启用文本转语音语音输出,`False` 禁用。
|
||||
* `listen`: `True` 启用语音转文本语音输入(仅限 CLI 模式),`False` 禁用。
|
||||
* `work_dir`: **关键:** AgenticSeek 将读取/写入文件的目录。**确保此路径在您的系统上有效且可访问。**
|
||||
* `jarvis_personality`: `True` 使用更"Jarvis-like"的系统提示(实验性),`False` 使用标准提示。
|
||||
* `languages`: 逗号分隔的语言列表(例如 `en, zh, fr`)。用于 TTS 语音选择(默认为第一个),并可以协助 LLM 路由器。为避免路由器效率低下,避免使用过多或非常相似的语言。
|
||||
* **`[BROWSER]` 部分:**
|
||||
* `headless_browser`: `True` 在没有可见窗口的情况下运行自动化浏览器(推荐用于 Web 界面或非交互式使用)。`False` 显示浏览器窗口(对于 CLI 模式或调试有用)。
|
||||
* `stealth_mode`: `True` 启用使浏览器自动化更难检测的措施。可能需要手动安装浏览器扩展,如 anticaptcha。
|
||||
|
||||
- provider_name -> 使用的 provider(如:`ollama`、`server`、`lm-studio`、`deepseek-api`)
|
||||
本节总结了支持的 LLM 提供商类型。在 `config.ini` 中配置它们。
|
||||
|
||||
- provider_model -> 使用的模型,如 deepseek-r1:32b
|
||||
**本地提供商(在您自己的硬件上运行):**
|
||||
|
||||
- provider_server_address -> 服务器地址,如 127.0.0.1:11434(本地),API 可随意
|
||||
| config.ini 中的提供商名称 | `is_local` | 描述 | 设置部分 |
|
||||
|-------------------------------|------------|-----------------------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| `ollama` | `True` | 使用 Ollama 轻松提供本地 LLM。 | [在您的机器上本地运行 LLM 的设置](#在您的机器上本地运行-llm-的设置) |
|
||||
| `lm-studio` | `True` | 使用 LM-Studio 提供本地 LLM。 | [在您的机器上本地运行 LLM 的设置](#在您的机器上本地运行-llm-的设置) |
|
||||
| `openai`(用于本地服务器) | `True` | 连接到暴露 OpenAI 兼容 API 的本地服务器(例如,llama.cpp)。 | [在您的机器上本地运行 LLM 的设置](#在您的机器上本地运行-llm-的设置) |
|
||||
| `server` | `False` | 连接到在另一台机器上运行的 AgenticSeek 自托管 LLM 服务器。 | [在自己的服务器上运行 LLM 的设置](#在自己的服务器上运行-llm-的设置) |
|
||||
|
||||
- agent_name -> 代理名称,如 Friday,语音唤醒词
|
||||
**API 提供商(基于云):**
|
||||
|
||||
- recover_last_session -> 是否恢复上次会话(True/False)
|
||||
| config.ini 中的提供商名称 | `is_local` | 描述 | 设置部分 |
|
||||
|-------------------------------|------------|--------------------------------------------------|-----------------------------------------------------|
|
||||
| `openai` | `False` | 使用 OpenAI 的官方 API(例如,GPT-3.5、GPT-4)。 | [使用 API 运行设置](#使用-api-运行设置) |
|
||||
| `google` | `False` | 通过 API 使用 Google 的 Gemini 模型。 | [使用 API 运行设置](#使用-api-运行设置) |
|
||||
| `deepseek` | `False` | 使用 Deepseek 的官方 API。 | [使用 API 运行设置](#使用-api-运行设置) |
|
||||
| `huggingface` | `False` | 使用 Hugging Face Inference API。 | [使用 API 运行设置](#使用-api-运行设置) |
|
||||
| `togetherAI` | `False` | 使用 TogetherAI 的 API 获取各种开放模型。 | [使用 API 运行设置](#使用-api-运行设置) |
|
||||
|
||||
- save_session -> 是否保存会话数据(True/False)
|
||||
---
|
||||
## 故障排除
|
||||
|
||||
- speak -> 是否启用语音输出(True/False)
|
||||
|
||||
- listen -> 是否启用语音输入(True/False)
|
||||
|
||||
- jarvis_personality -> 是否使用 JARVIS 风格(True/False),仅更换 prompt
|
||||
|
||||
- languages -> 支持语言列表,供 LLM 路由使用,建议不要太多或太相似
|
||||
|
||||
- headless_browser -> 是否无头浏览器(True/False)
|
||||
|
||||
- stealth_mode -> 是否降低被检测概率,需手动安装 anticaptcha 扩展
|
||||
|
||||
- languages -> 支持语言列表,代理路由系统需用,列表越长下载模型越多
|
||||
|
||||
## Provider 列表
|
||||
|
||||
下表为可用 provider:
|
||||
|
||||
| Provider | 本地? | 说明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| ollama | 是 | 使用 ollama 本地运行 LLM |
|
||||
| server | 是 | 在其他机器托管模型,本机调用 |
|
||||
| lm-studio | 是 | 使用 LM studio 本地运行 LLM(provider_name 设为 lm-studio)|
|
||||
| openai | 视情况 | 使用 ChatGPT API(非私有)或 openai 兼容 API |
|
||||
| deepseek-api | 否 | Deepseek API(非私有) |
|
||||
| huggingface| 否 | Hugging-Face API(非私有) |
|
||||
| togetherAI | 否 | 使用 together AI API(非私有) |
|
||||
| google | 否 | 使用 google gemini API(非私有) |
|
||||
|
||||
选择 provider 时修改 config.ini:
|
||||
|
||||
```
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:5000
|
||||
```
|
||||
`is_local`:本地 LLM 设为 True,否则 False。
|
||||
|
||||
`provider_name`:选择 provider 名称,见上表。
|
||||
|
||||
`provider_model`:设置代理使用的模型。
|
||||
|
||||
`provider_server_address`:如非 server provider,可随意。
|
||||
如果遇到问题,本节提供指导。
|
||||
|
||||
# 已知问题
|
||||
|
||||
## Chromedriver 问题
|
||||
## ChromeDriver 问题
|
||||
|
||||
**已知错误 #1:** *chromedriver 不匹配*
|
||||
**错误示例:** `SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XXX`
|
||||
|
||||
### 根本原因
|
||||
ChromeDriver 版本不兼容发生在:
|
||||
1. 您安装的 ChromeDriver 版本与 Chrome 浏览器版本不匹配
|
||||
2. 在 Docker 环境中,`undetected_chromedriver` 可能会下载自己的 ChromeDriver 版本,绕过挂载的二进制文件
|
||||
|
||||
### 解决步骤
|
||||
|
||||
#### 1. 检查您的 Chrome 版本
|
||||
打开 Google Chrome → `设置 > 关于 Chrome` 查找您的版本(例如,"版本 134.0.6998.88")
|
||||
|
||||
#### 2. 下载匹配的 ChromeDriver
|
||||
|
||||
**对于 Chrome 115 及更新版本:** 使用 [Chrome for Testing API](https://googlechromelabs.github.io/chrome-for-testing/)
|
||||
- 访问 Chrome for Testing 可用性仪表板
|
||||
- 找到您的 Chrome 版本或最接近的可用匹配
|
||||
- 为您的操作系统下载 ChromeDriver(Docker 环境使用 Linux64)
|
||||
|
||||
**对于旧版 Chrome:** 使用 [旧版 ChromeDriver 下载](https://chromedriver.chromium.org/downloads)
|
||||
|
||||

|
||||
|
||||
#### 3. 安装 ChromeDriver(选择一种方法)
|
||||
|
||||
**方法 A:项目根目录(Docker 推荐)**
|
||||
```bash
|
||||
# 将下载的 chromedriver 二进制文件放在项目根目录
|
||||
cp path/to/downloaded/chromedriver ./chromedriver
|
||||
chmod +x ./chromedriver # 在 Linux/macOS 上使其可执行
|
||||
```
|
||||
|
||||
**方法 B:系统 PATH**
|
||||
```bash
|
||||
# Linux/macOS
|
||||
sudo mv chromedriver /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/chromedriver
|
||||
|
||||
# Windows:将 chromedriver.exe 放在 PATH 中的文件夹中
|
||||
```
|
||||
|
||||
#### 4. 验证安装
|
||||
```bash
|
||||
# 测试 ChromeDriver 版本
|
||||
./chromedriver --version
|
||||
# 或者在 PATH 中:
|
||||
chromedriver --version
|
||||
```
|
||||
|
||||
### Docker 特定说明
|
||||
|
||||
⚠️ **Docker 用户重要:**
|
||||
- Docker 卷挂载方法可能不适用于隐身模式(`undetected_chromedriver`)
|
||||
- **解决方案:** 将 ChromeDriver 放在项目根目录中作为 `./chromedriver`
|
||||
- 应用程序将自动检测并使用此二进制文件
|
||||
- 您应该在日志中看到:`"Using ChromeDriver from project root: ./chromedriver"`
|
||||
|
||||
### 故障排除提示
|
||||
|
||||
1. **仍然遇到版本不匹配?**
|
||||
- 验证 ChromeDriver 是否可执行:`ls -la ./chromedriver`
|
||||
- 检查 ChromeDriver 版本:`./chromedriver --version`
|
||||
- 确保它与您的 Chrome 浏览器版本匹配
|
||||
|
||||
2. **Docker 容器问题?**
|
||||
- 检查后端日志:`docker logs backend`
|
||||
- 查找消息:`"Using ChromeDriver from project root"`
|
||||
- 如果未找到,请验证文件是否存在且可执行
|
||||
|
||||
3. **Chrome for Testing 版本**
|
||||
- 尽可能使用完全匹配的版本
|
||||
- 对于版本 134.0.6998.88,使用 ChromeDriver 134.0.6998.165(最接近的可用版本)
|
||||
- 主要版本号必须匹配(134 = 134)
|
||||
|
||||
### 版本兼容性矩阵
|
||||
|
||||
| Chrome 版本 | ChromeDriver 版本 | 状态 |
|
||||
|----------------|---------------------|---------|
|
||||
| 134.0.6998.x | 134.0.6998.165 | ✅ 可用 |
|
||||
| 133.0.6943.x | 133.0.6943.141 | ✅ 可用 |
|
||||
| 132.0.6834.x | 132.0.6834.159 | ✅ 可用 |
|
||||
|
||||
*有关最新兼容性,请查看 [Chrome for Testing 仪表板](https://googlechromelabs.github.io/chrome-for-testing/)*
|
||||
|
||||
`Exception: Failed to initialize browser: Message: session not created: This version of ChromeDriver only supports Chrome version 113
|
||||
Current browser version is 134.0.6998.89 with binary path`
|
||||
|
||||
出现此问题是浏览器与 chromedriver 版本不匹配。
|
||||
如果您的浏览器和 chromedriver 版本不匹配,会发生这种情况。
|
||||
|
||||
需下载最新版本:
|
||||
您需要导航到下载最新版本:
|
||||
|
||||
https://developer.chrome.com/docs/chromedriver/downloads
|
||||
|
||||
如用 Chrome 115 及以上,访问:
|
||||
如果您使用 Chrome 版本 115 或更新版本,请转到:
|
||||
|
||||
https://googlechromelabs.github.io/chrome-for-testing/
|
||||
|
||||
下载与你操作系统匹配的 chromedriver。
|
||||
并下载与您的操作系统匹配的 chromedriver 版本。
|
||||
|
||||

|
||||
|
||||
如本节不全请提交 issue。
|
||||
如果此部分不完整,请提出问题。
|
||||
|
||||
## 连接适配器问题
|
||||
|
||||
```
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:11434/v1/chat/completions'
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:1234/v1/chat/completions'`(注意:端口可能不同)
|
||||
```
|
||||
|
||||
请确保 provider IP 前加 `http://`:
|
||||
* **原因:** `config.ini` 中 `lm-studio`(或其他类似的本地 OpenAI 兼容服务器)的 `provider_server_address` 缺少 `http://` 前缀或指向错误的端口。
|
||||
* **解决方案:**
|
||||
* 确保地址包含 `http://`。LM-Studio 通常默认为 `http://127.0.0.1:1234`。
|
||||
* 正确的 `config.ini`:`provider_server_address = http://127.0.0.1:1234`(或您的实际 LM-Studio 服务器端口)。
|
||||
|
||||
`provider_server_address = http://127.0.0.1:11434`
|
||||
|
||||
## SearxNG base URL 必须提供
|
||||
## SearxNG 基本 URL 未提供
|
||||
|
||||
```
|
||||
raise ValueError("SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.")
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.`
|
||||
```
|
||||
|
||||
可能未将 `.env.example` 重命名为 `.env`?也可导出 SEARXNG_BASE_URL:
|
||||
如果您使用错误的 searxng 基本 URL 运行 CLI 模式,可能会出现这种情况。
|
||||
|
||||
`export SEARXNG_BASE_URL="http://127.0.0.1:8080"`
|
||||
SEARXNG_BASE_URL 应根据您是在 Docker 中运行还是在主机上运行而有所不同:
|
||||
|
||||
**在主机上运行**:`SEARXNG_BASE_URL="http://localhost:8080"`
|
||||
|
||||
**完全在 Docker 中运行(Web 界面)**:`SEARXNG_BASE_URL="http://searxng:8080"`
|
||||
|
||||
## FAQ
|
||||
|
||||
**Q: 需要什么硬件?**
|
||||
**问:我需要什么硬件?**
|
||||
|
||||
| 模型规模 | GPU | 说明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| 7B | 8GB 显存 | ⚠️ 不推荐。性能差,易幻觉,规划代理易失败。 |
|
||||
| 14B | 12GB 显存(如 RTX 3060) | ✅ 简单任务可用,网页浏览和规划任务可能吃力。|
|
||||
| 32B | 24GB+ 显存(如 RTX 4090) | 🚀 大多数任务成功,复杂规划仍有难度。 |
|
||||
| 70B+ | 48GB+ 显存(如 mac studio) | 💪 推荐,高级用例表现优异。 |
|
||||
| 模型大小 | GPU | 评论 |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| 7B | 8GB 显存 | ⚠️ 不推荐。性能差,频繁出现幻觉,规划代理可能会失败。 |
|
||||
| 14B | 12 GB VRAM(例如 RTX 3060) | ✅ 可用于简单任务。可能在网页浏览和规划任务方面有困难。 |
|
||||
| 32B | 24+ GB VRAM(例如 RTX 4090) | 🚀 大多数任务成功,可能仍然在任务规划方面有困难 |
|
||||
| 70B+ | 48+ GB 显存 | 💪 优秀。推荐用于高级用例。 |
|
||||
|
||||
**Q: 为什么选 Deepseek R1?**
|
||||
**问:我遇到错误该怎么办?**
|
||||
|
||||
Deepseek R1 在推理和工具调用方面表现优异。我们认为它非常适合本项目,其他模型也可用,但 Deepseek 是首选。
|
||||
确保本地正在运行(`ollama serve`),您的 `config.ini` 与您的提供商匹配,并且依赖项已安装。如果都不起作用,请随时提出问题。
|
||||
|
||||
**Q: 运行 `cli.py` 报错怎么办?**
|
||||
**问:它真的可以 100% 本地运行吗?**
|
||||
|
||||
确保本地服务(`ollama serve`)已启动,`config.ini` 配置正确,依赖已安装。如仍有问题欢迎提交 issue。
|
||||
是的,使用 Ollama、lm-studio 或服务器提供商,所有语音转文本、LLM 和文本转语音模型都在本地运行。非本地选项(OpenAI 或其他 API)是可选的。
|
||||
|
||||
**Q: 真能 100% 本地运行吗?**
|
||||
**问:当我有 Manus 时,为什么应该使用 AgenticSeek?**
|
||||
|
||||
是的,使用 Ollama、lm-studio 或 server provider 时,语音、LLM、语音转文本均本地运行。非本地(OpenAI 等 API)为可选。
|
||||
与 Manus 不同,AgenticSeek 优先考虑独立于外部系统,给您更多控制、隐私和避免 API 成本。
|
||||
|
||||
**Q: 有 Manus 为什么还要用 AgenticSeek?**
|
||||
**问:谁是这个项目的幕后推手?**
|
||||
|
||||
本项目起初只是兴趣驱动的副业。特别之处在于主打本地模型,避免 API。
|
||||
灵感来自 Jarvis 和 Friday(钢铁侠),功能上更接近 Manus,因为大家最想要的是本地 manus 替代品。
|
||||
与 Manus 不同,AgenticSeek 更注重独立性、隐私和避免 API 成本。
|
||||
这个项目是由我创建的,还有两个朋友作为维护者和 GitHub 上开源社区的贡献者。我们只是一群充满热情的个人,不是初创公司,也不隶属于任何组织。
|
||||
|
||||
X 上除了我的个人账户(https://x.com/Martin993886460)之外的任何 AgenticSeek 账户都是冒充的。
|
||||
|
||||
## 贡献
|
||||
|
||||
我们欢迎开发者改进 AgenticSeek!请查看 open issues 或讨论区。
|
||||
我们正在寻找开发人员来改进 AgenticSeek!查看开放的问题或讨论。
|
||||
|
||||
[贡献指南](./docs/CONTRIBUTING.md)
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
## 赞助商:
|
||||
|
||||
想要通过航班搜索、旅行规划或抢购最佳购物优惠等功能来提升 AgenticSeek 的能力?考虑使用 SerpApi 制作自定义工具,以解锁更多 Jarvis 般的功能。使用 SerpApi,您可以为专业任务加速您的代理,同时保持完全控制。
|
||||
|
||||
<a href="https://serpapi.com/"><img src="./media/banners/sponsor_banner_serpapi.png" height="350" alt="SerpApi Banner" ></a>
|
||||
|
||||
查看 [Contributing.md](./docs/CONTRIBUTING.md) 了解如何集成自定义工具!
|
||||
|
||||
### **赞助商**:
|
||||
|
||||
- [tatra-labs](https://github.com/tatra-labs)
|
||||
|
||||
## 维护者:
|
||||
|
||||
@@ -538,9 +675,8 @@ Deepseek R1 在推理和工具调用方面表现优异。我们认为它非常
|
||||
|
||||
> [antoineVIVIES](https://github.com/antoineVIVIES) | 台北时间
|
||||
|
||||
> [steveh8758](https://github.com/steveh8758) | 台北时间
|
||||
|
||||
## 特别感谢:
|
||||
|
||||
> [tcsenpai](https://github.com/tcsenpai) 和 [plitc](https://github.com/plitc) 协助后端 docker 化
|
||||
> [tcsenpai](https://github.com/tcsenpai) 和 [plitc](https://github.com/plitc) 协助后端 Docker 化
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
|
||||
+356
-217
@@ -1,8 +1,12 @@
|
||||
# AgenticSeek:私有、本地的 Manus 替代方案
|
||||
|
||||
[English](./README.md) | 中文 | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md)
|
||||
<p align="center">
|
||||
<img align="center" src="./media/agentic_seek_logo.png" width="300" height="300" alt="Agentic Seek Logo">
|
||||
<p>
|
||||
|
||||
*一個**100%本地運行的 Manus AI 替代品**,支持語音的 AI 助手,可自主瀏覽網頁、編寫代碼、規劃任務,所有數據僅保存在你的設備上。專為本地推理模型設計,完全在你的硬件上運行,確保隱私無憂,無需雲端依賴。*
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md) | [Español](./README_ES.md)
|
||||
|
||||
*一個**100%本地運行的 Manus AI 替代品**,支援語音的 AI 助手,可自主瀏覽網頁、編寫代碼、規劃任務,所有數據僅保存在你的設備上。專為本地推理模型設計,完全在你的硬件上運行,確保隱私無憂,無需雲端依賴。*
|
||||
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
|
||||
@@ -34,11 +38,15 @@ https://github.com/user-attachments/assets/b8ca60e9-7b3b-4533-840e-08f9ac426316
|
||||
|
||||
## 前置條件
|
||||
|
||||
請確保已安裝 chrome driver、docker 和 python3.10。
|
||||
開始前,請確保已安裝以下軟件:
|
||||
|
||||
如遇 chrome driver 相關問題,請參見 **Chromedriver** 部分。
|
||||
* **Git:** 用於克隆倉庫。[下載 Git](https://git-scm.com/downloads)
|
||||
* **Python 3.10.x:** 強烈推薦使用 Python 3.10.x 版本。使用其他版本可能導致依賴錯誤。[下載 Python 3.10](https://www.python.org/downloads/release/python-3100/)(選擇 3.10.x 版本)。
|
||||
* **Docker Engine & Docker Compose:** 用於運行捆綁服務如 SearxNG。
|
||||
* 安裝 Docker Desktop(包含 Docker Compose V2):[Windows](https://docs.docker.com/desktop/install/windows-install/) | [Mac](https://docs.docker.com/desktop/install/mac-install/) | [Linux](https://docs.docker.com/desktop/install/linux-install/)
|
||||
* 或者在 Linux 上分別安裝 Docker Engine 和 Docker Compose:[Docker Engine](https://docs.docker.com/engine/install/) | [Docker Compose](https://docs.docker.com/compose/install/)(確保安裝 Compose V2,例如 `sudo apt-get install docker-compose-plugin`)。
|
||||
|
||||
### 1. **克隆倉庫並初始化**
|
||||
### 1. **克隆倉庫並設置**
|
||||
|
||||
```sh
|
||||
git clone https://github.com/Fosowl/agenticSeek.git
|
||||
@@ -49,7 +57,7 @@ mv .env.example .env
|
||||
### 2. 修改 .env 文件內容
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||
SEARXNG_BASE_URL="http://searxng:8080" # 如果在主機上運行 CLI 模式,使用 http://127.0.0.1:8080
|
||||
REDIS_BASE_URL="redis://redis:6379/0"
|
||||
WORK_DIR="/Users/mlg/Documents/workspace_for_ai"
|
||||
OLLAMA_PORT="11434"
|
||||
@@ -63,195 +71,241 @@ GOOGLE_API_KEY='optional'
|
||||
ANTHROPIC_API_KEY='optional'
|
||||
```
|
||||
|
||||
**API Key 完全可選,若你選擇本地運行 LLM(本項目主要目的),可留空,只要硬件足夠。**
|
||||
|
||||
以下環境變量用於配置應用的連接和 API 密鑰。
|
||||
|
||||
根據需要更新 `.env` 文件:
|
||||
|
||||
- **SEARXNG_BASE_URL**:保持不變
|
||||
- **REDIS_BASE_URL**:保持不變
|
||||
- **WORK_DIR**:本地工作目錄路徑,AgenticSeek 可讀取和操作這些文件
|
||||
- **OLLAMA_PORT**:Ollama 服務端口
|
||||
- **LM_STUDIO_PORT**:LM Studio 服務端口
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**:自定義 LLM 服務端口
|
||||
- **SEARXNG_BASE_URL**: 除非在主機上運行 CLI 模式,否則保持不變。
|
||||
- **REDIS_BASE_URL**: 保持不變
|
||||
- **WORK_DIR**: 本地工作目錄路徑。AgenticSeek 可讀取和操作這些文件。
|
||||
- **OLLAMA_PORT**: Ollama 服務端口號。
|
||||
- **LM_STUDIO_PORT**: LM Studio 服務端口號。
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: 任何額外自定義 LLM 服務的端口。
|
||||
|
||||
下方所有 API 密鑰環境變量均為**可選**,僅在你打算使用外部 API 而非本地 LLM 時填寫。
|
||||
**API 密鑰對於選擇本地運行 LLM 的用戶完全可選,這也是本項目的主要目的。如果硬件足夠,請留空。**
|
||||
|
||||
### 3. **啟動 Docker**
|
||||
|
||||
確保已安裝並運行 Docker。可通過以下命令啟動:
|
||||
確保 Docker 已安裝並在系統上運行。可以使用以下命令啟動 Docker:
|
||||
|
||||
- **Linux/macOS:**
|
||||
- **Linux/macOS:**
|
||||
打開終端運行:
|
||||
```sh
|
||||
sudo systemctl start docker
|
||||
```
|
||||
或在應用菜單啟動 Docker Desktop。
|
||||
或者如果已安裝,從應用程序菜單啟動 Docker Desktop。
|
||||
|
||||
- **Windows:**
|
||||
在開始菜單啟動 Docker Desktop。
|
||||
|
||||
驗證 Docker 是否運行:
|
||||
- **Windows:**
|
||||
從開始菜單啟動 Docker Desktop。
|
||||
|
||||
可以通過執行以下命令驗證 Docker 是否運行:
|
||||
```sh
|
||||
docker info
|
||||
```
|
||||
如能看到 Docker 信息,則運行正常。
|
||||
如果看到 Docker 安裝信息,則表示運行正常。
|
||||
|
||||
請參閱下面的[本地提供商列表](#本地提供商列表)了解摘要。
|
||||
|
||||
下一步:[本地運行 AgenticSeek](#啟動服務並運行)
|
||||
|
||||
*如果遇到問題,請參閱[故障排除](#故障排除)部分。*
|
||||
*如果硬件無法本地運行 LLM,請參閱[使用 API 運行設置](#使用-api-運行設置)。*
|
||||
*有關詳細 `config.ini` 說明,請參閱[配置部分](#配置)。*
|
||||
|
||||
---
|
||||
|
||||
## 本地運行 LLM 的設置
|
||||
## 在您的機器上本地運行 LLM 的設置
|
||||
|
||||
**硬件要求:**
|
||||
|
||||
本地運行 LLM 需有足夠硬件。至少需支持 Qwen/Deepseek 14B 的 GPU。詳細模型/性能建議見 FAQ。
|
||||
要本地運行 LLM,您需要足夠的硬件。至少需要能夠運行 Magistral、Qwen 或 Deepseek 14B 的 GPU。有關詳細的模型/性能建議,請參閱 FAQ。
|
||||
|
||||
**啟動本地 provider**
|
||||
**設置您的本地提供商**
|
||||
|
||||
以 ollama 為例,啟動本地 provider:
|
||||
啟動您的本地提供商,例如使用 ollama:
|
||||
|
||||
```sh
|
||||
ollama serve
|
||||
```
|
||||
|
||||
下方有本地支持的 provider 列表。
|
||||
請參閱下面的本地支持提供商列表。
|
||||
|
||||
**修改 config.ini**
|
||||
**更新 config.ini**
|
||||
|
||||
將 config.ini 文件中的 provider_name 設置為支持的 provider,provider_model 設置為 provider 支持的 LLM。推薦推理模型如 *Qwen* 或 *Deepseek*。
|
||||
更改 config.ini 文件,將 provider_name 設置為支持的提供商,provider_model 設置為您的提供商支持的 LLM。我們推薦推理模型,如 *Magistral* 或 *Deepseek*。
|
||||
|
||||
詳細硬件要求見 README 末尾 FAQ。
|
||||
有關所需硬件,請參閱 README 末尾的 **FAQ**。
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
is_local = True # 是否本地運行
|
||||
provider_name = ollama # 或 lm-studio、openai 等
|
||||
provider_model = deepseek-r1:14b # 選擇適合硬件的模型
|
||||
is_local = True # 無論您是本地運行還是使用遠程提供商。
|
||||
provider_name = ollama # 或 lm-studio、openai 等。
|
||||
provider_model = deepseek-r1:14b # 選擇適合您硬件的模型
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
agent_name = Jarvis # AI 名稱
|
||||
recover_last_session = True # 是否恢復上次會話
|
||||
save_session = True # 是否保存當前會話
|
||||
speak = False # 語音輸出
|
||||
listen = False # 語音輸入,僅 CLI,實驗性
|
||||
jarvis_personality = False # 是否使用 Jarvis 風格(實驗性)
|
||||
languages = en zh # 語言列表,語音默認第一個
|
||||
agent_name = Jarvis # 您的 AI 名稱
|
||||
recover_last_session = True # 是否恢復上一個會話
|
||||
save_session = True # 是否記住當前會話
|
||||
speak = False # 文本轉語音
|
||||
listen = False # 語音轉文本,僅限 CLI,實驗性
|
||||
jarvis_personality = False # 是否使用更"Jarvis"風格的性格(實驗性)
|
||||
languages = en zh # 語言列表,文本轉語音將默認使用列表中的第一種語言
|
||||
[BROWSER]
|
||||
headless_browser = True # 除非 CLI,否則保持不變
|
||||
stealth_mode = True # 使用 undetected selenium 降低被檢測概率
|
||||
headless_browser = True # 除非在主機上使用 CLI,否則保持不變。
|
||||
stealth_mode = True # 使用不可檢測的 selenium 減少瀏覽器檢測
|
||||
```
|
||||
|
||||
**警告:**
|
||||
**警告**:
|
||||
|
||||
- `config.ini` 不支持註釋。不要直接複製示例配置,否則註釋會導致錯誤。請手動修改 config.ini,去除註釋。
|
||||
- `config.ini` 文件格式不支持註釋。
|
||||
不要直接複製粘貼示例配置,因為註釋會導致錯誤。相反,手動修改 `config.ini` 文件,使用您所需的設置,排除任何註釋。
|
||||
|
||||
- 若用 LM-studio 運行 LLM,provider_name 不要設為 `openai`,應設為 `lm-studio`。
|
||||
- 如果使用 LM-studio 運行 LLM,請*不要*將 provider_name 設置為 `openai`。將其設置為 `lm-studio`。
|
||||
|
||||
- 某些 provider(如 lm-studio)要求 IP 前加 `http://`,如 `http://127.0.0.1:1234`
|
||||
- 某些提供商(例如:lm-studio)要求您在 IP 前加上 `http://`。例如 `http://127.0.0.1:1234`
|
||||
|
||||
**本地 provider 列表**
|
||||
**本地提供商列表**
|
||||
|
||||
| Provider | 本地? | 說明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| ollama | 是 | 使用 ollama 本地運行 LLM |
|
||||
| lm-studio | 是 | 使用 LM studio 本地運行 LLM(provider_name 設為 lm-studio)|
|
||||
| openai | 是 | 使用 openai 兼容 API(如 llama.cpp server) |
|
||||
| 提供商 | 本地? | 描述 |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | 是 | 使用 ollama 作為 LLM 提供商輕鬆本地運行 LLM |
|
||||
| lm-studio | 是 | 使用 LM studio 本地運行 LLM(將 `provider_name` 設置為 `lm-studio`)|
|
||||
| openai | 是 | 使用 openai 兼容 API(例如:llama.cpp 服務器) |
|
||||
|
||||
下一步:[啟動服務並運行 AgenticSeek](#Start-services-and-Run)
|
||||
下一步:[啟動服務並運行 AgenticSeek](#啟動服務並運行)
|
||||
|
||||
*如遇問題見**已知問題**部分*
|
||||
|
||||
*硬件無法本地運行 deepseek 時見**API 運行**部分*
|
||||
|
||||
*詳細配置說明見**Config**部分*
|
||||
|
||||
---
|
||||
*如果遇到問題,請參閱[故障排除](#故障排除)部分。*
|
||||
*如果硬件無法本地運行 LLM,請參閱[使用 API 運行設置](#使用-api-運行設置)。*
|
||||
*有關詳細 `config.ini` 說明,請參閱[配置部分](#配置)。*
|
||||
|
||||
## 使用 API 運行設置
|
||||
|
||||
**API 運行為可選,見上方本地運行方法。**
|
||||
此設置使用外部、基於雲的 LLM 提供商。您需要從所選服務獲取 API 密鑰。
|
||||
|
||||
在 `config.ini` 設置所需 provider。API provider 列表如下。
|
||||
**1. 選擇 API 提供商並獲取 API 密鑰:**
|
||||
|
||||
請參閱下面的[API 提供商列表](#api-提供商列表)。訪問他們的網站註冊並獲取 API 密鑰。
|
||||
|
||||
**2. 將您的 API 密鑰設置為環境變量:**
|
||||
|
||||
* **Linux/macOS:**
|
||||
打開終端並使用 `export` 命令。最好將其添加到 shell 的配置文件中(例如 `~/.bashrc`、`~/.zshrc`)以保持持久性。
|
||||
```sh
|
||||
export PROVIDER_API_KEY="your_api_key_here"
|
||||
# 將 PROVIDER_API_KEY 替換為特定的變量名,例如 OPENAI_API_KEY、GOOGLE_API_KEY
|
||||
```
|
||||
TogetherAI 示例:
|
||||
```sh
|
||||
export TOGETHER_API_KEY="xxxxxxxxxxxxxxxxxxxxxx"
|
||||
```
|
||||
* **Windows:**
|
||||
* **命令提示符(當前會話臨時):**
|
||||
```cmd
|
||||
set PROVIDER_API_KEY=your_api_key_here
|
||||
```
|
||||
* **PowerShell(當前會話臨時):**
|
||||
```powershell
|
||||
$env:PROVIDER_API_KEY="your_api_key_here"
|
||||
```
|
||||
* **永久性:** 在 Windows 搜索欄中搜索"環境變量",點擊"編輯系統環境變量",然後點擊"環境變量..."按鈕。添加一個新的用戶變量,使用適當的名稱(例如 `OPENAI_API_KEY`)和您的密鑰作為值。
|
||||
|
||||
*(有關更多詳細信息,請參閱 FAQ:[如何設置 API 密鑰?](#如何設置-api-密鑰))。*
|
||||
|
||||
|
||||
**3. 更新 `config.ini`:**
|
||||
```ini
|
||||
[MAIN]
|
||||
is_local = False
|
||||
provider_name = google
|
||||
provider_model = gemini-2.0-flash
|
||||
provider_server_address = 127.0.0.1:5000 # 無關緊要
|
||||
provider_name = openai # 或 google、deepseek、togetherAI、huggingface
|
||||
provider_model = gpt-3.5-turbo # 或 gemini-1.5-flash、deepseek-chat、mistralai/Mixtral-8x7B-Instruct-v0.1 等。
|
||||
provider_server_address = # 當 is_local = False 時,對於大多數 API 通常被忽略或可以留空
|
||||
# ... 其他設置 ...
|
||||
```
|
||||
警告:確保 config 中無多餘空格。
|
||||
*警告:* 確保 `config.ini` 值中沒有尾隨空格。
|
||||
|
||||
導出 API key:`export <>_API_KEY="xxx"`
|
||||
**API 提供商列表**
|
||||
|
||||
示例:`export TOGETHER_API_KEY="xxxxx"`
|
||||
| 提供商 | `provider_name` | 本地? | 描述 | API 密鑰鏈接(示例) |
|
||||
|--------------|-----------------|--------|---------------------------------------------------|---------------------------------------------|
|
||||
| OpenAI | `openai` | 否 | 通過 OpenAI 的 API 使用 ChatGPT 模型。 | [platform.openai.com/signup](https://platform.openai.com/signup) |
|
||||
| Google Gemini| `google` | 否 | 通過 Google AI Studio 使用 Google Gemini 模型。 | [aistudio.google.com/keys](https://aistudio.google.com/keys) |
|
||||
| Deepseek | `deepseek` | 否 | 通過他們的 API 使用 Deepseek 模型。 | [platform.deepseek.com](https://platform.deepseek.com) |
|
||||
| Hugging Face | `huggingface` | 否 | 使用 Hugging Face Inference API 中的模型。 | [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) |
|
||||
| TogetherAI | `togetherAI` | 否 | 通過 TogetherAI API 使用各種開源模型。| [api.together.ai/settings/api-keys](https://api.together.ai/settings/api-keys) |
|
||||
|
||||
**API provider 列表**
|
||||
*注意:*
|
||||
* 我們不建議將 `gpt-4o` 或其他 OpenAI 模型用於複雜的網頁瀏覽和任務規劃,因為當前的提示優化針對 Deepseek 等模型。
|
||||
* 編碼/bash 任務可能會遇到 Gemini 的問題,因為它可能不嚴格遵循針對 Deepseek 優化的格式化提示。
|
||||
* 當 `is_local = False` 時,`config.ini` 中的 `provider_server_address` 通常不使用,因為 API 端點通常在相應提供商的庫中硬編碼。
|
||||
|
||||
| Provider | 本地? | 說明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| openai | 視情況 | 使用 ChatGPT API |
|
||||
| deepseek | 否 | Deepseek API(非私有) |
|
||||
| huggingface| 否 | Hugging-Face API(非私有) |
|
||||
| togetherAI | 否 | 使用 together AI API(非私有) |
|
||||
| google | 否 | 使用 google gemini API(非私有) |
|
||||
下一步:[啟動服務並運行 AgenticSeek](#啟動服務並運行)
|
||||
|
||||
注意:使用 gemini 時代碼/bash 可能失敗,模型對格式提示不敏感,優化針對 deepseek r1。gpt-4o 在本項目 prompt 下表現也較差。
|
||||
*如果遇到問題,請參閱**已知問題**部分*
|
||||
|
||||
下一步:[啟動服務並運行 AgenticSeek](#Start-services-and-Run)
|
||||
|
||||
*如遇問題見**已知問題**部分*
|
||||
|
||||
*詳細配置說明見**Config**部分*
|
||||
*有關詳細配置文件說明,請參閱**配置**部分。*
|
||||
|
||||
---
|
||||
|
||||
## 啟動服務並運行
|
||||
|
||||
啟動所需服務。此操作會啟動 docker-compose.yml 中的所有服務,包括:
|
||||
默認情況下,AgenticSeek 完全在 Docker 中運行。
|
||||
|
||||
**選項 1:** 在 Docker 中運行,使用 Web 界面:
|
||||
|
||||
啟動所需服務。這將啟動 docker-compose.yml 中的所有服務,包括:
|
||||
- searxng
|
||||
- redis(searxng 依賴)
|
||||
- redis(searxng 所需)
|
||||
- frontend
|
||||
- backend(如用 `full`)
|
||||
- backend(如果使用 Web 界面時使用 `full`)
|
||||
|
||||
```sh
|
||||
./start_services.sh full # MacOS
|
||||
start start_services.cmd full # Windows
|
||||
```
|
||||
|
||||
**警告:** 此步驟會下載並加載所有 Docker 鏡像,可能需 30 分鐘。啟動后請等待 backend 服務完全運行(日誌中出現 backend: ),再發送消息。backend 啟動比其他服務慢。
|
||||
**警告:** 此步驟將下載並加載所有 Docker 鏡像,可能需要長達 30 分鐘。啟動服務後,請等待後端服務完全運行(您應該在日誌中看到 **backend: "GET /health HTTP/1.1" 200 OK**)後再發送任何消息。首次運行時,後端服務可能需要 5 分鐘才能啟動。
|
||||
|
||||
訪問 `http://localhost:3000/`,即可看到網頁界面。
|
||||
轉到 `http://localhost:3000/`,您應該會看到 Web 界面。
|
||||
|
||||
**可選:使用 CLI 界面運行:**
|
||||
*服務啟動故障排除:* 如果這些腳本失敗,請確保 Docker Engine 正在運行並且 Docker Compose(V2,`docker compose`)已正確安裝。檢查終端輸出中的錯誤消息。請參閱 [FAQ:幫助!運行 AgenticSeek 或其腳本時出現錯誤。](#faq-故障排除)
|
||||
|
||||
如需 CLI 界面,需在主機安裝依賴:
|
||||
**選項 2:** CLI 模式:
|
||||
|
||||
要使用 CLI 界面運行,您必須在主機上安裝軟件包:
|
||||
|
||||
```sh
|
||||
./install.sh
|
||||
./install.bat # windows
|
||||
```
|
||||
|
||||
啟動服務:
|
||||
然後您必須將 `config.ini` 中的 SEARXNG_BASE_URL 更改為:
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://localhost:8080"
|
||||
```
|
||||
|
||||
啟動所需服務。這將啟動 docker-compose.yml 中的一些服務,包括:
|
||||
- searxng
|
||||
- redis(searxng 所需)
|
||||
- frontend
|
||||
|
||||
```sh
|
||||
./start_services.sh # MacOS
|
||||
start start_services.cmd # Windows
|
||||
```
|
||||
|
||||
然後運行:`uv run cli.py`
|
||||
運行:uv run: `uv run python -m ensurepip` 以確保 uv 已啟用 pip。
|
||||
|
||||
使用 CLI:`uv run cli.py`
|
||||
|
||||
---
|
||||
|
||||
## 使用方法
|
||||
|
||||
確保服務已通過 `./start_services.sh full` 啟動,並訪問 `localhost:3000` 使用網頁界面。
|
||||
確保服務已通過 `./start_services.sh full` 啟動並運行,然後轉到 `localhost:3000` 使用 Web 界面。
|
||||
|
||||
CLI 模式下可通過設置 `listen = True` 啟用語音轉文本。
|
||||
您也可以通過設置 `listen = True` 來使用語音轉文本。僅限 CLI 模式。
|
||||
|
||||
退出時,只需說/輸入 `goodbye`。
|
||||
要退出,只需說/輸入 `goodbye`。
|
||||
|
||||
以下為示例用法:
|
||||
以下是一些使用示例:
|
||||
|
||||
> *用 python 寫一個貪吃蛇遊戲!*
|
||||
|
||||
@@ -267,60 +321,60 @@ CLI 模式下可通過設置 `listen = True` 啟用語音轉文本。
|
||||
|
||||
> *周五,搜索免費股票價格 API,用 supersuper7434567@gmail.com 註冊,然後寫 Python 腳本每日獲取特斯拉股價,結果保存到 stock_prices.csv*
|
||||
|
||||
*表單填寫功能仍為實驗性,可能失敗。*
|
||||
*請注意,表單填寫功能仍為實驗性,可能失敗。*
|
||||
|
||||
輸入查詢后,AgenticSeek 會自動分配最佳代理執行任務。
|
||||
輸入查詢後,AgenticSeek 將分配最佳代理執行任務。
|
||||
|
||||
由於目前為早期原型,代理路由系統可能無法總是正確分配代理。
|
||||
由於這是早期原型,代理路由系統可能無法總是根據您的查詢分配正確的代理。
|
||||
|
||||
因此,建議明確表達需求及 AI 執行方式。例如需網頁搜索時,不要說:
|
||||
因此,您應該非常明確地表達您想要什麼以及 AI 可能如何進行,例如如果您希望它進行網頁搜索,不要說:
|
||||
|
||||
`你知道哪些適合獨自旅行的國家嗎?`
|
||||
|
||||
而應說:
|
||||
|
||||
`請進行網頁搜索,找出最適合獨自旅行的國家`
|
||||
`進行網頁搜索,找出最適合獨自旅行的國家`
|
||||
|
||||
---
|
||||
|
||||
## **在自有服務器運行 LLM 的設置**
|
||||
## **在自己的服務器上運行 LLM 的設置**
|
||||
|
||||
如有高性能電腦或服務器,可用自定義 llm server 遠程運行 LLM。
|
||||
如果您有功能強大的計算機或可以使用的服務器,但想從筆記本電腦使用它,您可以選擇使用我們的自定義 llm 服務器在遠程服務器上運行 LLM。
|
||||
|
||||
在運行 AI 模型的“服務器”上獲取 IP 地址:
|
||||
在將運行 AI 模型的"服務器"上,獲取 IP 地址
|
||||
|
||||
```sh
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # 本地 IP
|
||||
curl https://ipinfo.io/ip # 公網 IP
|
||||
curl https://ipinfo.io/ip # 公共 IP
|
||||
```
|
||||
|
||||
註:Windows/macOS 可用 ipconfig 或 ifconfig 查詢 IP。
|
||||
注意:對於 Windows 或 macOS,分別使用 ipconfig 或 ifconfig 查找 IP 地址。
|
||||
|
||||
克隆倉庫並進入 `server/` 文件夾:
|
||||
克隆倉庫並進入 `server/` 文件夾。
|
||||
|
||||
```sh
|
||||
git clone --depth 1 https://github.com/Fosowl/agenticSeek.git
|
||||
cd agenticSeek/llm_server/
|
||||
```
|
||||
|
||||
安裝服務器依賴:
|
||||
安裝服務器特定要求:
|
||||
|
||||
```sh
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
運行服務器腳本:
|
||||
運行服務器腳本。
|
||||
|
||||
```sh
|
||||
python3 app.py --provider ollama --port 3333
|
||||
```
|
||||
|
||||
可選擇 `ollama` 或 `llamacpp` 作為 LLM 服務。
|
||||
您可以選擇使用 `ollama` 和 `llamacpp` 作為 LLM 服務。
|
||||
|
||||
在你的個人電腦上:
|
||||
現在在您的個人計算機上:
|
||||
|
||||
修改 `config.ini`,將 `provider_name` 設為 `server`,`provider_model` 設為 `deepseek-r1:xxb`。
|
||||
`provider_server_address` 設為運行模型機器的 IP。
|
||||
更改 `config.ini` 文件,將 `provider_name` 設置為 `server`,`provider_model` 設置為 `deepseek-r1:xxb`。
|
||||
將 `provider_server_address` 設置為將運行模型的機器的 IP 地址。
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
@@ -330,40 +384,40 @@ provider_model = deepseek-r1:70b
|
||||
provider_server_address = http://x.x.x.x:3333
|
||||
```
|
||||
|
||||
下一步:[啟動服務並運行 AgenticSeek](#Start-services-and-Run)
|
||||
下一步:[啟動服務並運行 AgenticSeek](#啟動服務並運行)
|
||||
|
||||
---
|
||||
|
||||
## 語音轉文本
|
||||
|
||||
警告:目前僅 CLI 模式支持語音轉文本。
|
||||
警告:目前語音轉文本僅適用於 CLI 模式。
|
||||
|
||||
目前僅支持英文語音轉文本。
|
||||
請注意,目前語音轉文本僅適用於英語。
|
||||
|
||||
默認關閉語音轉文本。啟用方法:在 config.ini 設置 listen 為 True:
|
||||
語音轉文本功能默認禁用。要啟用它,請在 config.ini 文件中將 listen 選項設置為 True:
|
||||
|
||||
```
|
||||
listen = True
|
||||
```
|
||||
|
||||
啟用后,語音轉文本會監聽觸發詞(即 agent 名稱),再開始處理輸入。可通過修改 *config.ini* 的 `agent_name` 自定義:
|
||||
啟用後,語音轉文本功能會監聽觸發關鍵字,即代理的名稱,然後開始處理您的輸入。您可以通過更新 *config.ini* 文件中的 `agent_name` 值來自定義代理的名稱:
|
||||
|
||||
```
|
||||
agent_name = Friday
|
||||
```
|
||||
|
||||
建議使用常見英文名如 "John" 或 "Emma" 作為 agent 名稱。
|
||||
為了獲得最佳識別效果,我們建議使用常見的英文名稱,如 "John" 或 "Emma" 作為代理名稱。
|
||||
|
||||
看到轉錄開始出現后,呼叫 agent 名稱喚醒(如“Friday”)。
|
||||
一旦您看到轉錄開始出現,請大聲說出代理的名稱以喚醒它(例如,"Friday")。
|
||||
|
||||
清晰說出你的請求。
|
||||
清晰地說出您的查詢。
|
||||
|
||||
以確認短語結尾,表示系統可繼續處理。例如:
|
||||
用確認短語結束您的請求,以指示系統繼續。確認短語的示例包括:
|
||||
```
|
||||
"do it", "go ahead", "execute", "run", "start", "thanks", "would ya", "please", "okay?", "proceed", "continue", "go on", "do that", "go it", "do you understand?"
|
||||
```
|
||||
|
||||
## 配置說明
|
||||
## 配置
|
||||
|
||||
配置示例:
|
||||
```
|
||||
@@ -371,164 +425,249 @@ agent_name = Friday
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
provider_server_address = http://127.0.0.1:11434 # Ollama 示例;LM-Studio 使用 http://127.0.0.1:1234
|
||||
agent_name = Friday
|
||||
recover_last_session = False
|
||||
save_session = False
|
||||
speak = False
|
||||
listen = False
|
||||
|
||||
jarvis_personality = False
|
||||
languages = en zh
|
||||
languages = en zh # TTS 和潛在路由的語言列表。
|
||||
[BROWSER]
|
||||
headless_browser = False
|
||||
stealth_mode = False
|
||||
```
|
||||
|
||||
**說明:**
|
||||
**`config.ini` 設置說明**:
|
||||
|
||||
- is_local -> 本地運行(True)或遠程服務器(False)
|
||||
* **`[MAIN]` 部分:**
|
||||
* `is_local`: 如果使用本地 LLM 提供商(Ollama、LM-Studio、本地 OpenAI 兼容服務器)或自託管服務器選項,則為 `True`。如果使用基於雲的 API(OpenAI、Google 等),則為 `False`。
|
||||
* `provider_name`: 指定 LLM 提供商。
|
||||
* 本地選項:`ollama`、`lm-studio`、`openai`(用於本地 OpenAI 兼容服務器)、`server`(用於自託管服務器設置)。
|
||||
* API 選項:`openai`、`google`、`deepseek`、`huggingface`、`togetherAI`。
|
||||
* `provider_model`: 所選提供商的特定模型名稱或 ID(例如,Ollama 的 `deepseekcoder:6.7b`,OpenAI API 的 `gpt-3.5-turbo`,TogetherAI 的 `mistralai/Mixtral-8x7B-Instruct-v0.1`)。
|
||||
* `provider_server_address`: 您的 LLM 提供商的地址。
|
||||
* 對於本地提供商:例如,Ollama 的 `http://127.0.0.1:11434`,LM-Studio 的 `http://127.0.0.1:1234`。
|
||||
* 對於 `server` 提供商類型:您的自託管 LLM 服務器的地址(例如 `http://your_server_ip:3333`)。
|
||||
* 對於雲 API(`is_local = False`):這通常被忽略或可以留空,因為 API 端點通常由客戶端庫處理。
|
||||
* `agent_name`: AI 助手的名稱(例如 Friday)。如果啟用,用作語音轉文本的觸發詞。
|
||||
* `recover_last_session`: `True` 嘗試恢復上一個會話的狀態,`False` 重新開始。
|
||||
* `save_session`: `True` 保存當前會話的狀態以供潛在恢復,`False` 否則。
|
||||
* `speak`: `True` 啟用文本轉語音語音輸出,`False` 禁用。
|
||||
* `listen`: `True` 啟用語音轉文本語音輸入(僅限 CLI 模式),`False` 禁用。
|
||||
* `work_dir`: **關鍵:** AgenticSeek 將讀取/寫入文件的目錄。**確保此路徑在您的系統上有效且可訪問。**
|
||||
* `jarvis_personality`: `True` 使用更"Jarvis-like"的系統提示(實驗性),`False` 使用標準提示。
|
||||
* `languages`: 逗號分隔的語言列表(例如 `en, zh, fr`)。用於 TTS 語音選擇(默認為第一個),並可以協助 LLM 路由器。為避免路由器效率低下,避免使用過多或非常相似的語言。
|
||||
* **`[BROWSER]` 部分:**
|
||||
* `headless_browser`: `True` 在沒有可見窗口的情況下運行自動化瀏覽器(推薦用於 Web 界面或非交互式使用)。`False` 顯示瀏覽器窗口(對於 CLI 模式或調試有用)。
|
||||
* `stealth_mode`: `True` 啟用使瀏覽器自動化更難檢測的措施。可能需要手動安裝瀏覽器擴展,如 anticaptcha。
|
||||
|
||||
- provider_name -> 使用的 provider(如:`ollama`、`server`、`lm-studio`、`deepseek-api`)
|
||||
本節總結了支持的 LLM 提供商類型。在 `config.ini` 中配置它們。
|
||||
|
||||
- provider_model -> 使用的模型,如 deepseek-r1:32b
|
||||
**本地提供商(在您自己的硬件上運行):**
|
||||
|
||||
- provider_server_address -> 服務器地址,如 127.0.0.1:11434(本地),API 可隨意
|
||||
| config.ini 中的提供商名稱 | `is_local` | 描述 | 設置部分 |
|
||||
|-------------------------------|------------|-----------------------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| `ollama` | `True` | 使用 Ollama 輕鬆提供本地 LLM。 | [在您的機器上本地運行 LLM 的設置](#在您的機器上本地運行-llm-的設置) |
|
||||
| `lm-studio` | `True` | 使用 LM-Studio 提供本地 LLM。 | [在您的機器上本地運行 LLM 的設置](#在您的機器上本地運行-llm-的設置) |
|
||||
| `openai`(用於本地服務器) | `True` | 連接到暴露 OpenAI 兼容 API 的本地服務器(例如,llama.cpp)。 | [在您的機器上本地運行 LLM 的設置](#在您的機器上本地運行-llm-的設置) |
|
||||
| `server` | `False` | 連接到在另一台機器上運行的 AgenticSeek 自託管 LLM 服務器。 | [在自己的服務器上運行 LLM 的設置](#在自己的服務器上運行-llm-的設置) |
|
||||
|
||||
- agent_name -> 代理名稱,如 Friday,語音喚醒詞
|
||||
**API 提供商(基於雲):**
|
||||
|
||||
- recover_last_session -> 是否恢復上次會話(True/False)
|
||||
| config.ini 中的提供商名稱 | `is_local` | 描述 | 設置部分 |
|
||||
|-------------------------------|------------|--------------------------------------------------|-----------------------------------------------------|
|
||||
| `openai` | `False` | 使用 OpenAI 的官方 API(例如,GPT-3.5、GPT-4)。 | [使用 API 運行設置](#使用-api-運行設置) |
|
||||
| `google` | `False` | 通過 API 使用 Google 的 Gemini 模型。 | [使用 API 運行設置](#使用-api-運行設置) |
|
||||
| `deepseek` | `False` | 使用 Deepseek 的官方 API。 | [使用 API 運行設置](#使用-api-運行設置) |
|
||||
| `huggingface` | `False` | 使用 Hugging Face Inference API。 | [使用 API 運行設置](#使用-api-運行設置) |
|
||||
| `togetherAI` | `False` | 使用 TogetherAI 的 API 獲取各種開放模型。 | [使用 API 運行設置](#使用-api-運行設置) |
|
||||
|
||||
- save_session -> 是否保存會話數據(True/False)
|
||||
---
|
||||
## 故障排除
|
||||
|
||||
- speak -> 是否啟用語音輸出(True/False)
|
||||
|
||||
- listen -> 是否啟用語音輸入(True/False)
|
||||
|
||||
- jarvis_personality -> 是否使用 JARVIS 風格(True/False),僅更換 prompt
|
||||
|
||||
- languages -> 支持語言列表,供 LLM 路由使用,建議不要太多或太相似
|
||||
|
||||
- headless_browser -> 是否無頭瀏覽器(True/False)
|
||||
|
||||
- stealth_mode -> 是否降低被檢測概率,需手動安裝 anticaptcha 擴展
|
||||
|
||||
- languages -> 支持語言列表,代理路由系統需用,列表越長下載模型越多
|
||||
|
||||
## Provider 列表
|
||||
|
||||
下表為可用 provider:
|
||||
|
||||
| Provider | 本地? | 說明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| ollama | 是 | 使用 ollama 本地運行 LLM |
|
||||
| server | 是 | 在其他機器託管模型,本機調用 |
|
||||
| lm-studio | 是 | 使用 LM studio 本地運行 LLM(provider_name 設為 lm-studio)|
|
||||
| openai | 視情況 | 使用 ChatGPT API(非私有)或 openai 兼容 API |
|
||||
| deepseek-api | 否 | Deepseek API(非私有) |
|
||||
| huggingface| 否 | Hugging-Face API(非私有) |
|
||||
| togetherAI | 否 | 使用 together AI API(非私有) |
|
||||
| google | 否 | 使用 google gemini API(非私有) |
|
||||
|
||||
選擇 provider 時修改 config.ini:
|
||||
|
||||
```
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:5000
|
||||
```
|
||||
`is_local`:本地 LLM 設為 True,否則 False。
|
||||
|
||||
`provider_name`:選擇 provider 名稱,見上表。
|
||||
|
||||
`provider_model`:設置代理使用的模型。
|
||||
|
||||
`provider_server_address`:如非 server provider,可隨意。
|
||||
如果遇到問題,本節提供指導。
|
||||
|
||||
# 已知問題
|
||||
|
||||
## Chromedriver 問題
|
||||
## ChromeDriver 問題
|
||||
|
||||
**已知錯誤 #1:** *chromedriver 不匹配*
|
||||
**錯誤示例:** `SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XXX`
|
||||
|
||||
### 根本原因
|
||||
ChromeDriver 版本不兼容發生在:
|
||||
1. 您安裝的 ChromeDriver 版本與 Chrome 瀏覽器版本不匹配
|
||||
2. 在 Docker 環境中,`undetected_chromedriver` 可能會下載自己的 ChromeDriver 版本,繞過掛載的二進制文件
|
||||
|
||||
### 解決步驟
|
||||
|
||||
#### 1. 檢查您的 Chrome 版本
|
||||
打開 Google Chrome → `設置 > 關於 Chrome` 查找您的版本(例如,"版本 134.0.6998.88")
|
||||
|
||||
#### 2. 下載匹配的 ChromeDriver
|
||||
|
||||
**對於 Chrome 115 及更新版本:** 使用 [Chrome for Testing API](https://googlechromelabs.github.io/chrome-for-testing/)
|
||||
- 訪問 Chrome for Testing 可用性儀表板
|
||||
- 找到您的 Chrome 版本或最接近的可用匹配
|
||||
- 為您的操作系統下載 ChromeDriver(Docker 環境使用 Linux64)
|
||||
|
||||
**對於舊版 Chrome:** 使用 [舊版 ChromeDriver 下載](https://chromedriver.chromium.org/downloads)
|
||||
|
||||

|
||||
|
||||
#### 3. 安裝 ChromeDriver(選擇一種方法)
|
||||
|
||||
**方法 A:項目根目錄(Docker 推薦)**
|
||||
```bash
|
||||
# 將下載的 chromedriver 二進制文件放在項目根目錄
|
||||
cp path/to/downloaded/chromedriver ./chromedriver
|
||||
chmod +x ./chromedriver # 在 Linux/macOS 上使其可執行
|
||||
```
|
||||
|
||||
**方法 B:系統 PATH**
|
||||
```bash
|
||||
# Linux/macOS
|
||||
sudo mv chromedriver /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/chromedriver
|
||||
|
||||
# Windows:將 chromedriver.exe 放在 PATH 中的文件夾中
|
||||
```
|
||||
|
||||
#### 4. 驗證安裝
|
||||
```bash
|
||||
# 測試 ChromeDriver 版本
|
||||
./chromedriver --version
|
||||
# 或者在 PATH 中:
|
||||
chromedriver --version
|
||||
```
|
||||
|
||||
### Docker 特定說明
|
||||
|
||||
⚠️ **Docker 用戶重要:**
|
||||
- Docker 卷掛載方法可能不適用於隱身模式(`undetected_chromedriver`)
|
||||
- **解決方案:** 將 ChromeDriver 放在項目根目錄中作為 `./chromedriver`
|
||||
- 應用程序將自動檢測並使用此二進制文件
|
||||
- 您應該在日誌中看到:`"Using ChromeDriver from project root: ./chromedriver"`
|
||||
|
||||
### 故障排除提示
|
||||
|
||||
1. **仍然遇到版本不匹配?**
|
||||
- 驗證 ChromeDriver 是否可執行:`ls -la ./chromedriver`
|
||||
- 檢查 ChromeDriver 版本:`./chromedriver --version`
|
||||
- 確保它與您的 Chrome 瀏覽器版本匹配
|
||||
|
||||
2. **Docker 容器問題?**
|
||||
- 檢查後端日誌:`docker logs backend`
|
||||
- 查找消息:`"Using ChromeDriver from project root"`
|
||||
- 如果未找到,請驗證文件是否存在且可執行
|
||||
|
||||
3. **Chrome for Testing 版本**
|
||||
- 盡可能使用完全匹配的版本
|
||||
- 對於版本 134.0.6998.88,使用 ChromeDriver 134.0.6998.165(最接近的可用版本)
|
||||
- 主要版本號必須匹配(134 = 134)
|
||||
|
||||
### 版本兼容性矩陣
|
||||
|
||||
| Chrome 版本 | ChromeDriver 版本 | 狀態 |
|
||||
|----------------|---------------------|---------|
|
||||
| 134.0.6998.x | 134.0.6998.165 | ✅ 可用 |
|
||||
| 133.0.6943.x | 133.0.6943.141 | ✅ 可用 |
|
||||
| 132.0.6834.x | 132.0.6834.159 | ✅ 可用 |
|
||||
|
||||
*有關最新兼容性,請查看 [Chrome for Testing 儀表板](https://googlechromelabs.github.io/chrome-for-testing/)*
|
||||
|
||||
`Exception: Failed to initialize browser: Message: session not created: This version of ChromeDriver only supports Chrome version 113
|
||||
Current browser version is 134.0.6998.89 with binary path`
|
||||
|
||||
出現此問題是瀏覽器與 chromedriver 版本不匹配。
|
||||
如果您的瀏覽器和 chromedriver 版本不匹配,會發生這種情況。
|
||||
|
||||
需下載最新版本:
|
||||
您需要導航到下載最新版本:
|
||||
|
||||
https://developer.chrome.com/docs/chromedriver/downloads
|
||||
|
||||
如用 Chrome 115 及以上,訪問:
|
||||
如果您使用 Chrome 版本 115 或更新版本,請轉到:
|
||||
|
||||
https://googlechromelabs.github.io/chrome-for-testing/
|
||||
|
||||
下載與你操作系統匹配的 chromedriver。
|
||||
並下載與您的操作系統匹配的 chromedriver 版本。
|
||||
|
||||

|
||||
|
||||
如本節不全請提交 issue。
|
||||
如果此部分不完整,請提出問題。
|
||||
|
||||
## 連接適配器問題
|
||||
|
||||
```
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:11434/v1/chat/completions'
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:1234/v1/chat/completions'`(注意:端口可能不同)
|
||||
```
|
||||
|
||||
請確保 provider IP 前加 `http://`:
|
||||
* **原因:** `config.ini` 中 `lm-studio`(或其他類似的本地 OpenAI 兼容服務器)的 `provider_server_address` 缺少 `http://` 前綴或指向錯誤的端口。
|
||||
* **解決方案:**
|
||||
* 確保地址包含 `http://`。LM-Studio 通常默認為 `http://127.0.0.1:1234`。
|
||||
* 正確的 `config.ini`:`provider_server_address = http://127.0.0.1:1234`(或您的實際 LM-Studio 服務器端口)。
|
||||
|
||||
`provider_server_address = http://127.0.0.1:11434`
|
||||
|
||||
## SearxNG base URL 必須提供
|
||||
## SearxNG 基本 URL 未提供
|
||||
|
||||
```
|
||||
raise ValueError("SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.")
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.`
|
||||
```
|
||||
|
||||
可能未將 `.env.example` 重命名為 `.env`?也可導出 SEARXNG_BASE_URL:
|
||||
如果您使用錯誤的 searxng 基本 URL 運行 CLI 模式,可能會出現這種情況。
|
||||
|
||||
`export SEARXNG_BASE_URL="http://127.0.0.1:8080"`
|
||||
SEARXNG_BASE_URL 應根據您是在 Docker 中運行還是在主機上運行而有所不同:
|
||||
|
||||
**在主機上運行**:`SEARXNG_BASE_URL="http://localhost:8080"`
|
||||
|
||||
**完全在 Docker 中運行(Web 界面)**:`SEARXNG_BASE_URL="http://searxng:8080"`
|
||||
|
||||
## FAQ
|
||||
|
||||
**Q: 需要什麼硬件?**
|
||||
**問:我需要什麼硬件?**
|
||||
|
||||
| 模型規模 | GPU | 說明 |
|
||||
|-----------|--------|----------------------------------------------------|
|
||||
| 7B | 8GB 顯存 | ⚠️ 不推薦。性能差,易幻覺,規劃代理易失敗。 |
|
||||
| 14B | 12GB 顯存(如 RTX 3060) | ✅ 簡單任務可用,網頁瀏覽和規劃任務可能吃力。|
|
||||
| 32B | 24GB+ 顯存(如 RTX 4090) | 🚀 大多數任務成功,複雜規劃仍有難度。 |
|
||||
| 70B+ | 48GB+ 顯存(如 mac studio) | 💪 推薦,高級用例表現優異。 |
|
||||
| 模型大小 | GPU | 評論 |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| 7B | 8GB 顯存 | ⚠️ 不推薦。性能差,頻繁出現幻覺,規劃代理可能會失敗。 |
|
||||
| 14B | 12 GB VRAM(例如 RTX 3060) | ✅ 可用於簡單任務。可能在網頁瀏覽和規劃任務方面有困難。 |
|
||||
| 32B | 24+ GB VRAM(例如 RTX 4090) | 🚀 大多數任務成功,可能仍然在任務規劃方面有困難 |
|
||||
| 70B+ | 48+ GB 顯存 | 💪 優秀。推薦用於高級用例。 |
|
||||
|
||||
**Q: 為什麼選 Deepseek R1?**
|
||||
**問:我遇到錯誤該怎麼辦?**
|
||||
|
||||
Deepseek R1 在推理和工具調用方面表現優異。我們認為它非常適合本項目,其他模型也可用,但 Deepseek 是首選。
|
||||
確保本地正在運行(`ollama serve`),您的 `config.ini` 與您的提供商匹配,並且依賴項已安裝。如果都不起作用,請隨時提出問題。
|
||||
|
||||
我们的台湾和香港朋友可能会考虑使用未经审查的模型,法国的推理模型“magistral”也是一个替代选择。
|
||||
**問:它真的可以 100% 本地運行嗎?**
|
||||
|
||||
**Q: 運行 `cli.py` 報錯怎麼辦?**
|
||||
是的,使用 Ollama、lm-studio 或服務器提供商,所有語音轉文本、LLM 和文本轉語音模型都在本地運行。非本地選項(OpenAI 或其他 API)是可選的。
|
||||
|
||||
確保本地服務(`ollama serve`)已啟動,`config.ini` 配置正確,依賴已安裝。如仍有問題歡迎提交 issue。
|
||||
**問:當我有 Manus 時,為什麼應該使用 AgenticSeek?**
|
||||
|
||||
**Q: 真能 100% 本地運行嗎?**
|
||||
與 Manus 不同,AgenticSeek 優先考慮獨立於外部系統,給您更多控制、隱私和避免 API 成本。
|
||||
|
||||
是的,使用 Ollama、lm-studio 或 server provider 時,語音、LLM、語音轉文本均本地運行。非本地(OpenAI 等 API)為可選。
|
||||
**問:誰是這個項目的幕後推手?**
|
||||
|
||||
**Q: 有 Manus 為什麼還要用 AgenticSeek?**
|
||||
這個項目是由我創建的,還有兩個朋友作為維護者和 GitHub 上開源社區的貢獻者。我們只是一群充滿熱情的個人,不是初創公司,也不隸屬於任何組織。
|
||||
|
||||
本項目起初只是興趣驅動的副業。特別之處在於主打本地模型,避免 API。
|
||||
靈感來自 Jarvis 和 Friday(鋼鐵俠),功能上更接近 Manus,因為大家最想要的是本地 manus 替代品。
|
||||
與 Manus 不同,AgenticSeek 更注重獨立性、隱私和避免 API 成本。
|
||||
X 上除了我的個人賬戶(https://x.com/Martin993886460)之外的任何 AgenticSeek 賬戶都是冒充的。
|
||||
|
||||
## 貢獻
|
||||
|
||||
我們歡迎開發者改進 AgenticSeek!請查看 open issues 或討論區。
|
||||
我們正在尋找開發人員來改進 AgenticSeek!查看開放的問題或討論。
|
||||
|
||||
[貢獻指南](./docs/CONTRIBUTING.md)
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
## 贊助商:
|
||||
|
||||
想要通過航班搜索、旅行規劃或搶購最佳購物優惠等功能來提升 AgenticSeek 的能力?考慮使用 SerpApi 製作自定義工具,以解鎖更多 Jarvis 般的功能。使用 SerpApi,您可以為專業任務加速您的代理,同時保持完全控制。
|
||||
|
||||
<a href="https://serpapi.com/"><img src="./media/banners/sponsor_banner_serpapi.png" height="350" alt="SerpApi Banner" ></a>
|
||||
|
||||
查看 [Contributing.md](./docs/CONTRIBUTING.md) 了解如何集成自定義工具!
|
||||
|
||||
### **贊助商**:
|
||||
|
||||
- [tatra-labs](https://github.com/tatra-labs)
|
||||
|
||||
## 維護者:
|
||||
|
||||
@@ -536,8 +675,8 @@ Deepseek R1 在推理和工具調用方面表現優異。我們認為它非常
|
||||
|
||||
> [antoineVIVIES](https://github.com/antoineVIVIES) | 台北時間
|
||||
|
||||
> [steveh8758](https://github.com/steveh8758) | 台北時間
|
||||
|
||||
## 特別感謝:
|
||||
|
||||
> [tcsenpai](https://github.com/tcsenpai) 和 [plitc](https://github.com/plitc) 協助後端 docker 化
|
||||
> [tcsenpai](https://github.com/tcsenpai) 和 [plitc](https://github.com/plitc) 協助後端 Docker 化
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
|
||||
+382
-244
@@ -1,48 +1,52 @@
|
||||
# AgenticSeek: Alternativa Privada y Local a Manus.
|
||||
# AgenticSeek: Una Alternativa Privada y Local a Manus
|
||||
|
||||
<p align="center">
|
||||
<img align="center" src="./media/agentic_seek_logo.png" width="300" height="300" alt="Agentic Seek Logo">
|
||||
<p>
|
||||
|
||||
[English](./README.md) | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md) | [Español](./README_ES.md)
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md) | [Español](./README_ES.md)
|
||||
|
||||
*Una **alternativa 100% local a Manus AI**, este asistente de IA con capacidad de voz navega autónomamente por la web, escribe código y planifica tareas mientras mantiene todos los datos en tu dispositivo. Diseñado para modelos de razonamiento local, funciona completamente en tu hardware, garantizando privacidad total y cero dependencia de la nube.*
|
||||
*Un asistente de IA con capacidad de voz que es una **alternativa 100% local a Manus AI**, navega autónomamente por la web, escribe código y planifica tareas manteniendo todos los datos en tu dispositivo. Diseñado para modelos de razonamiento local, funciona completamente en tu hardware, garantizando privacidad total y cero dependencia de la nube.*
|
||||
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
|
||||
### ¿Por qué AgenticSeek?
|
||||
|
||||
* 🔒 Totalmente Local y Privado - Todo se ejecuta en tu máquina — sin nube, sin compartir datos. Tus archivos, conversaciones y búsquedas permanecen privados.
|
||||
* 🔒 Totalmente Local & Privado - Todo funciona en tu máquina, sin nube, sin compartir datos. Tus archivos, conversaciones y búsquedas permanecen privados.
|
||||
|
||||
* 🌐 Navegación Web Inteligente - AgenticSeek puede navegar por internet por sí mismo — buscar, leer, extraer información, llenar formularios web — todo sin intervención manual.
|
||||
* 🌐 Navegación Web Inteligente - AgenticSeek puede navegar por Internet de forma autónoma: buscar, leer, extraer información, completar formularios web, todo sin manos.
|
||||
|
||||
* 💻 Asistente de Código Autónomo - ¿Necesitas código? Puede escribir, depurar y ejecutar programas en Python, C, Go, Java y más — todo sin supervisión.
|
||||
* 💻 Asistente de Programación Autónomo - ¿Necesitas código? Puede escribir, depurar y ejecutar programas en Python, C, Go, Java y más, sin supervisión.
|
||||
|
||||
* 🧠 Selección Inteligente de Agentes - Tú preguntas, él determina el mejor agente para el trabajo automáticamente. Como tener un equipo de expertos listos para ayudar.
|
||||
* 🧠 Selección Inteligente de Agentes - Tú pides, él elige automáticamente el mejor agente para la tarea. Como tener un equipo de expertos siempre disponible.
|
||||
|
||||
* 📋 Planifica y Ejecuta Tareas Complejas - Desde planificación de viajes hasta proyectos complejos — puede dividir grandes tareas en pasos y completarlas usando múltiples agentes de IA.
|
||||
* 📋 Planifica y Ejecuta Tareas Complejas - Desde planificación de viajes hasta proyectos complejos, puede dividir grandes tareas en pasos y completarlos utilizando múltiples agentes de IA.
|
||||
|
||||
* 🎙️ Habilitado por Voz - Voz y texto a voz limpios, rápidos y futuristas que te permiten hablar con él como si fuera tu IA personal de una película de ciencia ficción. (En progreso)
|
||||
* 🎙️ Compatibilidad con Voz - Voz limpia, rápida y futurista con reconocimiento de voz, permitiéndote conversar como si fuera tu IA personal de una película de ciencia ficción. (En desarrollo)
|
||||
|
||||
### **Demo**
|
||||
|
||||
> *¿Puedes buscar el proyecto agenticSeek, aprender qué habilidades se requieren, luego abrir el CV_candidates.zip y decirme cuáles coinciden mejor con el proyecto?*
|
||||
> *¿Puedes buscar el proyecto agenticSeek, aprender qué habilidades se necesitan, luego abrir CV_candidates.zip y decirme cuáles coinciden mejor con el proyecto?*
|
||||
|
||||
https://github.com/user-attachments/assets/b8ca60e9-7b3b-4533-840e-08f9ac426316
|
||||
|
||||
Descargo de responsabilidad: Esta demo, incluyendo todos los archivos que aparecen (ej: CV_candidates.zip), son completamente ficticios. No somos una corporación, buscamos contribuidores de código abierto, no candidatos.
|
||||
Descargo de responsabilidad: Esta demostración y todos los archivos que aparecen (ej: CV_candidates.zip) son completamente ficticios. No somos una corporación, buscamos colaboradores de código abierto, no candidatos.
|
||||
|
||||
> 🛠⚠️️ **Trabajo Activo en Progreso**
|
||||
|
||||
> 🙏 Este proyecto comenzó como un proyecto secundario y no tiene hoja de ruta ni financiamiento. Ha crecido mucho más allá de lo que esperaba al terminar en GitHub Trending. Las contribuciones, comentarios y paciencia son profundamente apreciados.
|
||||
> 🙏 Este proyecto comenzó como un proyecto paralelo y no tiene hoja de ruta ni financiación. Creció mucho más allá de lo esperado al aparecer en GitHub Trending. Las contribuciones, comentarios y paciencia son profundamente apreciados.
|
||||
|
||||
## Prerrequisitos
|
||||
|
||||
Asegúrate de tener instalado chrome driver, docker y python3.10.
|
||||
Antes de comenzar, asegúrate de tener instalado:
|
||||
|
||||
Para problemas relacionados con chrome driver, consulta la sección **Chromedriver**.
|
||||
* **Git:** Para clonar el repositorio. [Descargar Git](https://git-scm.com/downloads)
|
||||
* **Python 3.10.x:** Se recomienda encarecidamente Python 3.10.x. Otras versiones pueden causar errores de dependencia. [Descargar Python 3.10](https://www.python.org/downloads/release/python-3100/) (selecciona la versión 3.10.x).
|
||||
* **Docker Engine & Docker Compose:** Para ejecutar servicios empaquetados como SearxNG.
|
||||
* Instalar Docker Desktop (incluye Docker Compose V2): [Windows](https://docs.docker.com/desktop/install/windows-install/) | [Mac](https://docs.docker.com/desktop/install/mac-install/) | [Linux](https://docs.docker.com/desktop/install/linux-install/)
|
||||
* O instalar Docker Engine y Docker Compose por separado en Linux: [Docker Engine](https://docs.docker.com/engine/install/) | [Docker Compose](https://docs.docker.com/compose/install/) (asegúrate de instalar Compose V2, por ejemplo `sudo apt-get install docker-compose-plugin`).
|
||||
|
||||
### 1. **Clonar el repositorio y configuración**
|
||||
### 1. **Clonar el repositorio y configurar**
|
||||
|
||||
```sh
|
||||
git clone https://github.com/Fosowl/agenticSeek.git
|
||||
@@ -50,65 +54,69 @@ cd agenticSeek
|
||||
mv .env.example .env
|
||||
```
|
||||
|
||||
### 2. Cambiar el contenido del archivo .env
|
||||
### 2. Modificar el contenido del archivo .env
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||
SEARXNG_BASE_URL="http://searxng:8080" # Si ejecutas en modo CLI en el host, usa 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='opcional'
|
||||
DEEPSEEK_API_KEY='opcional'
|
||||
OPENROUTER_API_KEY='opcional'
|
||||
TOGETHER_API_KEY='opcional'
|
||||
GOOGLE_API_KEY='opcional'
|
||||
ANTHROPIC_API_KEY='opcional'
|
||||
OPENAI_API_KEY='optional'
|
||||
DEEPSEEK_API_KEY='optional'
|
||||
OPENROUTER_API_KEY='optional'
|
||||
TOGETHER_API_KEY='optional'
|
||||
GOOGLE_API_KEY='optional'
|
||||
ANTHROPIC_API_KEY='optional'
|
||||
```
|
||||
|
||||
**Las API Keys son totalmente opcionales para usuarios que elijan ejecutar LLM localmente. Este es el propósito principal de este proyecto. Déjalas vacías si tienes hardware suficiente**
|
||||
Actualiza el archivo `.env` según sea necesario:
|
||||
|
||||
Las siguientes variables de entorno configuran las conexiones y claves API de tu aplicación.
|
||||
|
||||
Actualiza el archivo `.env` con tus propios valores según sea necesario:
|
||||
|
||||
- **SEARXNG_BASE_URL**: Déjalo sin cambios
|
||||
- **REDIS_BASE_URL**: Déjalo sin cambios
|
||||
- **WORK_DIR**: Ruta a tu directorio de trabajo en tu máquina local. AgenticSeek podrá leer e interactuar con estos archivos.
|
||||
- **SEARXNG_BASE_URL**: Mantener sin cambios a menos que ejecutes en modo CLI en el host.
|
||||
- **REDIS_BASE_URL**: Mantener sin cambios
|
||||
- **WORK_DIR**: Ruta al directorio de trabajo local. AgenticSeek podrá leer e interactuar con estos archivos.
|
||||
- **OLLAMA_PORT**: Número de puerto para el servicio Ollama.
|
||||
- **LM_STUDIO_PORT**: Número de puerto para el servicio LM Studio.
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: Puerto para cualquier servicio LLM personalizado adicional.
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: Puerto para cualquier servicio LLM adicional personalizado.
|
||||
|
||||
Todas las variables de entorno de API key a continuación son **opcionales**. Solo necesitas proporcionarlas si planeas usar APIs externas en lugar de ejecutar LLMs localmente.
|
||||
**Las claves API son completamente opcionales para quienes optan por ejecutar LLM localmente, que es el objetivo principal de este proyecto. Déjalas en blanco si tienes hardware suficiente.**
|
||||
|
||||
### 3. **Iniciar Docker**
|
||||
|
||||
Asegúrate de que Docker esté instalado y ejecutándose en tu sistema. Puedes iniciar Docker usando los siguientes comandos:
|
||||
Asegúrate de que Docker esté instalado y ejecutándose en tu sistema. Puedes iniciar Docker con los siguientes comandos:
|
||||
|
||||
- **En Linux/macOS:**
|
||||
- **Linux/macOS:**
|
||||
Abre una terminal y ejecuta:
|
||||
```sh
|
||||
sudo systemctl start docker
|
||||
```
|
||||
O inicia Docker Desktop desde el menú de aplicaciones si está instalado.
|
||||
O inicia Docker Desktop desde el menú de aplicaciones, si está instalado.
|
||||
|
||||
- **En Windows:**
|
||||
Inicia Docker Desktop desde el menú de inicio.
|
||||
- **Windows:**
|
||||
Inicia Docker Desktop desde el menú Inicio.
|
||||
|
||||
Puedes verificar que Docker está ejecutándose ejecutando:
|
||||
Puedes verificar si Docker se está ejecutando ejecutando:
|
||||
```sh
|
||||
docker info
|
||||
```
|
||||
Si ves información sobre tu instalación de Docker, está ejecutándose correctamente.
|
||||
Si ves información sobre tu instalación de Docker, está funcionando correctamente.
|
||||
|
||||
Consulta la [Lista de proveedores locales](#lista-de-proveedores-locales) a continuación para obtener un resumen.
|
||||
|
||||
Siguiente paso: [Ejecutar AgenticSeek localmente](#iniciar-servicios-y-ejecutar)
|
||||
|
||||
*Si tienes problemas, consulta la sección [Solución de problemas](#solución-de-problemas).*
|
||||
*Si tu hardware no puede ejecutar LLM localmente, consulta [Configuración para ejecutar con una API](#configuración-para-ejecutar-con-una-api).*
|
||||
*Para explicaciones detalladas de `config.ini`, consulta la [sección Configuración](#configuración).*
|
||||
|
||||
---
|
||||
|
||||
## Configuración para ejecutar LLM localmente en tu máquina
|
||||
|
||||
**Requisitos de Hardware:**
|
||||
**Requisitos de hardware:**
|
||||
|
||||
Para ejecutar LLMs localmente, necesitarás hardware suficiente. Como mínimo, se requiere una GPU capaz de ejecutar Qwen/Deepseek 14B. Consulta la sección FAQ para recomendaciones detalladas de modelos/rendimiento.
|
||||
Para ejecutar LLM localmente, necesitarás hardware suficiente. Como mínimo, se requiere una GPU capaz de ejecutar Magistral, Qwen o Deepseek 14B. Consulta el FAQ para recomendaciones detalladas de modelo/rendimiento.
|
||||
|
||||
**Configura tu proveedor local**
|
||||
|
||||
@@ -118,185 +126,229 @@ Inicia tu proveedor local, por ejemplo con ollama:
|
||||
ollama serve
|
||||
```
|
||||
|
||||
Consulta más abajo la lista de proveedores locales soportados.
|
||||
Consulta la lista de proveedores locales admitidos a continuación.
|
||||
|
||||
**Actualiza el config.ini**
|
||||
**Actualizar config.ini**
|
||||
|
||||
Cambia el archivo config.ini para establecer provider_name a un proveedor soportado y provider_model a un LLM soportado por tu proveedor. Recomendamos modelos de razonamiento como *Qwen* o *Deepseek*.
|
||||
Cambia el archivo config.ini para establecer provider_name en un proveedor admitido y provider_model en un LLM admitido por tu proveedor. Recomendamos modelos de razonamiento como *Magistral* o *Deepseek*.
|
||||
|
||||
Consulta la sección **FAQ** al final del README para los requisitos de hardware.
|
||||
Consulta el **FAQ** al final del README para el hardware necesario.
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
is_local = True # Si estás ejecutando localmente o con proveedor remoto.
|
||||
provider_name = ollama # o lm-studio, openai, etc..
|
||||
provider_model = deepseek-r1:14b # elige un modelo que se ajuste a tu hardware
|
||||
is_local = True # Ya sea que ejecutes localmente o con un proveedor remoto.
|
||||
provider_name = ollama # o lm-studio, openai, etc.
|
||||
provider_model = deepseek-r1:14b # elige un modelo compatible con tu hardware
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
agent_name = Jarvis # nombre de tu IA
|
||||
recover_last_session = True # si quieres recuperar la sesión anterior
|
||||
save_session = True # si quieres recordar la sesión actual
|
||||
agent_name = Jarvis # el nombre de tu IA
|
||||
recover_last_session = True # recuperar sesión anterior
|
||||
save_session = True # recordar sesión actual
|
||||
speak = False # texto a voz
|
||||
listen = False # Voz a texto, solo para CLI, experimental
|
||||
jarvis_personality = False # Si quieres usar una personalidad más tipo "Jarvis" (experimental)
|
||||
languages = en zh # La lista de idiomas, Text to speech usará por defecto el primer idioma de la lista
|
||||
listen = False # voz a texto, solo para CLI, experimental
|
||||
jarvis_personality = False # usar personalidad más "Jarvis" (experimental)
|
||||
languages = en zh # Lista de idiomas, TTS usará el primero de la lista por defecto
|
||||
[BROWSER]
|
||||
headless_browser = True # déjalo sin cambios a menos que uses CLI en el host.
|
||||
stealth_mode = True # Usa selenium no detectado para reducir la detección del navegador
|
||||
headless_browser = True # mantener sin cambios a menos que uses CLI en el host.
|
||||
stealth_mode = True # Usa selenium indetectable para reducir la detección del navegador
|
||||
```
|
||||
|
||||
**Advertencia**:
|
||||
|
||||
- El formato del archivo `config.ini` no soporta comentarios.
|
||||
No copies y pegues la configuración de ejemplo directamente, ya que los comentarios causarán errores. En su lugar, modifica manualmente el archivo `config.ini` con tus configuraciones deseadas, excluyendo cualquier comentario.
|
||||
- El formato del archivo `config.ini` no admite comentarios.
|
||||
No copies y pegues la configuración de ejemplo directamente, ya que los comentarios causarán errores. En su lugar, modifica manualmente el archivo `config.ini` con tu configuración deseada, sin comentarios.
|
||||
|
||||
- NO establezcas provider_name como `openai` si estás usando LM-studio para ejecutar LLMs. Establécelo como `lm-studio`.
|
||||
- *NO* establezcas provider_name como `openai` si estás usando LM-studio para ejecutar LLM. Úsalo como `lm-studio`.
|
||||
|
||||
- Algunos proveedores (ej: lm-studio) requieren que tengas `http://` antes de la IP. Por ejemplo `http://127.0.0.1:1234`
|
||||
- Algunos proveedores (ej: lm-studio) requieren `http://` antes de la IP. Ejemplo: `http://127.0.0.1:1234`
|
||||
|
||||
**Lista de proveedores locales**
|
||||
|
||||
| Proveedor | ¿Local? | Descripción |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | Sí | Ejecuta LLMs localmente con facilidad usando ollama como proveedor LLM |
|
||||
| lm-studio | Sí | Ejecuta LLM localmente con LM studio (establece `provider_name` como `lm-studio`)|
|
||||
| ollama | Sí | Ejecuta LLM localmente fácilmente usando ollama |
|
||||
| lm-studio | Sí | Ejecuta LLM localmente con LM studio (establecer `provider_name` = `lm-studio`)|
|
||||
| openai | Sí | Usa API compatible con openai (ej: servidor llama.cpp) |
|
||||
|
||||
Siguiente paso: [Iniciar servicios y ejecutar AgenticSeek](#Iniciar-servicios-y-ejecutar)
|
||||
Siguiente paso: [Iniciar servicios y ejecutar AgenticSeek](#iniciar-servicios-y-ejecutar)
|
||||
|
||||
*Consulta la sección **Problemas conocidos** si tienes problemas*
|
||||
|
||||
*Consulta la sección **Ejecutar con una API** si tu hardware no puede ejecutar deepseek localmente*
|
||||
|
||||
*Consulta la sección **Config** para una explicación detallada del archivo de configuración.*
|
||||
|
||||
---
|
||||
*Si tienes problemas, consulta la sección [Solución de problemas](#solución-de-problemas).*
|
||||
*Si tu hardware no puede ejecutar LLM localmente, consulta [Configuración para ejecutar con una API](#configuración-para-ejecutar-con-una-api).*
|
||||
*Para explicaciones detalladas de `config.ini`, consulta la [sección Configuración](#configuración).*
|
||||
|
||||
## Configuración para ejecutar con una API
|
||||
|
||||
**Ejecutar con una API es opcional, consulta arriba para ejecutar localmente.**
|
||||
Esta configuración utiliza proveedores de LLM externos basados en la nube. Necesitarás obtener claves API del servicio elegido.
|
||||
|
||||
Establece el proveedor deseado en el `config.ini`. Consulta más abajo la lista de proveedores de API.
|
||||
**1. Elige un proveedor de API y obtén una clave API:**
|
||||
|
||||
Consulta la [Lista de proveedores de API](#lista-de-proveedores-de-api) a continuación. Visita sus sitios web para registrarte y obtener claves API.
|
||||
|
||||
**2. Establece tu clave API como variable de entorno:**
|
||||
|
||||
* **Linux/macOS:**
|
||||
Abre una terminal y usa el comando `export`. Es mejor agregarlo al archivo de configuración de tu shell (ej: `~/.bashrc`, `~/.zshrc`) para que sea persistente.
|
||||
```sh
|
||||
export PROVIDER_API_KEY="your_api_key_here"
|
||||
# Reemplaza PROVIDER_API_KEY con el nombre de variable específico, ej: OPENAI_API_KEY, GOOGLE_API_KEY
|
||||
```
|
||||
Ejemplo de TogetherAI:
|
||||
```sh
|
||||
export TOGETHER_API_KEY="xxxxxxxxxxxxxxxxxxxxxx"
|
||||
```
|
||||
* **Windows:**
|
||||
* **Símbolo del sistema (temporal para la sesión actual):**
|
||||
```cmd
|
||||
set PROVIDER_API_KEY=your_api_key_here
|
||||
```
|
||||
* **PowerShell (temporal para la sesión actual):**
|
||||
```powershell
|
||||
$env:PROVIDER_API_KEY="your_api_key_here"
|
||||
```
|
||||
* **Permanente:** Busca "variables de entorno" en la barra de búsqueda de Windows, haz clic en "Editar las variables de entorno del sistema", luego en el botón "Variables de entorno...". Agrega una nueva variable de usuario con el nombre apropiado (ej: `OPENAI_API_KEY`) y tu clave como valor.
|
||||
|
||||
*(Para más detalles, consulta el FAQ: [¿Cómo configuro una clave API?](#cómo-configuro-una-clave-api)).*
|
||||
|
||||
|
||||
**3. Actualiza `config.ini`:**
|
||||
```ini
|
||||
[MAIN]
|
||||
is_local = False
|
||||
provider_name = google
|
||||
provider_model = gemini-2.0-flash
|
||||
provider_server_address = 127.0.0.1:5000 # no importa
|
||||
provider_name = openai # o google, deepseek, togetherAI, huggingface
|
||||
provider_model = gpt-3.5-turbo # o gemini-1.5-flash, deepseek-chat, mistralai/Mixtral-8x7B-Instruct-v0.1, etc.
|
||||
provider_server_address = # Cuando is_local = False, generalmente se ignora o puede dejarse en blanco para la mayoría de las API
|
||||
# ... otras configuraciones ...
|
||||
```
|
||||
Advertencia: Asegúrate de que no haya espacios al final en la configuración.
|
||||
|
||||
Exporta tu API key: `export <<PROVIDER>>_API_KEY="xxx"`
|
||||
|
||||
Ejemplo: export `TOGETHER_API_KEY="xxxxx"`
|
||||
*Advertencia:* Asegúrate de que no haya espacios al final de los valores en config.
|
||||
|
||||
**Lista de proveedores de API**
|
||||
|
||||
| Proveedor | ¿Local? | Descripción |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| openai | Depende | Usa API de ChatGPT |
|
||||
| deepseek | No | API de Deepseek (no privada) |
|
||||
| huggingface| No | API de Hugging-Face (no privada) |
|
||||
| togetherAI | No | Usa API de together AI (no privada) |
|
||||
| google | No | Usa API de google gemini (no privada) |
|
||||
| Proveedor | `provider_name` | ¿Local? | Descripción | Enlace de clave API (ejemplo) |
|
||||
|--------------|-----------------|--------|---------------------------------------------------|---------------------------------------------|
|
||||
| OpenAI | `openai` | No | Usa modelos ChatGPT a través de la API de OpenAI. | [platform.openai.com/signup](https://platform.openai.com/signup) |
|
||||
| Google Gemini| `google` | No | Usa modelos Google Gemini a través de Google AI Studio. | [aistudio.google.com/keys](https://aistudio.google.com/keys) |
|
||||
| Deepseek | `deepseek` | No | Usa modelos Deepseek a través de su API. | [platform.deepseek.com](https://platform.deepseek.com) |
|
||||
| Hugging Face | `huggingface` | No | Usa modelos del Hugging Face Inference API. | [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) |
|
||||
| TogetherAI | `togetherAI` | No | Usa varios modelos de código abierto a través de la API de TogetherAI.| [api.together.ai/settings/api-keys](https://api.together.ai/settings/api-keys) |
|
||||
|
||||
Ten en cuenta que la codificación/bash podría fallar con gemini, parece ignorar nuestro prompt para respetar el formato, que están optimizados para deepseek r1. Modelos como gpt-4 también parecen tener un rendimiento deficiente con nuestro prompt.
|
||||
*Nota:*
|
||||
* No recomendamos usar `gpt-4o` u otros modelos OpenAI para navegación web compleja y planificación de tareas, ya que la optimización actual de prompts está dirigida a modelos como Deepseek.
|
||||
* Las tareas de codificación/bash pueden fallar con Gemini, ya que tiende a ignorar nuestro formato de prompt optimizado para Deepseek r1.
|
||||
* Cuando `is_local = False`, `provider_server_address` en `config.ini` generalmente no se usa, ya que los endpoints de API suelen estar codificados en las bibliotecas del proveedor correspondiente.
|
||||
|
||||
Siguiente paso: [Iniciar servicios y ejecutar AgenticSeek](#Iniciar-servicios-y-ejecutar)
|
||||
Siguiente paso: [Iniciar servicios y ejecutar AgenticSeek](#iniciar-servicios-y-ejecutar)
|
||||
|
||||
*Consulta la sección **Problemas conocidos** si tienes problemas*
|
||||
*Si tienes problemas, consulta la sección **Problemas conocidos***
|
||||
|
||||
*Consulta la sección **Config** para una explicación detallada del archivo de configuración.*
|
||||
*Para explicaciones detalladas del archivo de configuración, consulta la **sección Configuración**.*
|
||||
|
||||
---
|
||||
|
||||
## Iniciar servicios y ejecutar
|
||||
|
||||
Inicia los servicios requeridos. Esto iniciará todos los servicios del docker-compose.yml, incluyendo:
|
||||
Por defecto, AgenticSeek se ejecuta completamente en Docker.
|
||||
|
||||
**Opción 1:** Ejecutar en Docker con interfaz web:
|
||||
|
||||
Inicia los servicios necesarios. Esto iniciará todos los servicios del docker-compose.yml, incluyendo:
|
||||
- searxng
|
||||
- redis (requerido por searxng)
|
||||
- redis (requerido para searxng)
|
||||
- frontend
|
||||
- backend (si usas `full`)
|
||||
- backend (si usas `full` para la interfaz web)
|
||||
|
||||
```sh
|
||||
./start_services.sh full # MacOS
|
||||
start start_services.cmd full # Windows
|
||||
```
|
||||
|
||||
**Advertencia:** Este paso descargará y cargará todas las imágenes de Docker, lo que puede tomar hasta 30 minutos. Después de iniciar los servicios, espera hasta que el servicio backend esté completamente ejecutándose (deberías ver backend: <info> en el log) antes de enviar cualquier mensaje. Los servicios backend pueden tardar más en iniciar que otros.
|
||||
**Advertencia:** Este paso descargará y cargará todas las imágenes de Docker, lo que puede tardar hasta 30 minutos. Después de iniciar los servicios, espera hasta que el servicio backend esté completamente ejecutándose (deberías ver **backend: "GET /health HTTP/1.1" 200 OK** en el registro) antes de enviar cualquier mensaje. En la primera ejecución, el servicio backend puede tardar 5 minutos en iniciarse.
|
||||
|
||||
Ve a `http://localhost:3000/` y deberías ver la interfaz web.
|
||||
|
||||
**Opcional:** Ejecutar con la interfaz CLI:
|
||||
*Solución de problemas de inicio de servicios:* Si estos scripts fallan, asegúrate de que Docker Engine esté ejecutándose y que Docker Compose (V2, `docker compose`) esté correctamente instalado. Revisa los mensajes de error en la salida de la terminal. Consulta [FAQ: ¡Ayuda! Obtengo errores al ejecutar AgenticSeek o sus scripts.](#faq-solución-de-problemas)
|
||||
|
||||
Para ejecutar con la interfaz CLI tendrías que instalar el paquete en el host:
|
||||
**Opción 2:** Modo CLI:
|
||||
|
||||
Para ejecutar con la interfaz CLI, debes instalar los paquetes en el host:
|
||||
|
||||
```sh
|
||||
./install.sh
|
||||
./install.bat # windows
|
||||
```
|
||||
|
||||
Inicia los servicios:
|
||||
Luego debes cambiar SEARXNG_BASE_URL en `config.ini` a:
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://localhost:8080"
|
||||
```
|
||||
|
||||
Inicia los servicios necesarios. Esto iniciará algunos servicios del docker-compose.yml, incluyendo:
|
||||
- searxng
|
||||
- redis (requerido para searxng)
|
||||
- frontend
|
||||
|
||||
```sh
|
||||
./start_services.sh # MacOS
|
||||
start start_services.cmd # Windows
|
||||
```
|
||||
|
||||
Luego ejecuta: `uv run cli.py`
|
||||
Ejecuta: uv run: `uv run python -m ensurepip` para asegurarte de que uv tenga pip habilitado.
|
||||
|
||||
## Uso
|
||||
|
||||
Asegúrate de que los servicios estén funcionando con `./start_services.sh full` y ve a `localhost:3000` para la interfaz web.
|
||||
|
||||
También puedes usar el reconocimiento de voz configurando `listen = True` en el config. Solo para modo CLI.
|
||||
|
||||
Para salir, simplemente di/escribe `goodbye`.
|
||||
|
||||
Aquí hay algunos ejemplos de uso:
|
||||
|
||||
> *¡Haz un juego de serpiente en python!*
|
||||
|
||||
> *Busca en la web los mejores cafés en Rennes, Francia, y guarda una lista de tres con sus direcciones en rennes_cafes.txt.*
|
||||
|
||||
> *Escribe un programa en Go para calcular el factorial de un número, guárdalo como factorial.go en tu espacio de trabajo*
|
||||
|
||||
> *Busca en mi carpeta summer_pictures todos los archivos JPG, renómbralos con la fecha de hoy, y guarda una lista de archivos renombrados en photos_list.txt*
|
||||
|
||||
> *Busca en línea películas populares de ciencia ficción de 2024 y elige tres para ver esta noche. Guarda la lista en movie_night.txt.*
|
||||
|
||||
> *Busca en la web los últimos artículos de noticias sobre IA de 2025, selecciona tres, y escribe un script de Python para extraer sus títulos y resúmenes. Guarda el script como news_scraper.py y los resúmenes en ai_news.txt en /home/projects*
|
||||
|
||||
> *Viernes, busca en la web una API gratuita de precios de acciones, regístrate con supersuper7434567@gmail.com luego escribe un script de Python para obtener usando la API los precios diarios de Tesla, y guarda los resultados en stock_prices.csv*
|
||||
|
||||
*Ten en cuenta que las capacidades de llenado de formularios son aún experimentales y podrían fallar.*
|
||||
|
||||
Después de escribir tu consulta, AgenticSeek asignará el mejor agente para la tarea.
|
||||
|
||||
Debido a que este es un prototipo temprano, el sistema de enrutamiento de agentes podría no asignar siempre el agente correcto según tu consulta.
|
||||
|
||||
Por lo tanto, debes ser muy explícito en lo que quieres y cómo la IA podría proceder, por ejemplo, si quieres que realice una búsqueda web, no digas:
|
||||
|
||||
`¿Conoces algunos buenos países para viajar solo?`
|
||||
|
||||
En su lugar, pregunta:
|
||||
|
||||
`Haz una búsqueda web y averigua cuáles son los mejores países para viajar solo`
|
||||
Usa CLI: `uv run cli.py`
|
||||
|
||||
---
|
||||
|
||||
## **Configuración para ejecutar el LLM en tu propio servidor**
|
||||
## Uso
|
||||
|
||||
Si tienes una computadora potente o un servidor que puedes usar, pero quieres usarlo desde tu laptop, tienes la opción de ejecutar el LLM en un servidor remoto usando nuestro servidor llm personalizado.
|
||||
Asegúrate de que los servicios estén ejecutándose con `./start_services.sh full` y luego ve a `localhost:3000` para la interfaz web.
|
||||
|
||||
También puedes usar voz a texto configurando `listen = True`. Solo para modo CLI.
|
||||
|
||||
Para salir, simplemente di/escribe `goodbye`.
|
||||
|
||||
Algunos ejemplos de uso:
|
||||
|
||||
> *¡Haz un juego de la serpiente en python!*
|
||||
|
||||
> *Busca en la web los mejores cafés en Rennes, Francia, y guarda una lista de tres con sus direcciones en rennes_cafes.txt.*
|
||||
|
||||
> *Escribe un programa Go para calcular el factorial de un número, guárdalo como factorial.go en tu workspace*
|
||||
|
||||
> *Busca en la carpeta summer_pictures todos los archivos JPG, renómbralos con la fecha de hoy y guarda la lista de archivos renombrados en photos_list.txt*
|
||||
|
||||
> *Busca en línea películas de ciencia ficción populares de 2024 y elige tres para ver esta noche. Guarda la lista en movie_night.txt.*
|
||||
|
||||
> *Busca en la web los últimos artículos de noticias de IA de 2025, selecciona tres y escribe un script Python para extraer títulos y resúmenes. Guarda el script como news_scraper.py y los resúmenes en ai_news.txt en /home/projects*
|
||||
|
||||
> *Viernes, busca en la web una API gratuita de precios de acciones, regístrate con supersuper7434567@gmail.com y escribe un script Python para obtener los precios diarios de Tesla usando la API, guardando los resultados en stock_prices.csv*
|
||||
|
||||
*Ten en cuenta que el llenado de formularios sigue siendo experimental y puede fallar.*
|
||||
|
||||
Después de ingresar tu consulta, AgenticSeek asignará el mejor agente para la tarea.
|
||||
|
||||
Como este es un prototipo inicial, el sistema de enrutamiento de agentes puede no asignar siempre el agente correcto a tu consulta.
|
||||
|
||||
Por lo tanto, sé muy explícito sobre lo que quieres y cómo la IA podría proceder, por ejemplo, si quieres que realice una búsqueda web, no digas:
|
||||
|
||||
`¿Conoces algunos buenos países para viajar solo?`
|
||||
|
||||
En su lugar, di:
|
||||
|
||||
`Realiza una búsqueda web y descubre cuáles son los mejores países para viajar solo`
|
||||
|
||||
---
|
||||
|
||||
## **Configuración para ejecutar LLM en tu propio servidor**
|
||||
|
||||
Si tienes una computadora potente o un servidor al que puedes acceder, pero quieres usarlo desde tu laptop, puedes optar por ejecutar el LLM en un servidor remoto usando nuestro servidor llm personalizado.
|
||||
|
||||
En tu "servidor" que ejecutará el modelo de IA, obtén la dirección IP
|
||||
|
||||
```sh
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # ip local
|
||||
curl https://ipinfo.io/ip # ip pública
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # IP local
|
||||
curl https://ipinfo.io/ip # IP pública
|
||||
```
|
||||
|
||||
Nota: Para Windows o macOS, usa ipconfig o ifconfig respectivamente para encontrar la dirección IP.
|
||||
Nota: Para Windows o macOS, usa ipconfig o ifconfig para encontrar la dirección IP.
|
||||
|
||||
Clona el repositorio y entra en la carpeta `server/`.
|
||||
|
||||
@@ -317,11 +369,11 @@ Ejecuta el script del servidor.
|
||||
python3 app.py --provider ollama --port 3333
|
||||
```
|
||||
|
||||
Tienes la opción de usar `ollama` y `llamacpp` como servicio LLM.
|
||||
Puedes elegir entre usar `ollama` y `llamacpp` como servicio LLM.
|
||||
|
||||
Ahora en tu computadora personal:
|
||||
|
||||
Cambia el archivo `config.ini` para establecer `provider_name` a `server` y `provider_model` a `deepseek-r1:xxb`.
|
||||
Cambia el archivo `config.ini` para establecer `provider_name` como `server` y `provider_model` como `deepseek-r1:xxb`.
|
||||
Establece `provider_server_address` a la dirección IP de la máquina que ejecutará el modelo.
|
||||
|
||||
```sh
|
||||
@@ -332,40 +384,40 @@ provider_model = deepseek-r1:70b
|
||||
provider_server_address = http://x.x.x.x:3333
|
||||
```
|
||||
|
||||
Siguiente paso: [Iniciar servicios y ejecutar AgenticSeek](#Iniciar-servicios-y-ejecutar)
|
||||
Siguiente paso: [Iniciar servicios y ejecutar AgenticSeek](#iniciar-servicios-y-ejecutar)
|
||||
|
||||
---
|
||||
|
||||
## Voz a Texto
|
||||
|
||||
Advertencia: la voz a texto solo funciona en modo CLI por el momento.
|
||||
Advertencia: La voz a texto solo funciona en modo CLI en este momento.
|
||||
|
||||
Ten en cuenta que actualmente la voz a texto solo funciona en inglés.
|
||||
Ten en cuenta que la voz a texto solo funciona en inglés en este momento.
|
||||
|
||||
La funcionalidad de voz a texto está deshabilitada por defecto. Para habilitarla, establece la opción listen a True en el archivo config.ini:
|
||||
La funcionalidad de voz a texto está deshabilitada por defecto. Para habilitarla, establece listen en True en el archivo config.ini:
|
||||
|
||||
```
|
||||
listen = True
|
||||
```
|
||||
|
||||
Cuando está habilitada, la función de voz a texto escucha una palabra clave de activación, que es el nombre del agente, antes de comenzar a procesar tu entrada. Puedes personalizar el nombre del agente actualizando el valor `agent_name` en el archivo *config.ini*:
|
||||
Cuando está habilitado, la función de voz a texto escucha una palabra clave de activación, que es el nombre del agente, antes de procesar tu entrada. Puedes personalizar el nombre del agente actualizando el valor `agent_name` en *config.ini*:
|
||||
|
||||
```
|
||||
agent_name = Friday
|
||||
```
|
||||
|
||||
Para un reconocimiento óptimo, recomendamos usar un nombre común en inglés como "John" o "Emma" como nombre del agente.
|
||||
Para un mejor reconocimiento, recomendamos usar un nombre común en inglés como "John" o "Emma" como nombre de agente.
|
||||
|
||||
Una vez que veas que comienza a aparecer la transcripción, di el nombre del agente en voz alta para activarlo (por ejemplo, "Friday").
|
||||
Una vez que veas que comienza a aparecer la transcripción, di el nombre del agente en voz alta para activarlo (ej: "Friday").
|
||||
|
||||
Habla tu consulta claramente.
|
||||
Di tu consulta claramente.
|
||||
|
||||
Termina tu solicitud con una frase de confirmación para indicar al sistema que proceda. Ejemplos de frases de confirmación incluyen:
|
||||
```
|
||||
"do it", "go ahead", "execute", "run", "start", "thanks", "would ya", "please", "okay?", "proceed", "continue", "go on", "do that", "go it", "do you understand?"
|
||||
```
|
||||
|
||||
## Config
|
||||
## Configuración
|
||||
|
||||
Ejemplo de configuración:
|
||||
```
|
||||
@@ -373,144 +425,217 @@ Ejemplo de configuración:
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
provider_server_address = http://127.0.0.1:11434 # Ejemplo de Ollama; LM-Studio usa http://127.0.0.1:1234
|
||||
agent_name = Friday
|
||||
recover_last_session = False
|
||||
save_session = False
|
||||
speak = False
|
||||
listen = False
|
||||
|
||||
jarvis_personality = False
|
||||
languages = en zh
|
||||
languages = en zh # Lista de idiomas para TTS y enrutamiento potencial.
|
||||
[BROWSER]
|
||||
headless_browser = False
|
||||
stealth_mode = False
|
||||
```
|
||||
|
||||
**Explicación**:
|
||||
**Explicación de la configuración de `config.ini`**:
|
||||
|
||||
- is_local -> Ejecuta el agente localmente (True) o en un servidor remoto (False).
|
||||
* **Sección `[MAIN]`:**
|
||||
* `is_local`: `True` si usas proveedores de LLM locales (Ollama, LM-Studio, servidor local compatible con OpenAI) o la opción de servidor autoalojado. `False` si usas API basadas en la nube (OpenAI, Google, etc.).
|
||||
* `provider_name`: Especifica el proveedor de LLM.
|
||||
* Opciones locales: `ollama`, `lm-studio`, `openai` (para servidor local compatible con OpenAI), `server` (para configuración de servidor autoalojado).
|
||||
* Opciones de API: `openai`, `google`, `deepseek`, `huggingface`, `togetherAI`.
|
||||
* `provider_model`: Nombre o ID específico del modelo del proveedor seleccionado (ej: `deepseekcoder:6.7b` para Ollama, `gpt-3.5-turbo` para API de OpenAI, `mistralai/Mixtral-8x7B-Instruct-v0.1` para TogetherAI).
|
||||
* `provider_server_address`: La dirección de tu proveedor de LLM.
|
||||
* Para proveedores locales: ej: `http://127.0.0.1:11434` para Ollama, `http://127.0.0.1:1234` para LM-Studio.
|
||||
* Para el tipo de proveedor `server`: La dirección de tu servidor LLM autoalojado (ej: `http://your_server_ip:3333`).
|
||||
* Para API en la nube (`is_local = False`): Esto generalmente se ignora o puede dejarse en blanco, ya que los endpoints de API suelen ser manejados por las bibliotecas del cliente.
|
||||
* `agent_name`: El nombre del asistente de IA (ej: Friday). Si está habilitado, se utiliza como palabra de activación para voz a texto.
|
||||
* `recover_last_session`: `True` para intentar recuperar el estado de la sesión anterior, `False` para comenzar de nuevo.
|
||||
* `save_session`: `True` para guardar el estado de la sesión actual para una posible recuperación, `False` en caso contrario.
|
||||
* `speak`: `True` para habilitar la salida de voz de texto a voz, `False` para deshabilitar.
|
||||
* `listen`: `True` para habilitar la entrada de voz de voz a texto (solo modo CLI), `False` para deshabilitar.
|
||||
* `work_dir`: **Crítico:** El directorio donde AgenticSeek leerá/escribirá archivos. **Asegúrate de que esta ruta sea válida y accesible en tu sistema.**
|
||||
* `jarvis_personality`: `True` para usar prompts del sistema más al estilo "Jarvis" (experimental), `False` para usar prompts estándar.
|
||||
* `languages`: Lista de idiomas separados por comas (ej: `en, zh, fr`). Se utiliza para la selección de voz TTS (predeterminado el primero) y puede ayudar al enrutador LLM. Para evitar ineficiencias del enrutador, evita usar demasiados idiomas o idiomas muy similares.
|
||||
* **Sección `[BROWSER]`:**
|
||||
* `headless_browser`: `True` para ejecutar el navegador automatizado sin una ventana visible (recomendado para interfaz web o uso no interactivo). `False` para mostrar la ventana del navegador (útil para modo CLI o depuración).
|
||||
* `stealth_mode`: `True` para habilitar medidas que dificultan la detección de la automatización del navegador. Puede requerir la instalación manual de extensiones del navegador como anticaptcha.
|
||||
|
||||
- provider_name -> El proveedor a usar (uno de: `ollama`, `server`, `lm-studio`, `deepseek-api`)
|
||||
Esta sección resume los tipos de proveedores de LLM admitidos. Configúralos en `config.ini`.
|
||||
|
||||
- provider_model -> El modelo usado, ej., deepseek-r1:32b.
|
||||
**Proveedores locales (ejecutándose en tu propio hardware):**
|
||||
|
||||
- provider_server_address -> Dirección del servidor, ej., 127.0.0.1:11434 para local. Establece a cualquier cosa para API no local.
|
||||
| Nombre del proveedor en config.ini | `is_local` | Descripción | Sección de configuración |
|
||||
|-------------------------------|------------|-----------------------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| `ollama` | `True` | Proporciona LLM localmente fácilmente usando Ollama. | [Configuración para ejecutar LLM localmente en tu máquina](#configuración-para-ejecutar-llm-localmente-en-tu-máquina) |
|
||||
| `lm-studio` | `True` | Proporciona LLM localmente con LM-Studio. | [Configuración para ejecutar LLM localmente en tu máquina](#configuración-para-ejecutar-llm-localmente-en-tu-máquina) |
|
||||
| `openai` (para servidor local) | `True` | Conéctate a un servidor local que exponga una API compatible con OpenAI (ej: llama.cpp). | [Configuración para ejecutar LLM localmente en tu máquina](#configuración-para-ejecutar-llm-localmente-en-tu-máquina) |
|
||||
| `server` | `False` | Conéctate al servidor LLM autoalojado de AgenticSeek que se ejecuta en otra máquina. | [Configuración para ejecutar LLM en tu propio servidor](#configuración-para-ejecutar-llm-en-tu-propio-servidor) |
|
||||
|
||||
- agent_name -> Nombre del agente, ej., Friday. Usado como palabra de activación para TTS.
|
||||
**Proveedores de API (basados en la nube):**
|
||||
|
||||
- recover_last_session -> Reinicia desde la última sesión (True) o no (False).
|
||||
| Nombre del proveedor en config.ini | `is_local` | Descripción | Sección de configuración |
|
||||
|-------------------------------|------------|--------------------------------------------------|-----------------------------------------------------|
|
||||
| `openai` | `False` | Usa la API oficial de OpenAI (ej: GPT-3.5, GPT-4). | [Configuración para ejecutar con una API](#configuración-para-ejecutar-con-una-api) |
|
||||
| `google` | `False` | Usa modelos Google Gemini a través de API. | [Configuración para ejecutar con una API](#configuración-para-ejecutar-con-una-api) |
|
||||
| `deepseek` | `False` | Usa la API oficial de Deepseek. | [Configuración para ejecutar con una API](#configuración-para-ejecutar-con-una-api) |
|
||||
| `huggingface` | `False` | Usa Hugging Face Inference API. | [Configuración para ejecutar con una API](#configuración-para-ejecutar-con-una-api) |
|
||||
| `togetherAI` | `False` | Usa varios modelos abiertos a través de la API de TogetherAI. | [Configuración para ejecutar con una API](#configuración-para-ejecutar-con-una-api) |
|
||||
|
||||
- save_session -> Guarda datos de la sesión (True) o no (False).
|
||||
---
|
||||
## Solución de problemas
|
||||
|
||||
- speak -> Habilita salida de voz (True) o no (False).
|
||||
|
||||
- listen -> escucha entrada de voz (True) o no (False).
|
||||
|
||||
- jarvis_personality -> Usa una personalidad tipo JARVIS (True) o no (False). Esto simplemente cambia el archivo de prompt.
|
||||
|
||||
- languages -> La lista de idiomas soportados, necesaria para que el router llm funcione correctamente, evita poner demasiados o idiomas demasiado similares.
|
||||
|
||||
- headless_browser -> Ejecuta el navegador sin una ventana visible (True) o no (False).
|
||||
|
||||
- stealth_mode -> Hace más difícil la detección de bots. El único inconveniente es que tienes que instalar manualmente la extensión anticaptcha.
|
||||
|
||||
- languages -> Lista de idiomas soportados. Requerido para el sistema de enrutamiento de agentes. Cuanto más larga sea la lista de idiomas, más modelos se descargarán.
|
||||
|
||||
## Proveedores
|
||||
|
||||
La tabla a continuación muestra los proveedores disponibles:
|
||||
|
||||
| Proveedor | ¿Local? | Descripción |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | Sí | Ejecuta LLMs localmente con facilidad usando ollama como proveedor LLM |
|
||||
| server | Sí | Aloja el modelo en otra máquina, ejecuta tu máquina local |
|
||||
| lm-studio | Sí | Ejecuta LLM localmente con LM studio (`lm-studio`) |
|
||||
| openai | Depende | Usa API de ChatGPT (no privada) o API compatible con openai |
|
||||
| deepseek-api | No | API de Deepseek (no privada) |
|
||||
| huggingface| No | API de Hugging-Face (no privada) |
|
||||
| togetherAI | No | Usa API de together AI (no privada) |
|
||||
| google | No | Usa API de google gemini (no privada) |
|
||||
|
||||
Para seleccionar un proveedor cambia el config.ini:
|
||||
|
||||
```
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:5000
|
||||
```
|
||||
`is_local`: debe ser True para cualquier LLM ejecutándose localmente, de lo contrario False.
|
||||
|
||||
`provider_name`: Selecciona el proveedor a usar por su nombre, ver la lista de proveedores arriba.
|
||||
|
||||
`provider_model`: Establece el modelo a usar por el agente.
|
||||
|
||||
`provider_server_address`: puede establecerse a cualquier cosa si no estás usando el proveedor server.
|
||||
Si encuentras problemas, esta sección proporciona orientación.
|
||||
|
||||
# Problemas conocidos
|
||||
|
||||
## Problemas con Chromedriver
|
||||
## Problemas de ChromeDriver
|
||||
|
||||
**Error conocido #1:** *incompatibilidad de chromedriver*
|
||||
**Ejemplo de error:** `SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XXX`
|
||||
|
||||
### Causa principal
|
||||
La incompatibilidad de versión de ChromeDriver ocurre cuando:
|
||||
1. La versión de ChromeDriver que instalaste no coincide con la versión del navegador Chrome
|
||||
2. En entornos Docker, `undetected_chromedriver` puede descargar su propia versión de ChromeDriver, evitando los binarios montados
|
||||
|
||||
### Pasos de solución
|
||||
|
||||
#### 1. Verifica tu versión de Chrome
|
||||
Abre Google Chrome → `Configuración > Acerca de Chrome` para encontrar tu versión (ej: "Versión 134.0.6998.88")
|
||||
|
||||
#### 2. Descarga ChromeDriver coincidente
|
||||
|
||||
**Para Chrome 115 y versiones más recientes:** Usa [Chrome for Testing API](https://googlechromelabs.github.io/chrome-for-testing/)
|
||||
- Visita el panel de disponibilidad de Chrome for Testing
|
||||
- Encuentra tu versión de Chrome o la coincidencia disponible más cercana
|
||||
- Descarga ChromeDriver para tu sistema operativo (usa Linux64 para entornos Docker)
|
||||
|
||||
**Para versiones antiguas de Chrome:** Usa [Descargas heredadas de ChromeDriver](https://chromedriver.chromium.org/downloads)
|
||||
|
||||

|
||||
|
||||
#### 3. Instala ChromeDriver (elige un método)
|
||||
|
||||
**Método A: Directorio raíz del proyecto (recomendado para Docker)**
|
||||
```bash
|
||||
# Coloca el binario de chromedriver descargado en el directorio raíz del proyecto
|
||||
cp path/to/downloaded/chromedriver ./chromedriver
|
||||
chmod +x ./chromedriver # Hazlo ejecutable en Linux/macOS
|
||||
```
|
||||
|
||||
**Método B: PATH del sistema**
|
||||
```bash
|
||||
# Linux/macOS
|
||||
sudo mv chromedriver /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/chromedriver
|
||||
|
||||
# Windows: Coloca chromedriver.exe en una carpeta en PATH
|
||||
```
|
||||
|
||||
#### 4. Verifica la instalación
|
||||
```bash
|
||||
# Prueba la versión de ChromeDriver
|
||||
./chromedriver --version
|
||||
# O si está en PATH:
|
||||
chromedriver --version
|
||||
```
|
||||
|
||||
### Instrucciones específicas de Docker
|
||||
|
||||
⚠️ **Importante para usuarios de Docker:**
|
||||
- El método de montaje de volúmenes de Docker puede no funcionar con el modo sigiloso (`undetected_chromedriver`)
|
||||
- **Solución:** Coloca ChromeDriver en el directorio raíz del proyecto como `./chromedriver`
|
||||
- La aplicación lo detectará automáticamente y usará este binario
|
||||
- Deberías ver en los registros: `"Using ChromeDriver from project root: ./chromedriver"`
|
||||
|
||||
### Consejos para solución de problemas
|
||||
|
||||
1. **¿Sigues teniendo incompatibilidad de versión?**
|
||||
- Verifica que ChromeDriver sea ejecutable: `ls -la ./chromedriver`
|
||||
- Comprueba la versión de ChromeDriver: `./chromedriver --version`
|
||||
- Asegúrate de que coincida con tu versión del navegador Chrome
|
||||
|
||||
2. **¿Problemas con el contenedor Docker?**
|
||||
- Revisa los registros del backend: `docker logs backend`
|
||||
- Busca el mensaje: `"Using ChromeDriver from project root"`
|
||||
- Si no se encuentra, verifica que el archivo exista y sea ejecutable
|
||||
|
||||
3. **Versiones de Chrome for Testing**
|
||||
- Usa una coincidencia exacta cuando sea posible
|
||||
- Para la versión 134.0.6998.88, usa ChromeDriver 134.0.6998.165 (la versión disponible más cercana)
|
||||
- El número de versión principal debe coincidir (134 = 134)
|
||||
|
||||
### Matriz de compatibilidad de versiones
|
||||
|
||||
| Versión de Chrome | Versión de ChromeDriver | Estado |
|
||||
|----------------|---------------------|---------|
|
||||
| 134.0.6998.x | 134.0.6998.165 | ✅ Disponible |
|
||||
| 133.0.6943.x | 133.0.6943.141 | ✅ Disponible |
|
||||
| 132.0.6834.x | 132.0.6834.159 | ✅ Disponible |
|
||||
|
||||
*Para la compatibilidad más reciente, consulta el [Panel de Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)*
|
||||
|
||||
`Exception: Failed to initialize browser: Message: session not created: This version of ChromeDriver only supports Chrome version 113
|
||||
Current browser version is 134.0.6998.89 with binary path`
|
||||
|
||||
Esto ocurre si hay una incompatibilidad entre tu navegador y la versión de chromedriver.
|
||||
Esto sucede si tu navegador y la versión de chromedriver no coinciden.
|
||||
|
||||
Necesitas navegar para descargar la última versión:
|
||||
Necesitas navegar para descargar la versión más reciente:
|
||||
|
||||
https://developer.chrome.com/docs/chromedriver/downloads
|
||||
|
||||
Si estás usando Chrome versión 115 o más nueva ve a:
|
||||
Si usas Chrome versión 115 o superior, ve a:
|
||||
|
||||
https://googlechromelabs.github.io/chrome-for-testing/
|
||||
|
||||
Y descarga la versión de chromedriver que coincida con tu SO.
|
||||
y descarga la versión de chromedriver que coincida con tu sistema operativo.
|
||||
|
||||

|
||||
|
||||
Si esta sección está incompleta por favor crea un issue.
|
||||
Si esta sección está incompleta, abre un issue.
|
||||
|
||||
## Problemas con adaptadores de conexión
|
||||
## Problemas de adaptadores de conexión
|
||||
|
||||
```
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:11434/v1/chat/completions'
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:1234/v1/chat/completions'` (nota: el puerto puede variar)
|
||||
```
|
||||
|
||||
Asegúrate de tener `http://` antes de la dirección IP del proveedor:
|
||||
* **Causa:** Falta el prefijo `http://` en `provider_server_address` para `lm-studio` (u otro servidor local compatible con OpenAI similar) en `config.ini`, o apunta al puerto incorrecto.
|
||||
* **Solución:**
|
||||
* Asegúrate de que la dirección incluya `http://`. LM-Studio normalmente usa `http://127.0.0.1:1234` por defecto.
|
||||
* `config.ini` correcto: `provider_server_address = http://127.0.0.1:1234` (o tu puerto real del servidor LM-Studio).
|
||||
|
||||
`provider_server_address = http://127.0.0.1:11434`
|
||||
|
||||
## Se debe proporcionar la URL base de SearxNG
|
||||
## URL base de SearxNG no proporcionada
|
||||
|
||||
```
|
||||
raise ValueError("SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.")
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.`
|
||||
```
|
||||
|
||||
¿Quizás no moviste `.env.example` como `.env`? También puedes exportar SEARXNG_BASE_URL:
|
||||
Esto puede ocurrir si ejecutas el modo CLI con la URL base de searxng incorrecta.
|
||||
|
||||
`export SEARXNG_BASE_URL="http://127.0.0.1:8080"`
|
||||
SEARXNG_BASE_URL debe diferir según si ejecutas en Docker o en el host:
|
||||
|
||||
**Ejecutando en el host:** `SEARXNG_BASE_URL="http://localhost:8080"`
|
||||
|
||||
**Ejecutando completamente en Docker (interfaz web):** `SEARXNG_BASE_URL="http://searxng:8080"`
|
||||
|
||||
## FAQ
|
||||
|
||||
**P: ¿Qué hardware necesito?**
|
||||
|
||||
| Tamaño del Modelo | GPU | Comentario |
|
||||
| Tamaño del modelo | GPU | Comentarios |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| 7B | 8GB Vram | ⚠️ No recomendado. El rendimiento es pobre, alucinaciones frecuentes, y los agentes planificadores probablemente fallarán. |
|
||||
| 14B | 12 GB VRAM (ej. RTX 3060) | ✅ Usable para tareas simples. Puede tener dificultades con la navegación web y tareas de planificación. |
|
||||
| 32B | 24+ GB VRAM (ej. RTX 4090) | 🚀 Éxito con la mayoría de las tareas, aún puede tener dificultades con la planificación de tareas |
|
||||
| 70B+ | 48+ GB Vram (ej. mac studio) | 💪 Excelente. Recomendado para casos de uso avanzados. |
|
||||
| 7B | 8GB VRAM | ⚠️ No recomendado. Rendimiento pobre, alucinaciones frecuentes, los agentes de planificación pueden fallar. |
|
||||
| 14B | 12 GB VRAM (ej: RTX 3060) | ✅ Utilizable para tareas simples. Puede tener dificultades con la navegación web y la planificación de tareas. |
|
||||
| 32B | 24+ GB VRAM (ej: RTX 4090) | 🚀 Éxito en la mayoría de las tareas, aún puede tener dificultades con la planificación de tareas |
|
||||
| 70B+ | 48+ GB VRAM | 💪 Excelente. Recomendado para casos de uso avanzados. |
|
||||
|
||||
**P: ¿Por qué Deepseek R1 sobre otros modelos?**
|
||||
**P: ¿Qué hago si encuentro errores?**
|
||||
|
||||
Deepseek R1 sobresale en razonamiento y uso de herramientas para su tamaño. Creemos que es una buena opción para nuestras necesidades, otros modelos funcionan bien, pero Deepseek es nuestra elección principal.
|
||||
|
||||
**P: Obtengo un error al ejecutar `cli.py`. ¿Qué hago?**
|
||||
|
||||
Asegúrate de que local esté ejecutándose (`ollama serve`), tu `config.ini` coincida con tu proveedor, y las dependencias estén instaladas. Si nada funciona, no dudes en crear un issue.
|
||||
Asegúrate de que lo local esté ejecutándose (`ollama serve`), que tu `config.ini` coincida con tu proveedor y que las dependencias estén instaladas. Si nada funciona, no dudes en abrir un issue.
|
||||
|
||||
**P: ¿Realmente puede ejecutarse 100% localmente?**
|
||||
|
||||
@@ -518,17 +643,31 @@ Sí, con proveedores Ollama, lm-studio o server, todos los modelos de voz a text
|
||||
|
||||
**P: ¿Por qué debería usar AgenticSeek cuando tengo Manus?**
|
||||
|
||||
Esto comenzó como un Proyecto Secundario que hicimos por interés en los agentes de IA. Lo especial es que queremos usar modelos locales y evitar APIs.
|
||||
Nos inspiramos en Jarvis y Friday (películas de Iron man) para hacerlo "genial" pero para la funcionalidad tomamos más inspiración de Manus, porque eso es lo que la gente quiere en primer lugar: una alternativa local a manus.
|
||||
A diferencia de Manus, AgenticSeek prioriza la independencia de sistemas externos, dándote más control, privacidad y evitando costos de API.
|
||||
A diferencia de Manus, AgenticSeek prioriza la independencia de los sistemas externos, dándote más control, privacidad y evitando costos de API.
|
||||
|
||||
**P: ¿Quién está detrás de este proyecto?**
|
||||
|
||||
Este proyecto fue creado por mí, con dos amigos como mantenedores y contribuyentes de la comunidad de código abierto en GitHub. Solo somos individuos apasionados, no una startup, ni estamos afiliados a ninguna organización.
|
||||
|
||||
Cualquier cuenta de AgenticSeek en X además de mi cuenta personal (https://x.com/Martin993886460) es impostora.
|
||||
|
||||
## Contribuir
|
||||
|
||||
¡Buscamos desarrolladores para mejorar AgenticSeek! Revisa los issues o discusiones abiertas.
|
||||
¡Buscamos desarrolladores para mejorar AgenticSeek! Revisa los issues abiertos o discusiones.
|
||||
|
||||
[Guía de contribución](./docs/CONTRIBUTING.md)
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
## Patrocinadores:
|
||||
|
||||
¿Quieres mejorar las capacidades de AgenticSeek con funciones como búsqueda de vuelos, planificación de viajes o obtención de las mejores ofertas de compras? Considera usar SerpApi para crear herramientas personalizadas que desbloqueen más funcionalidades al estilo Jarvis. Con SerpApi, puedes acelerar tu agente para tareas profesionales mientras mantienes el control total.
|
||||
|
||||
<a href="https://serpapi.com/"><img src="./media/banners/sponsor_banner_serpapi.png" height="350" alt="SerpApi Banner" ></a>
|
||||
|
||||
¡Consulta [Contributing.md](./docs/CONTRIBUTING.md) para aprender cómo integrar herramientas personalizadas!
|
||||
|
||||
### **Patrocinadores**:
|
||||
|
||||
- [tatra-labs](https://github.com/tatra-labs)
|
||||
|
||||
## Mantenedores:
|
||||
|
||||
@@ -536,9 +675,8 @@ A diferencia de Manus, AgenticSeek prioriza la independencia de sistemas externo
|
||||
|
||||
> [antoineVIVIES](https://github.com/antoineVIVIES) | Hora de Taipei
|
||||
|
||||
> [steveh8758](https://github.com/steveh8758) | Hora de Taipei
|
||||
## Agradecimientos especiales:
|
||||
|
||||
## Agradecimientos Especiales:
|
||||
|
||||
> [tcsenpai](https://github.com/tcsenpai) y [plitc](https://github.com/plitc) Por ayudar con la dockerización del backend
|
||||
> [tcsenpai](https://github.com/tcsenpai) y [plitc](https://github.com/plitc) por ayudar con la dockerización del backend
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
|
||||
+379
-243
@@ -1,46 +1,50 @@
|
||||
# AgenticSeek : Alternative privée et locale à Manus.
|
||||
# AgenticSeek : Une Alternative Privée et Locale à Manus
|
||||
|
||||
<p align="center">
|
||||
<img align="center" src="./media/agentic_seek_logo.png" width="300" height="300" alt="Agentic Seek Logo">
|
||||
<p>
|
||||
|
||||
[English](./README.md) | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | Français | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md)
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md) | [Español](./README_ES.md)
|
||||
|
||||
*Une **alternative 100% locale à Manus AI**, cet assistant vocal autonome navigue sur le web, écrit du code et planifie des tâches tout en gardant toutes les données sur votre appareil. Conçu pour les modèles de raisonnement locaux, il fonctionne entièrement sur votre matériel, garantissant une confidentialité totale et aucune dépendance au cloud.*
|
||||
*Un assistant IA avec reconnaissance vocale qui est une **alternative 100% locale à Manus AI**, navigue de manière autonome sur le web, écrit du code et planifie des tâches tout en gardant toutes les données sur votre appareil. Conçu pour des modèles de raisonnement locaux, il fonctionne entièrement sur votre matériel, garantissant une confidentialité totale et zéro dépendance au cloud.*
|
||||
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
|
||||
### Pourquoi AgenticSeek ?
|
||||
### Pourquoi choisir AgenticSeek ?
|
||||
|
||||
* 🔒 100% Local & Privé – Tout fonctionne sur votre machine : pas de cloud, pas de partage de données. Vos fichiers, conversations et recherches restent privés.
|
||||
* 🔒 Totalement Local & Privé - Tout fonctionne sur votre machine, sans cloud, sans partage de données. Vos fichiers, conversations et recherches restent privés.
|
||||
|
||||
* 🌐 Navigation Web Intelligente – AgenticSeek peut naviguer sur Internet de façon autonome : recherche, lecture, extraction d’informations, remplissage de formulaires web — tout cela sans intervention.
|
||||
* 🌐 Navigation Web Intelligente - AgenticSeek peut naviguer sur Internet de manière autonome : rechercher, lire, extraire des informations, remplir des formulaires web, le tout sans intervention manuelle.
|
||||
|
||||
* 💻 Assistant de Codage Autonome – Besoin de code ? Il peut écrire, déboguer et exécuter des programmes en Python, C, Go, Java, et plus — sans supervision.
|
||||
* 💻 Assistant de Programmation Autonome - Besoin de code ? Il peut écrire, déboguer et exécuter des programmes en Python, C, Go, Java et plus encore, sans supervision.
|
||||
|
||||
* 🧠 Sélection Intelligente d’Agent – Vous demandez, il choisit automatiquement le meilleur agent pour la tâche. Comme une équipe d’experts à disposition.
|
||||
* 🧠 Sélection Intelligente d'Agents - Vous demandez, il choisit automatiquement le meilleur agent pour la tâche. Comme avoir une équipe d'experts toujours disponible.
|
||||
|
||||
* 📋 Planifie & Exécute des Tâches Complexes – De la planification de voyage à la gestion de projets complexes : il divise les grandes tâches en étapes et les réalise avec plusieurs agents IA.
|
||||
* 📋 Planifie et Exécute des Tâches Complexes - De la planification de voyage aux projets complexes, il peut décomposer de grandes tâches en étapes et les compléter en utilisant plusieurs agents IA.
|
||||
|
||||
* 🎙️ Contrôle Vocal – Voix et reconnaissance vocale rapides et futuristes, permettant de dialoguer comme avec une IA de film de science-fiction. (En développement)
|
||||
* 🎙️ Prise en Charge Vocale - Voix claire, rapide et futuriste avec reconnaissance vocale, vous permettant de converser comme avec votre IA personnelle de film de science-fiction. (En développement)
|
||||
|
||||
### **Démo**
|
||||
|
||||
> *Peux-tu rechercher le projet agenticSeek, découvrir les compétences requises, puis ouvrir le fichier CV_candidates.zip et me dire lesquels correspondent le mieux au projet ?*
|
||||
> *Peux-tu rechercher le projet agenticSeek, apprendre quelles compétences sont nécessaires, puis ouvrir CV_candidates.zip et me dire lesquels correspondent le mieux au projet ?*
|
||||
|
||||
https://github.com/user-attachments/assets/b8ca60e9-7b3b-4533-840e-08f9ac426316
|
||||
|
||||
Avertissement : Cette démo, y compris tous les fichiers affichés (ex : CV_candidates.zip), est entièrement fictive. Nous ne sommes pas une entreprise, nous recherchons des contributeurs open-source, pas des candidats.
|
||||
Avertissement : Cette démonstration et tous les fichiers qui apparaissent (ex: CV_candidates.zip) sont entièrement fictifs. Nous ne sommes pas une entreprise, nous recherchons des contributeurs open source, pas des candidats.
|
||||
|
||||
> 🛠⚠️️ **Travail en cours**
|
||||
> 🛠⚠️️ **Travail Actif en Cours**
|
||||
|
||||
> 🙏 Ce projet a commencé comme un projet annexe sans feuille de route ni financement. Il a dépassé toutes nos attentes en finissant dans GitHub Trending. Les contributions, retours et votre patience sont grandement appréciés.
|
||||
> 🙏 Ce projet a commencé comme un projet parallèle et n'a ni feuille de route ni financement. Il a grandi bien au-delà des attentes en apparaissant dans GitHub Trending. Les contributions, commentaires et de la patience sont profondément appréciés.
|
||||
|
||||
## Prérequis
|
||||
|
||||
Assurez-vous d’avoir chrome driver, docker et python3.10 installés.
|
||||
Avant de commencer, assurez-vous d'avoir installé :
|
||||
|
||||
Pour les problèmes liés à chrome driver, voir la section **Chromedriver**.
|
||||
* **Git:** Pour cloner le dépôt. [Télécharger Git](https://git-scm.com/downloads)
|
||||
* **Python 3.10.x:** Python 3.10.x est fortement recommandé. D'autres versions peuvent causer des erreurs de dépendance. [Télécharger Python 3.10](https://www.python.org/downloads/release/python-3100/) (sélectionnez la version 3.10.x).
|
||||
* **Docker Engine & Docker Compose:** Pour exécuter des services empaquetés comme SearxNG.
|
||||
* Installer Docker Desktop (inclut Docker Compose V2): [Windows](https://docs.docker.com/desktop/install/windows-install/) | [Mac](https://docs.docker.com/desktop/install/mac-install/) | [Linux](https://docs.docker.com/desktop/install/linux-install/)
|
||||
* Ou installer Docker Engine et Docker Compose séparément sur Linux: [Docker Engine](https://docs.docker.com/engine/install/) | [Docker Compose](https://docs.docker.com/compose/install/) (assurez-vous d'installer Compose V2, par exemple `sudo apt-get install docker-compose-plugin`).
|
||||
|
||||
### 1. **Cloner le dépôt et configurer**
|
||||
|
||||
@@ -53,64 +57,68 @@ mv .env.example .env
|
||||
### 2. Modifier le contenu du fichier .env
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||
SEARXNG_BASE_URL="http://searxng:8080" # Si vous exécutez en mode CLI sur l'hôte, utilisez 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='optionnel'
|
||||
DEEPSEEK_API_KEY='optionnel'
|
||||
OPENROUTER_API_KEY='optionnel'
|
||||
TOGETHER_API_KEY='optionnel'
|
||||
GOOGLE_API_KEY='optionnel'
|
||||
ANTHROPIC_API_KEY='optionnel'
|
||||
OPENAI_API_KEY='optional'
|
||||
DEEPSEEK_API_KEY='optional'
|
||||
OPENROUTER_API_KEY='optional'
|
||||
TOGETHER_API_KEY='optional'
|
||||
GOOGLE_API_KEY='optional'
|
||||
ANTHROPIC_API_KEY='optional'
|
||||
```
|
||||
|
||||
**Les clés API sont totalement optionnelles pour les utilisateurs qui choisissent d’exécuter le LLM localement. Ce qui est le but principal du projet. Laissez vide si vous avez le matériel suffisant.**
|
||||
Mettez à jour le fichier `.env` selon vos besoins :
|
||||
|
||||
Les variables d’environnement suivantes configurent les connexions et clés API de votre application.
|
||||
- **SEARXNG_BASE_URL**: Gardez inchangé sauf si vous exécutez en mode CLI sur l'hôte.
|
||||
- **REDIS_BASE_URL**: Gardez inchangé
|
||||
- **WORK_DIR**: Chemin vers le répertoire de travail local. AgenticSeek pourra lire et interagir avec ces fichiers.
|
||||
- **OLLAMA_PORT**: Numéro de port pour le service Ollama.
|
||||
- **LM_STUDIO_PORT**: Numéro de port pour le service LM Studio.
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: Port pour tout service LLM personnalisé supplémentaire.
|
||||
|
||||
Mettez à jour le fichier `.env` avec vos propres valeurs si besoin :
|
||||
|
||||
- **SEARXNG_BASE_URL** : Laisser inchangé
|
||||
- **REDIS_BASE_URL** : Laisser inchangé
|
||||
- **WORK_DIR** : Chemin vers votre dossier de travail local. AgenticSeek pourra lire et interagir avec ces fichiers.
|
||||
- **OLLAMA_PORT** : Port pour le service Ollama.
|
||||
- **LM_STUDIO_PORT** : Port pour le service LM Studio.
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT** : Port pour tout service LLM personnalisé.
|
||||
|
||||
Toutes les variables d’environnement de clé API ci-dessous sont **optionnelles**. Vous n’avez à les fournir que si vous souhaitez utiliser des API externes au lieu d’exécuter les LLM localement.
|
||||
**Les clés API sont complètement optionnelles pour ceux qui choisissent d'exécuter LLM localement, ce qui est l'objectif principal de ce projet. Laissez-les vides si vous avez du matériel suffisant.**
|
||||
|
||||
### 3. **Démarrer Docker**
|
||||
|
||||
Assurez-vous que Docker est installé et en cours d’exécution sur votre système. Vous pouvez démarrer Docker avec les commandes suivantes :
|
||||
Assurez-vous que Docker est installé et fonctionne sur votre système. Vous pouvez démarrer Docker avec les commandes suivantes :
|
||||
|
||||
- **Sur Linux/macOS :**
|
||||
Ouvrez un terminal et lancez :
|
||||
- **Linux/macOS:**
|
||||
Ouvrez un terminal et exécutez :
|
||||
```sh
|
||||
sudo systemctl start docker
|
||||
```
|
||||
Ou lancez Docker Desktop depuis votre menu d’applications si installé.
|
||||
Ou démarrez Docker Desktop depuis le menu des applications, s'il est installé.
|
||||
|
||||
- **Sur Windows :**
|
||||
Lancez Docker Desktop depuis le menu Démarrer.
|
||||
- **Windows:**
|
||||
Démarrez Docker Desktop depuis le menu Démarrer.
|
||||
|
||||
Vous pouvez vérifier que Docker fonctionne avec :
|
||||
Vous pouvez vérifier si Docker fonctionne en exécutant :
|
||||
```sh
|
||||
docker info
|
||||
```
|
||||
Si vous voyez des informations sur votre installation Docker, c’est que tout fonctionne.
|
||||
Si vous voyez des informations sur votre installation Docker, cela fonctionne correctement.
|
||||
|
||||
Consultez la [Liste des fournisseurs locaux](#liste-des-fournisseurs-locaux) ci-dessous pour un résumé.
|
||||
|
||||
Prochaine étape: [Exécuter AgenticSeek localement](#démarrer-les-services-et-exécuter)
|
||||
|
||||
*Si vous rencontrez des problèmes, consultez la section [Dépannage](#dépannage).*
|
||||
*Si votre matériel ne peut pas exécuter LLM localement, consultez [Configuration pour exécuter avec une API](#configuration-pour-exécuter-avec-une-api).*
|
||||
*Pour des explications détaillées de `config.ini`, consultez la [section Configuration](#configuration).*
|
||||
|
||||
---
|
||||
|
||||
## Configuration pour exécuter un LLM localement
|
||||
## Configuration pour exécuter LLM localement sur votre machine
|
||||
|
||||
**Configuration matérielle requise :**
|
||||
**Exigences matérielles:**
|
||||
|
||||
Pour exécuter des LLM localement, il vous faut un matériel suffisant. Au minimum, un GPU capable d’exécuter Qwen/Deepseek 14B est requis. Voir la FAQ pour des recommandations détaillées.
|
||||
Pour exécuter LLM localement, vous aurez besoin de matériel suffisant. Au minimum, une GPU capable d'exécuter Magistral, Qwen ou Deepseek 14B est requise. Consultez la FAQ pour des recommandations détaillées de modèle/performance.
|
||||
|
||||
**Démarrer votre fournisseur local**
|
||||
**Configurez votre fournisseur local**
|
||||
|
||||
Démarrez votre fournisseur local, par exemple avec ollama:
|
||||
|
||||
@@ -118,213 +126,255 @@ Démarrez votre fournisseur local, par exemple avec ollama :
|
||||
ollama serve
|
||||
```
|
||||
|
||||
Voir ci-dessous la liste des fournisseurs locaux supportés.
|
||||
Consultez la liste des fournisseurs locaux pris en charge ci-dessous.
|
||||
|
||||
**Mettre à jour le config.ini**
|
||||
**Mettre à jour config.ini**
|
||||
|
||||
Modifiez le fichier config.ini pour définir provider_name sur un fournisseur supporté et provider_model sur un modèle LLM supporté par votre fournisseur. Nous recommandons des modèles de raisonnement comme *Qwen* ou *Deepseek*.
|
||||
Changez le fichier config.ini pour définir provider_name sur un fournisseur pris en charge et provider_model sur un LLM pris en charge par votre fournisseur. Nous recommandons des modèles de raisonnement comme *Magistral* ou *Deepseek*.
|
||||
|
||||
Voir la **FAQ** à la fin du README pour le matériel requis.
|
||||
Consultez la **FAQ** à la fin du README pour le matériel nécessaire.
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
is_local = True # Si vous exécutez localement ou avec un fournisseur distant.
|
||||
is_local = True # Que vous exécutiez localement ou avec un fournisseur distant.
|
||||
provider_name = ollama # ou lm-studio, openai, etc.
|
||||
provider_model = deepseek-r1:14b # choisissez un modèle adapté à votre matériel
|
||||
provider_model = deepseek-r1:14b # choisissez un modèle compatible avec votre matériel
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
agent_name = Jarvis # nom de votre IA
|
||||
recover_last_session = True # reprendre la session précédente
|
||||
agent_name = Jarvis # le nom de votre IA
|
||||
recover_last_session = True # récupérer la session précédente
|
||||
save_session = True # mémoriser la session actuelle
|
||||
speak = False # synthèse vocale
|
||||
listen = False # Reconnaissance vocale, uniquement pour CLI, expérimental
|
||||
jarvis_personality = False # Personnalité "Jarvis" (expérimental)
|
||||
languages = en zh # Liste des langues, la synthèse vocale prendra la première par défaut
|
||||
speak = False # texte vers parole
|
||||
listen = False # parole vers texte, uniquement pour CLI, expérimental
|
||||
jarvis_personality = False # utiliser une personnalité plus "Jarvis" (expérimental)
|
||||
languages = en zh # Liste des langues, TTS utilisera la première de la liste par défaut
|
||||
[BROWSER]
|
||||
headless_browser = True # laisser inchangé sauf si utilisation CLI sur l’hôte.
|
||||
stealth_mode = True # Utilise selenium indétectable pour réduire la détection
|
||||
headless_browser = True # garder inchangé sauf si vous utilisez CLI sur l'hôte.
|
||||
stealth_mode = True # Utilise selenium indétectable pour réduire la détection du navigateur
|
||||
```
|
||||
|
||||
**Attention** :
|
||||
**Avertissement**:
|
||||
|
||||
- Le format du fichier `config.ini` ne supporte pas les commentaires.
|
||||
Ne copiez/collez pas la configuration d’exemple directement, car les commentaires provoqueront des erreurs. Modifiez manuellement le fichier `config.ini` avec vos paramètres, sans commentaires.
|
||||
- Le format du fichier `config.ini` ne prend pas en charge les commentaires.
|
||||
Ne copiez et collez pas directement la configuration d'exemple, car les commentaires causeront des erreurs. Modifiez plutôt manuellement le fichier `config.ini` avec votre configuration souhaitée, sans commentaires.
|
||||
|
||||
- Ne mettez *pas* provider_name à `openai` si vous utilisez LM-studio pour exécuter les LLM. Mettez-le à `lm-studio`.
|
||||
- *NE* définissez PAS provider_name sur `openai` si vous utilisez LM-studio pour exécuter LLM. Utilisez `lm-studio`.
|
||||
|
||||
- Certains fournisseurs (ex : lm-studio) nécessitent `http://` devant l’IP. Par exemple `http://127.0.0.1:1234`
|
||||
- Certains fournisseurs (ex: lm-studio) nécessitent `http://` avant l'IP. Exemple: `http://127.0.0.1:1234`
|
||||
|
||||
**Liste des fournisseurs locaux**
|
||||
|
||||
| Fournisseur | Local ? | Description |
|
||||
|--------------|---------|----------------------------------------------------------|
|
||||
| ollama | Oui | Exécutez des LLM localement facilement avec ollama |
|
||||
| lm-studio | Oui | Exécutez un LLM localement avec LM studio (`lm-studio`) |
|
||||
| openai | Oui | Utilise une API compatible openai (ex : serveur llama.cpp)|
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | Oui | Exécute LLM localement facilement en utilisant ollama |
|
||||
| lm-studio | Oui | Exécute LLM localement avec LM studio (définir `provider_name` = `lm-studio`)|
|
||||
| openai | Oui | Utilise une API compatible avec openai (ex: serveur llama.cpp) |
|
||||
|
||||
Étape suivante : [Démarrer les services et lancer AgenticSeek](#Start-services-and-Run)
|
||||
Prochaine étape: [Démarrer les services et exécuter AgenticSeek](#démarrer-les-services-et-exécuter)
|
||||
|
||||
*Voir la section **Problèmes connus** en cas de souci*
|
||||
*Si vous rencontrez des problèmes, consultez la section [Dépannage](#dépannage).*
|
||||
*Si votre matériel ne peut pas exécuter LLM localement, consultez [Configuration pour exécuter avec une API](#configuration-pour-exécuter-avec-une-api).*
|
||||
*Pour des explications détaillées de `config.ini`, consultez la [section Configuration](#configuration).*
|
||||
|
||||
*Voir la section **Utiliser une API** si votre matériel ne peut pas exécuter deepseek localement*
|
||||
## Configuration pour exécuter avec une API
|
||||
|
||||
*Voir la section **Config** pour une explication détaillée du fichier de configuration.*
|
||||
Cette configuration utilise des fournisseurs de LLM externes basés sur le cloud. Vous devrez obtenir des clés API du service choisi.
|
||||
|
||||
---
|
||||
**1. Choisissez un fournisseur d'API et obtenez une clé API:**
|
||||
|
||||
## Configuration pour utiliser une API
|
||||
Consultez la [Liste des fournisseurs d'API](#liste-des-fournisseurs-dapi) ci-dessous. Visitez leurs sites web pour vous inscrire et obtenir des clés API.
|
||||
|
||||
**L’utilisation d’une API est optionnelle, voir ci-dessus pour l’exécution locale.**
|
||||
|
||||
Définissez le fournisseur désiré dans le `config.ini`. Voir ci-dessous la liste des fournisseurs API.
|
||||
**2. Définissez votre clé API comme variable d'environnement:**
|
||||
|
||||
* **Linux/macOS:**
|
||||
Ouvrez un terminal et utilisez la commande `export`. Il est préférable de l'ajouter au fichier de configuration de votre shell (ex: `~/.bashrc`, `~/.zshrc`) pour qu'elle soit persistante.
|
||||
```sh
|
||||
export PROVIDER_API_KEY="your_api_key_here"
|
||||
# Remplacez PROVIDER_API_KEY par le nom de variable spécifique, ex: OPENAI_API_KEY, GOOGLE_API_KEY
|
||||
```
|
||||
Exemple TogetherAI:
|
||||
```sh
|
||||
export TOGETHER_API_KEY="xxxxxxxxxxxxxxxxxxxxxx"
|
||||
```
|
||||
* **Windows:**
|
||||
* **Invite de commandes (temporaire pour la session actuelle):**
|
||||
```cmd
|
||||
set PROVIDER_API_KEY=your_api_key_here
|
||||
```
|
||||
* **PowerShell (temporaire pour la session actuelle):**
|
||||
```powershell
|
||||
$env:PROVIDER_API_KEY="your_api_key_here"
|
||||
```
|
||||
* **Permanent:** Recherchez "variables d'environnement" dans la barre de recherche Windows, cliquez sur "Modifier les variables d'environnement système", puis sur le bouton "Variables d'environnement...". Ajoutez une nouvelle variable utilisateur avec le nom approprié (ex: `OPENAI_API_KEY`) et votre clé comme valeur.
|
||||
|
||||
*(Pour plus de détails, consultez la FAQ: [Comment configurer une clé API ?](#comment-configurer-une-clé-api)).*
|
||||
|
||||
|
||||
**3. Mettez à jour `config.ini`:**
|
||||
```ini
|
||||
[MAIN]
|
||||
is_local = False
|
||||
provider_name = google
|
||||
provider_model = gemini-2.0-flash
|
||||
provider_server_address = 127.0.0.1:5000 # sans importance
|
||||
provider_name = openai # ou google, deepseek, togetherAI, huggingface
|
||||
provider_model = gpt-3.5-turbo # ou gemini-1.5-flash, deepseek-chat, mistralai/Mixtral-8x7B-Instruct-v0.1, etc.
|
||||
provider_server_address = # Lorsque is_local = False, généralement ignoré ou peut être laissé vide pour la plupart des API
|
||||
# ... autres configurations ...
|
||||
```
|
||||
Attention : Ne laissez pas d’espace à la fin de la config.
|
||||
*Avertissement:* Assurez-vous qu'il n'y a pas d'espaces à la fin des valeurs dans config.
|
||||
|
||||
Exportez votre clé API : `export <<PROVIDER>>_API_KEY="xxx"`
|
||||
**Liste des fournisseurs d'API**
|
||||
|
||||
Exemple : export `TOGETHER_API_KEY="xxxxx"`
|
||||
| Fournisseur | `provider_name` | Local ? | Description | Lien de clé API (exemple) |
|
||||
|--------------|-----------------|--------|---------------------------------------------------|---------------------------------------------|
|
||||
| OpenAI | `openai` | Non | Utilise les modèles ChatGPT via l'API OpenAI. | [platform.openai.com/signup](https://platform.openai.com/signup) |
|
||||
| Google Gemini| `google` | Non | Utilise les modèles Google Gemini via Google AI Studio. | [aistudio.google.com/keys](https://aistudio.google.com/keys) |
|
||||
| Deepseek | `deepseek` | Non | Utilise les modèles Deepseek via leur API. | [platform.deepseek.com](https://platform.deepseek.com) |
|
||||
| Hugging Face | `huggingface` | Non | Utilise les modèles du Hugging Face Inference API. | [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) |
|
||||
| TogetherAI | `togetherAI` | Non | Utilise divers modèles open source via l'API TogetherAI.| [api.together.ai/settings/api-keys](https://api.together.ai/settings/api-keys) |
|
||||
|
||||
**Liste des fournisseurs API**
|
||||
*Note:*
|
||||
* Nous ne recommandons pas d'utiliser `gpt-4o` ou d'autres modèles OpenAI pour la navigation web complexe et la planification de tâches, car l'optimisation actuelle des prompts cible des modèles comme Deepseek.
|
||||
* Les tâches de codage/bash peuvent échouer avec Gemini, car il a tendance à ignorer notre format de prompt optimisé pour Deepseek r1.
|
||||
* Lorsque `is_local = False`, `provider_server_address` dans `config.ini` n'est généralement pas utilisé, car les endpoints d'API sont généralement gérés par les bibliothèques du fournisseur correspondant.
|
||||
|
||||
| Fournisseur | Local ? | Description |
|
||||
|--------------|---------|----------------------------------------------------------|
|
||||
| openai | Selon | Utilise l’API ChatGPT |
|
||||
| deepseek | Non | API Deepseek (non privé) |
|
||||
| huggingface | Non | API Hugging-Face (non privé) |
|
||||
| togetherAI | Non | Utilise l’API together AI (non privé) |
|
||||
| google | Non | Utilise l’API gemini de Google (non privé) |
|
||||
Prochaine étape: [Démarrer les services et exécuter AgenticSeek](#démarrer-les-services-et-exécuter)
|
||||
|
||||
Notez que le codage/bash peut échouer avec gemini, qui ignore parfois le format demandé, optimisé pour deepseek r1. Les modèles comme gpt-4o donnent aussi de moins bons résultats avec notre prompt.
|
||||
*Si vous rencontrez des problèmes, consultez la section **Problèmes connus***
|
||||
|
||||
Étape suivante : [Démarrer les services et lancer AgenticSeek](#Start-services-and-Run)
|
||||
|
||||
*Voir la section **Problèmes connus** en cas de souci*
|
||||
|
||||
*Voir la section **Config** pour une explication détaillée du fichier de configuration.*
|
||||
*Pour des explications détaillées du fichier de configuration, consultez la **section Configuration**.*
|
||||
|
||||
---
|
||||
|
||||
## Démarrer les services et lancer AgenticSeek
|
||||
## Démarrer les services et exécuter
|
||||
|
||||
Démarrez les services requis. Cela lancera tous les services du docker-compose.yml, dont :
|
||||
Par défaut, AgenticSeek s'exécute entièrement dans Docker.
|
||||
|
||||
**Option 1:** Exécuter dans Docker avec interface web:
|
||||
|
||||
Démarrez les services nécessaires. Cela démarrera tous les services du docker-compose.yml, y compris:
|
||||
- searxng
|
||||
- redis (requis par searxng)
|
||||
- redis (requis pour searxng)
|
||||
- frontend
|
||||
- backend (si vous utilisez `full`)
|
||||
- backend (si vous utilisez `full` pour l'interface web)
|
||||
|
||||
```sh
|
||||
./start_services.sh full # MacOS
|
||||
start start_services.cmd full # Windows
|
||||
```
|
||||
|
||||
**Attention :** Cette étape téléchargera et chargera toutes les images Docker, ce qui peut prendre jusqu’à 30 minutes. Après le démarrage, attendez que le backend soit bien lancé (vous devriez voir backend: <info> dans les logs) avant d’envoyer des messages. Le backend peut mettre plus de temps à démarrer.
|
||||
**Avertissement:** Cette étape téléchargera et chargera toutes les images Docker, ce qui peut prendre jusqu'à 30 minutes. Après avoir démarré les services, attendez que le service backend soit complètement opérationnel (vous devriez voir **backend: "GET /health HTTP/1.1" 200 OK** dans les logs) avant d'envoyer des messages. Lors du premier démarrage, le service backend peut prendre 5 minutes pour démarrer.
|
||||
|
||||
Allez sur `http://localhost:3000/` pour accéder à l’interface web.
|
||||
Allez à `http://localhost:3000/` et vous devriez voir l'interface web.
|
||||
|
||||
**Optionnel : Utiliser l’interface CLI :**
|
||||
*Dépannage du démarrage des services:* Si ces scripts échouent, assurez-vous que Docker Engine fonctionne et que Docker Compose (V2, `docker compose`) est correctement installé. Vérifiez les messages d'erreur dans la sortie du terminal. Consultez [FAQ: Aide ! J'obtiens des erreurs lors de l'exécution d'AgenticSeek ou de ses scripts.](#faq-dépannage)
|
||||
|
||||
Pour utiliser le mode CLI, vous devrez installer les paquets sur l’hôte :
|
||||
**Option 2:** Mode CLI:
|
||||
|
||||
Pour exécuter avec l'interface CLI, vous devez installer les packages sur l'hôte:
|
||||
|
||||
```sh
|
||||
./install.sh
|
||||
./install.bat # windows
|
||||
```
|
||||
|
||||
Démarrez les services :
|
||||
Ensuite, vous devez changer SEARXNG_BASE_URL dans `config.ini` en:
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://localhost:8080"
|
||||
```
|
||||
|
||||
Démarrez les services nécessaires. Cela démarrera certains services du docker-compose.yml, y compris:
|
||||
- searxng
|
||||
- redis (requis pour searxng)
|
||||
- frontend
|
||||
|
||||
```sh
|
||||
./start_services.sh # MacOS
|
||||
start start_services.cmd # Windows
|
||||
```
|
||||
|
||||
Puis lancez : `uv run cli.py`
|
||||
Exécutez: uv run: `uv run python -m ensurepip` pour vous assurer que uv a pip activé.
|
||||
|
||||
Utilisez CLI: `uv run cli.py`
|
||||
|
||||
---
|
||||
|
||||
## Utilisation
|
||||
|
||||
Assurez-vous que les services sont lancés avec `./start_services.sh full` et allez sur `localhost:3000` pour l’interface web.
|
||||
Assurez-vous que les services fonctionnent avec `./start_services.sh full` puis allez à `localhost:3000` pour l'interface web.
|
||||
|
||||
Vous pouvez aussi utiliser la reconnaissance vocale en mettant `listen = True` dans la config (mode CLI uniquement).
|
||||
Vous pouvez également utiliser la parole vers texte en définissant `listen = True`. Uniquement pour le mode CLI.
|
||||
|
||||
Pour quitter, dites/tapez simplement `goodbye`.
|
||||
|
||||
Exemples d’utilisation :
|
||||
Quelques exemples d'utilisation:
|
||||
|
||||
> *Fais un jeu du serpent en python !*
|
||||
> *Fais un jeu de serpent en python !*
|
||||
|
||||
> *Recherche les meilleurs cafés à Rennes, France, et enregistre une liste de trois avec leurs adresses dans rennes_cafes.txt.*
|
||||
> *Recherche sur le web les meilleurs cafés à Rennes, France, et sauvegarde une liste de trois avec leurs adresses dans rennes_cafes.txt.*
|
||||
|
||||
> *Écris un programme Go pour calculer la factorielle d’un nombre, sauvegarde-le sous factorial.go dans ton espace de travail*
|
||||
> *Écris un programme Go pour calculer la factorielle d'un nombre, sauvegarde-le comme factorial.go dans ton workspace*
|
||||
|
||||
> *Cherche dans mon dossier summer_pictures tous les fichiers JPG, renomme-les avec la date du jour, et enregistre la liste dans photos_list.txt*
|
||||
> *Recherche dans le dossier summer_pictures tous les fichiers JPG, renomme-les avec la date d'aujourd'hui et sauvegarde la liste des fichiers renommés dans photos_list.txt*
|
||||
|
||||
> *Recherche en ligne les films de science-fiction populaires de 2024 et choisis-en trois à regarder ce soir. Sauvegarde la liste dans movie_night.txt.*
|
||||
|
||||
> *Recherche les derniers articles d’actualité sur l’IA de 2025, sélectionne-en trois, et écris un script Python pour extraire leurs titres et résumés. Sauvegarde le script sous news_scraper.py et les résumés dans ai_news.txt dans /home/projects*
|
||||
> *Recherche sur le web les derniers articles d'actualité sur l'IA de 2025, sélectionne-en trois et écris un script Python pour extraire les titres et résumés. Sauvegarde le script comme news_scraper.py et les résumés dans ai_news.txt dans /home/projects*
|
||||
|
||||
> *Vendredi, cherche une API gratuite de prix d’actions, inscris-toi avec supersuper7434567@gmail.com puis écris un script Python pour récupérer les prix quotidiens de Tesla, et sauvegarde les résultats dans stock_prices.csv*
|
||||
> *Vendredi, recherche sur le web une API gratuite de prix d'actions, inscris-toi avec supersuper7434567@gmail.com et écris un script Python pour obtenir les prix quotidiens de Tesla en utilisant l'API, en sauvegardant les résultats dans stock_prices.csv*
|
||||
|
||||
*Note : le remplissage de formulaires est encore expérimental et peut échouer.*
|
||||
*Notez que le remplissage de formulaires est toujours expérimental et peut échouer.*
|
||||
|
||||
Après avoir saisi votre requête, AgenticSeek choisira le meilleur agent pour la tâche.
|
||||
Après avoir saisi votre requête, AgenticSeek attribuera le meilleur agent pour la tâche.
|
||||
|
||||
Comme il s’agit d’un prototype, le système de routage d’agent peut ne pas toujours choisir le bon agent selon votre requête.
|
||||
Comme il s'agit d'un prototype initial, le système de routage des agents peut ne pas toujours attribuer l'agent correct à votre requête.
|
||||
|
||||
Soyez donc explicite sur ce que vous voulez et comment l’IA doit procéder. Par exemple, pour une recherche web, ne dites pas :
|
||||
Par conséquent, soyez très explicite sur ce que vous voulez et comment l'IA pourrait procéder, par exemple si vous voulez qu'elle effectue une recherche web, ne dites pas:
|
||||
|
||||
`Connais-tu de bons pays pour voyager en solo ?`
|
||||
`Connais-tu de bons pays pour voyager seul ?`
|
||||
|
||||
Dites plutôt:
|
||||
|
||||
`Fais une recherche web et trouve les meilleurs pays pour voyager en solo`
|
||||
`Effectue une recherche web et découvre quels sont les meilleurs pays pour voyager seul`
|
||||
|
||||
---
|
||||
|
||||
## **Exécuter le LLM sur votre propre serveur**
|
||||
## **Configuration pour exécuter LLM sur votre propre serveur**
|
||||
|
||||
Si vous avez un ordinateur ou un serveur puissant, mais souhaitez l’utiliser depuis votre laptop, vous pouvez exécuter le LLM sur un serveur distant via notre serveur LLM personnalisé.
|
||||
Si vous avez un ordinateur puissant ou un serveur auquel vous pouvez accéder, mais que vous voulez l'utiliser depuis votre ordinateur portable, vous pouvez choisir d'exécuter le LLM sur un serveur distant en utilisant notre serveur llm personnalisé.
|
||||
|
||||
Sur votre "serveur" qui exécutera le modèle IA, récupérez l’adresse IP :
|
||||
Sur votre "serveur" qui exécutera le modèle d'IA, obtenez l'adresse IP
|
||||
|
||||
```sh
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # ip locale
|
||||
curl https://ipinfo.io/ip # ip publique
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # IP locale
|
||||
curl https://ipinfo.io/ip # IP publique
|
||||
```
|
||||
|
||||
Note : Sous Windows ou macOS, utilisez ipconfig ou ifconfig pour trouver l’adresse IP.
|
||||
Note: Pour Windows ou macOS, utilisez ipconfig ou ifconfig pour trouver l'adresse IP.
|
||||
|
||||
Clonez le dépôt et entrez dans le dossier `server/` :
|
||||
Clonez le dépôt et entrez dans le dossier `server/`.
|
||||
|
||||
```sh
|
||||
git clone --depth 1 https://github.com/Fosowl/agenticSeek.git
|
||||
cd agenticSeek/llm_server/
|
||||
```
|
||||
|
||||
Installez les dépendances spécifiques au serveur :
|
||||
Installez les exigences spécifiques au serveur:
|
||||
|
||||
```sh
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
Lancez le script serveur :
|
||||
Exécutez le script du serveur.
|
||||
|
||||
```sh
|
||||
python3 app.py --provider ollama --port 3333
|
||||
```
|
||||
|
||||
Vous pouvez choisir entre `ollama` et `llamacpp` comme service LLM.
|
||||
Vous pouvez choisir d'utiliser `ollama` et `llamacpp` comme service LLM.
|
||||
|
||||
Sur votre ordinateur personnel :
|
||||
Maintenant sur votre ordinateur personnel:
|
||||
|
||||
Modifiez le fichier `config.ini` pour mettre `provider_name` à `server` et `provider_model` à `deepseek-r1:xxb`.
|
||||
Mettez `provider_server_address` à l’adresse IP de la machine qui exécute le modèle.
|
||||
Changez le fichier `config.ini` pour définir `provider_name` sur `server` et `provider_model` sur `deepseek-r1:xxb`.
|
||||
Définissez `provider_server_address` sur l'adresse IP de la machine qui exécutera le modèle.
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
@@ -334,203 +384,290 @@ provider_model = deepseek-r1:70b
|
||||
provider_server_address = http://x.x.x.x:3333
|
||||
```
|
||||
|
||||
Étape suivante : [Démarrer les services et lancer AgenticSeek](#Start-services-and-Run)
|
||||
Prochaine étape: [Démarrer les services et exécuter AgenticSeek](#démarrer-les-services-et-exécuter)
|
||||
|
||||
---
|
||||
|
||||
## Reconnaissance Vocale
|
||||
## Parole vers Texte
|
||||
|
||||
Attention : la reconnaissance vocale ne fonctionne qu’en mode CLI pour l’instant.
|
||||
Avertissement: La speech-to-text ne fonctionne qu'en mode CLI pour le moment.
|
||||
|
||||
Notez qu’actuellement la reconnaissance vocale ne fonctionne qu’en anglais.
|
||||
Notez que la parole vers texte ne fonctionne qu'en anglais pour le moment.
|
||||
|
||||
La fonctionnalité de reconnaissance vocale est désactivée par défaut. Pour l’activer, mettez listen à True dans le fichier config.ini :
|
||||
La fonctionnalité de parole vers texte est désactivée par défaut. Pour l'activer, définissez listen sur True dans le fichier config.ini:
|
||||
|
||||
```
|
||||
listen = True
|
||||
```
|
||||
|
||||
Quand activée, la reconnaissance vocale attend un mot-clé déclencheur, qui est le nom de l’agent, avant de commencer à traiter votre entrée. Vous pouvez personnaliser le nom de l’agent via `agent_name` dans *config.ini* :
|
||||
Lorsqu'elle est activée, la fonction de parole vers texte écoute un mot-clé de déclenchement, qui est le nom de l'agent, avant de traiter votre entrée. Vous pouvez personnaliser le nom de l'agent en mettant à jour la valeur `agent_name` dans *config.ini*:
|
||||
|
||||
```
|
||||
agent_name = Friday
|
||||
```
|
||||
|
||||
Pour une reconnaissance optimale, nous recommandons d’utiliser un prénom anglais courant comme "John" ou "Emma" comme nom d’agent.
|
||||
Pour une meilleure reconnaissance, nous recommandons d'utiliser un nom commun en anglais comme "John" ou "Emma" comme nom d'agent.
|
||||
|
||||
Une fois la transcription affichée, dites le nom de l’agent à voix haute pour le réveiller (ex : "Friday").
|
||||
Une fois que vous voyez la transcription commencer à apparaître, dites le nom de l'agent à haute voix pour le réveiller (ex: "Friday").
|
||||
|
||||
Énoncez clairement votre requête.
|
||||
Dites votre requête clairement.
|
||||
|
||||
Terminez votre demande par une phrase de confirmation pour signaler au système de procéder. Exemples :
|
||||
Terminez votre demande par une phrase de confirmation pour indiquer au système de continuer. Les exemples de phrases de confirmation incluent:
|
||||
```
|
||||
"do it", "go ahead", "execute", "run", "start", "thanks", "would ya", "please", "okay?", "proceed", "continue", "go on", "do that", "go it", "do you understand?"
|
||||
```
|
||||
|
||||
## Config
|
||||
## Configuration
|
||||
|
||||
Exemple de config :
|
||||
Exemple de configuration:
|
||||
```
|
||||
[MAIN]
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
provider_server_address = http://127.0.0.1:11434 # Exemple Ollama; LM-Studio utilise http://127.0.0.1:1234
|
||||
agent_name = Friday
|
||||
recover_last_session = False
|
||||
save_session = False
|
||||
speak = False
|
||||
listen = False
|
||||
|
||||
jarvis_personality = False
|
||||
languages = en zh
|
||||
languages = en zh # Liste des langues pour TTS et routage potentiel.
|
||||
[BROWSER]
|
||||
headless_browser = False
|
||||
stealth_mode = False
|
||||
```
|
||||
|
||||
**Explications** :
|
||||
**Explication des paramètres de `config.ini`**:
|
||||
|
||||
- is_local -> Exécute l’agent localement (True) ou sur un serveur distant (False).
|
||||
* **Section `[MAIN]`:**
|
||||
* `is_local`: `True` si vous utilisez des fournisseurs de LLM locaux (Ollama, LM-Studio, serveur local compatible OpenAI) ou l'option de serveur auto-hébergé. `False` si vous utilisez des API basées sur le cloud (OpenAI, Google, etc.).
|
||||
* `provider_name`: Spécifie le fournisseur de LLM.
|
||||
* Options locales: `ollama`, `lm-studio`, `openai` (pour serveur local compatible OpenAI), `server` (pour configuration de serveur auto-hébergé).
|
||||
* Options d'API: `openai`, `google`, `deepseek`, `huggingface`, `togetherAI`.
|
||||
* `provider_model`: Nom ou ID spécifique du modèle du fournisseur sélectionné (ex: `deepseekcoder:6.7b` pour Ollama, `gpt-3.5-turbo` pour API OpenAI, `mistralai/Mixtral-8x7B-Instruct-v0.1` pour TogetherAI).
|
||||
* `provider_server_address`: L'adresse de votre fournisseur de LLM.
|
||||
* Pour les fournisseurs locaux: ex: `http://127.0.0.1:11434` pour Ollama, `http://127.0.0.1:1234` pour LM-Studio.
|
||||
* Pour le type de fournisseur `server`: L'adresse de votre serveur LLM auto-hébergé (ex: `http://your_server_ip:3333`).
|
||||
* Pour les API cloud (`is_local = False`): Ceci est généralement ignoré ou peut être laissé vide, car les endpoints d'API sont généralement gérés par les bibliothèques clientes.
|
||||
* `agent_name`: Le nom de l'assistant IA (ex: Friday). Si activé, utilisé comme mot de déclenchement pour la parole vers texte.
|
||||
* `recover_last_session`: `True` pour tenter de récupérer l'état de la session précédente, `False` pour recommencer.
|
||||
* `save_session`: `True` pour sauvegarder l'état de la session actuelle pour une récupération potentielle, `False` sinon.
|
||||
* `speak`: `True` pour activer la sortie vocale de texte vers parole, `False` pour désactiver.
|
||||
* `listen`: `True` pour activer l'entrée vocale de parole vers texte (uniquement mode CLI), `False` pour désactiver.
|
||||
* `work_dir`: **Critique:** Le répertoire où AgenticSeek lira/écrira des fichiers. **Assurez-vous que ce chemin est valide et accessible sur votre système.**
|
||||
* `jarvis_personality`: `True` pour utiliser des invites système plus "Jarvis-like" (expérimental), `False` pour utiliser des invites standard.
|
||||
* `languages`: Liste de langues séparées par des virgules (ex: `en, zh, fr`). Utilisé pour la sélection de voix TTS (première par défaut) et peut aider le routeur LLM. Pour éviter les inefficacités du routeur, évitez d'utiliser trop de langues ou des langues très similaires.
|
||||
* **Section `[BROWSER]`:**
|
||||
* `headless_browser`: `True` pour exécuter le navigateur automatisé sans fenêtre visible (recommandé pour l'interface web ou l'utilisation non interactive). `False` pour afficher la fenêtre du navigateur (utile pour le mode CLI ou le débogage).
|
||||
* `stealth_mode`: `True` pour activer des mesures qui rendent plus difficile la détection de l'automatisation du navigateur. Peut nécessiter l'installation manuelle d'extensions de navigateur comme anticaptcha.
|
||||
|
||||
- provider_name -> Fournisseur à utiliser (parmi : `ollama`, `server`, `lm-studio`, `deepseek-api`)
|
||||
Cette section résume les types de fournisseurs de LLM pris en charge. Configurez-les dans `config.ini`.
|
||||
|
||||
- provider_model -> Modèle utilisé, ex : deepseek-r1:32b.
|
||||
**Fournisseurs locaux (fonctionnant sur votre propre matériel):**
|
||||
|
||||
- provider_server_address -> Adresse du serveur, ex : 127.0.0.1:11434 pour local. Mettre n’importe quoi pour une API non locale.
|
||||
| Nom du fournisseur dans config.ini | `is_local` | Description | Section de configuration |
|
||||
|-------------------------------|------------|-----------------------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| `ollama` | `True` | Fournit LLM localement facilement en utilisant Ollama. | [Configuration pour exécuter LLM localement sur votre machine](#configuration-pour-exécuter-llm-localement-sur-votre-machine) |
|
||||
| `lm-studio` | `True` | Fournit LLM localement avec LM-Studio. | [Configuration pour exécuter LLM localement sur votre machine](#configuration-pour-exécuter-llm-localement-sur-votre-machine) |
|
||||
| `openai` (pour serveur local) | `True` | Connectez-vous à un serveur local exposant une API compatible OpenAI (ex: llama.cpp). | [Configuration pour exécuter LLM localement sur votre machine](#configuration-pour-exécuter-llm-localement-sur-votre-machine) |
|
||||
| `server` | `False` | Connectez-vous au serveur LLM auto-hébergé d'AgenticSeek fonctionnant sur une autre machine. | [Configuration pour exécuter LLM sur votre propre serveur](#configuration-pour-exécuter-llm-sur-votre-propre-serveur) |
|
||||
|
||||
- agent_name -> Nom de l’agent, ex : Friday. Utilisé comme mot-clé pour la reconnaissance vocale.
|
||||
**Fournisseurs d'API (basés sur le cloud):**
|
||||
|
||||
- recover_last_session -> Reprend la dernière session (True) ou non (False).
|
||||
| Nom du fournisseur dans config.ini | `is_local` | Description | Section de configuration |
|
||||
|-------------------------------|------------|--------------------------------------------------|-----------------------------------------------------|
|
||||
| `openai` | `False` | Utilise l'API officielle d'OpenAI (ex: GPT-3.5, GPT-4). | [Configuration pour exécuter avec une API](#configuration-pour-exécuter-avec-une-api) |
|
||||
| `google` | `False` | Utilise les modèles Google Gemini via API. | [Configuration pour exécuter avec une API](#configuration-pour-exécuter-avec-une-api) |
|
||||
| `deepseek` | `False` | Utilise l'API officielle de Deepseek. | [Configuration pour exécuter avec une API](#configuration-pour-exécuter-avec-une-api) |
|
||||
| `huggingface` | `False` | Utilise Hugging Face Inference API. | [Configuration pour exécuter avec une API](#configuration-pour-exécuter-avec-une-api) |
|
||||
| `togetherAI` | `False` | Utilise divers modèles ouverts via l'API TogetherAI. | [Configuration pour exécuter avec une API](#configuration-pour-exécuter-avec-une-api) |
|
||||
|
||||
- save_session -> Sauvegarde la session (True) ou non (False).
|
||||
---
|
||||
## Dépannage
|
||||
|
||||
- speak -> Active la synthèse vocale (True) ou non (False).
|
||||
|
||||
- listen -> Active la reconnaissance vocale (True) ou non (False).
|
||||
|
||||
- jarvis_personality -> Utilise une personnalité type JARVIS (True) ou non (False). Change simplement le prompt.
|
||||
|
||||
- languages -> Liste des langues supportées, nécessaire pour le routage des agents. Évitez d’en mettre trop ou des langues trop similaires.
|
||||
|
||||
- headless_browser -> Lance le navigateur sans fenêtre visible (True) ou non (False).
|
||||
|
||||
- stealth_mode -> Rend la détection par les bots plus difficile. Nécessite d’installer l’extension anticaptcha manuellement.
|
||||
|
||||
- languages -> Liste des langues supportées. Requis pour le système de routage. Plus la liste est longue, plus de modèles seront téléchargés.
|
||||
|
||||
## Fournisseurs
|
||||
|
||||
Tableau des fournisseurs disponibles :
|
||||
|
||||
| Fournisseur | Local ? | Description |
|
||||
|--------------|---------|----------------------------------------------------------|
|
||||
| ollama | Oui | Exécutez des LLM localement avec ollama |
|
||||
| server | Oui | Hébergez le modèle sur une autre machine |
|
||||
| lm-studio | Oui | Exécutez un LLM localement avec LM studio (`lm-studio`) |
|
||||
| openai | Selon | Utilise l’API ChatGPT (non privé) ou API compatible openai|
|
||||
| deepseek-api | Non | API Deepseek (non privé) |
|
||||
| huggingface | Non | API Hugging-Face (non privé) |
|
||||
| togetherAI | Non | Utilise l’API together AI (non privé) |
|
||||
| google | Non | Utilise l’API gemini de Google (non privé) |
|
||||
|
||||
Pour sélectionner un fournisseur, modifiez le config.ini :
|
||||
|
||||
```
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:5000
|
||||
```
|
||||
`is_local` : doit être True pour tout LLM local, sinon False.
|
||||
|
||||
`provider_name` : Sélectionnez le fournisseur par son nom, voir la liste ci-dessus.
|
||||
|
||||
`provider_model` : Modèle à utiliser par l’agent.
|
||||
|
||||
`provider_server_address` : Peut être n’importe quoi si vous n’utilisez pas le fournisseur server.
|
||||
Si vous rencontrez des problèmes, cette section fournit des conseils.
|
||||
|
||||
# Problèmes connus
|
||||
|
||||
## Problèmes avec Chromedriver
|
||||
## Problèmes de ChromeDriver
|
||||
|
||||
**Erreur connue #1 :** *chromedriver mismatch*
|
||||
**Exemple d'erreur:** `SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XXX`
|
||||
|
||||
### Cause racine
|
||||
L'incompatibilité de version de ChromeDriver se produit lorsque:
|
||||
1. La version de ChromeDriver que vous avez installée ne correspond pas à la version du navigateur Chrome
|
||||
2. Dans les environnements Docker, `undetected_chromedriver` peut télécharger sa propre version de ChromeDriver, contournant les binaires montés
|
||||
|
||||
### Étapes de résolution
|
||||
|
||||
#### 1. Vérifiez votre version de Chrome
|
||||
Ouvrez Google Chrome → `Paramètres > À propos de Chrome` pour trouver votre version (ex: "Version 134.0.6998.88")
|
||||
|
||||
#### 2. Téléchargez ChromeDriver correspondant
|
||||
|
||||
**Pour Chrome 115 et versions ultérieures:** Utilisez [Chrome for Testing API](https://googlechromelabs.github.io/chrome-for-testing/)
|
||||
- Visitez le tableau de disponibilité de Chrome for Testing
|
||||
- Trouvez votre version de Chrome ou la correspondance disponible la plus proche
|
||||
- Téléchargez ChromeDriver pour votre système d'exploitation (utilisez Linux64 pour les environnements Docker)
|
||||
|
||||
**Pour les anciennes versions de Chrome:** Utilisez [Téléchargements hérités de ChromeDriver](https://chromedriver.chromium.org/downloads)
|
||||
|
||||

|
||||
|
||||
#### 3. Installez ChromeDriver (choisissez une méthode)
|
||||
|
||||
**Méthode A: Répertoire racine du projet (recommandé pour Docker)**
|
||||
```bash
|
||||
# Placez le binaire chromedriver téléchargé dans le répertoire racine du projet
|
||||
cp path/to/downloaded/chromedriver ./chromedriver
|
||||
chmod +x ./chromedriver # Rendez-le exécutable sur Linux/macOS
|
||||
```
|
||||
|
||||
**Méthode B: PATH système**
|
||||
```bash
|
||||
# Linux/macOS
|
||||
sudo mv chromedriver /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/chromedriver
|
||||
|
||||
# Windows: Placez chromedriver.exe dans un dossier du PATH
|
||||
```
|
||||
|
||||
#### 4. Vérifiez l'installation
|
||||
```bash
|
||||
# Testez la version de ChromeDriver
|
||||
./chromedriver --version
|
||||
# Ou s'il est dans PATH:
|
||||
chromedriver --version
|
||||
```
|
||||
|
||||
### Instructions spécifiques à Docker
|
||||
|
||||
⚠️ **Important pour les utilisateurs de Docker:**
|
||||
- La méthode de montage de volumes Docker peut ne pas fonctionner avec le mode furtif (`undetected_chromedriver`)
|
||||
- **Solution:** Placez ChromeDriver dans le répertoire racine du projet en tant que `./chromedriver`
|
||||
- L'application le détectera automatiquement et utilisera ce binaire
|
||||
- Vous devriez voir dans les logs: `"Using ChromeDriver from project root: ./chromedriver"`
|
||||
|
||||
### Conseils de dépannage
|
||||
|
||||
1. **Toujours une incompatibilité de version ?**
|
||||
- Vérifiez que ChromeDriver est exécutable: `ls -la ./chromedriver`
|
||||
- Vérifiez la version de ChromeDriver: `./chromedriver --version`
|
||||
- Assurez-vous qu'elle correspond à votre version du navigateur Chrome
|
||||
|
||||
2. **Problèmes avec le conteneur Docker ?**
|
||||
- Vérifiez les logs du backend: `docker logs backend`
|
||||
- Recherchez le message: `"Using ChromeDriver from project root"`
|
||||
- S'il n'est pas trouvé, vérifiez que le fichier existe et est exécutable
|
||||
|
||||
3. **Versions de Chrome for Testing**
|
||||
- Utilisez une correspondance exacte lorsque possible
|
||||
- Pour la version 134.0.6998.88, utilisez ChromeDriver 134.0.6998.165 (la version disponible la plus proche)
|
||||
- Le numéro de version principal doit correspondre (134 = 134)
|
||||
|
||||
### Matrice de compatibilité des versions
|
||||
|
||||
| Version de Chrome | Version de ChromeDriver | Statut |
|
||||
|----------------|---------------------|---------|
|
||||
| 134.0.6998.x | 134.0.6998.165 | ✅ Disponible |
|
||||
| 133.0.6943.x | 133.0.6943.141 | ✅ Disponible |
|
||||
| 132.0.6834.x | 132.0.6834.159 | ✅ Disponible |
|
||||
|
||||
*Pour la compatibilité la plus récente, consultez le [Tableau de Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)*
|
||||
|
||||
`Exception: Failed to initialize browser: Message: session not created: This version of ChromeDriver only supports Chrome version 113
|
||||
Current browser version is 134.0.6998.89 with binary path`
|
||||
|
||||
Cela arrive s’il y a un décalage entre la version de votre navigateur et celle de chromedriver.
|
||||
Cela se produit si votre navigateur et la version de chromedriver ne correspondent pas.
|
||||
|
||||
Téléchargez la dernière version ici :
|
||||
Vous devez naviguer pour télécharger la dernière version:
|
||||
|
||||
https://developer.chrome.com/docs/chromedriver/downloads
|
||||
|
||||
Si vous utilisez Chrome version 115 ou plus, allez sur :
|
||||
Si vous utilisez Chrome version 115 ou supérieure, allez à:
|
||||
|
||||
https://googlechromelabs.github.io/chrome-for-testing/
|
||||
|
||||
Et téléchargez la version de chromedriver correspondant à votre OS.
|
||||
et téléchargez la version de chromedriver correspondant à votre système d'exploitation.
|
||||
|
||||

|
||||
|
||||
Si cette section est incomplète, ouvrez une issue.
|
||||
Si cette section est incomplète, ouvrez un issue.
|
||||
|
||||
## Problèmes d’adaptateurs de connexion
|
||||
## Problèmes d'adaptateurs de connexion
|
||||
|
||||
```
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:11434/v1/chat/completions'
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:1234/v1/chat/completions'` (note: le port peut varier)
|
||||
```
|
||||
|
||||
Assurez-vous d’avoir `http://` devant l’adresse IP du fournisseur :
|
||||
* **Cause:** Il manque le préfixe `http://` dans `provider_server_address` pour `lm-studio` (ou un autre serveur local compatible OpenAI similaire) dans `config.ini`, ou il pointe vers le mauvais port.
|
||||
* **Solution:**
|
||||
* Assurez-vous que l'adresse inclut `http://`. LM-Studio utilise généralement `http://127.0.0.1:1234` par défaut.
|
||||
* `config.ini` correct: `provider_server_address = http://127.0.0.1:1234` (ou votre port réel du serveur LM-Studio).
|
||||
|
||||
`provider_server_address = http://127.0.0.1:11434`
|
||||
|
||||
## SearxNG base URL doit être fourni
|
||||
## URL de base de SearxNG non fournie
|
||||
|
||||
```
|
||||
raise ValueError("SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.")
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.`
|
||||
```
|
||||
|
||||
Peut-être n’avez-vous pas renommé `.env.example` en `.env` ? Vous pouvez aussi exporter SEARXNG_BASE_URL :
|
||||
Cela peut se produire si vous exécutez le mode CLI avec une URL de base de searxng incorrecte.
|
||||
|
||||
`export SEARXNG_BASE_URL="http://127.0.0.1:8080"`
|
||||
SEARXNG_BASE_URL doit différer selon que vous exécutez dans Docker ou sur l'hôte:
|
||||
|
||||
**Exécution sur l'hôte:** `SEARXNG_BASE_URL="http://localhost:8080"`
|
||||
|
||||
**Exécution complètement dans Docker (interface web):** `SEARXNG_BASE_URL="http://searxng:8080"`
|
||||
|
||||
## FAQ
|
||||
|
||||
**Q : Quel matériel est nécessaire ?**
|
||||
**Q: De quel matériel ai-je besoin ?**
|
||||
|
||||
| Taille du modèle | GPU | Commentaire |
|
||||
|------------------|---------------|-----------------------------------------------------------------------------|
|
||||
| 7B | 8 Go Vram | ⚠️ Non recommandé. Performances faibles, hallucinations fréquentes, échec probable des agents planificateurs. |
|
||||
| 14B | 12 Go VRAM | ✅ Utilisable pour des tâches simples. Peut avoir du mal avec la navigation web et la planification. |
|
||||
| 32B | 24+ Go VRAM | 🚀 Réussite sur la plupart des tâches, peut encore avoir du mal avec la planification |
|
||||
| 70B+ | 48+ Go Vram | 💪 Excellent. Recommandé pour les cas avancés. |
|
||||
| Taille du modèle | GPU | Commentaires |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| 7B | 8GB VRAM | ⚠️ Non recommandé. Performances médiocres, hallucinations fréquentes, les agents de planification peuvent échouer. |
|
||||
| 14B | 12 GB VRAM (ex: RTX 3060) | ✅ Utilisable pour des tâches simples. Peut avoir des difficultés avec la navigation web et la planification de tâches. |
|
||||
| 32B | 24+ GB VRAM (ex: RTX 4090) | 🚀 Réussit la plupart des tâches, peut encore avoir des difficultés avec la planification de tâches |
|
||||
| 70B+ | 48+ GB VRAM | 💪 Excellent. Recommandé pour les cas d'utilisation avancés. |
|
||||
|
||||
**Q : Pourquoi Deepseek R1 plutôt qu’un autre modèle ?**
|
||||
**Q: Que faire si je rencontre des erreurs ?**
|
||||
|
||||
Deepseek R1 excelle en raisonnement et utilisation d’outils pour sa taille. Nous pensons que c’est un bon choix, d’autres modèles fonctionnent aussi, mais Deepseek est notre favori.
|
||||
Assurez-vous que le local fonctionne (`ollama serve`), que votre `config.ini` correspond à votre fournisseur et que les dépendances sont installées. Si rien ne fonctionne, n'hésitez pas à ouvrir un issue.
|
||||
|
||||
**Q : J’ai une erreur en lançant `cli.py`. Que faire ?**
|
||||
**Q: Peut-il vraiment fonctionner à 100% localement ?**
|
||||
|
||||
Assurez-vous que le local est lancé (`ollama serve`), que votre `config.ini` correspond à votre fournisseur, et que les dépendances sont installées. Si rien ne marche, ouvrez une issue.
|
||||
Oui, avec les fournisseurs Ollama, lm-studio ou server, tous les modèles de parole vers texte, LLM et texte vers parole fonctionnent localement. Les options non locales (OpenAI ou autres API) sont optionnelles.
|
||||
|
||||
**Q : Peut-on vraiment tout faire tourner en local ?**
|
||||
**Q: Pourquoi devrais-je utiliser AgenticSeek quand j'ai Manus ?**
|
||||
|
||||
Oui, avec Ollama, lm-studio ou server, tout (reconnaissance vocale, LLM, synthèse vocale) fonctionne localement. Les options non-locales (OpenAI ou autres API) sont optionnelles.
|
||||
Contrairement à Manus, AgenticSeek privilégie l'indépendance des systèmes externes, vous donnant plus de contrôle, de confidentialité et évitant les coûts d'API.
|
||||
|
||||
**Q : Pourquoi utiliser AgenticSeek alors que j’ai Manus ?**
|
||||
**Q: Qui est derrière ce projet ?**
|
||||
|
||||
Ce projet est né d’un intérêt pour les agents IA. Ce qui le rend spécial, c’est la volonté d’utiliser des modèles locaux et d’éviter les API.
|
||||
Nous nous inspirons de Jarvis et Friday (Iron Man) pour le côté "cool", mais pour la fonctionnalité, c’est Manus qui nous inspire, car c’est ce que les gens recherchent : une alternative locale à Manus.
|
||||
Contrairement à Manus, AgenticSeek privilégie l’indépendance vis-à-vis des systèmes externes, vous donnant plus de contrôle, de confidentialité et évitant les coûts d’API.
|
||||
Ce projet a été créé par moi, avec deux amis comme mainteneurs et des contributeurs de la communauté open source sur GitHub. Nous sommes juste des individus passionnés, pas une startup, ni affiliés à aucune organisation.
|
||||
|
||||
Tout compte AgenticSeek sur X autre que mon compte personnel (https://x.com/Martin993886460) est un imposteur.
|
||||
|
||||
## Contribuer
|
||||
|
||||
Nous recherchons des développeurs pour améliorer AgenticSeek ! Consultez les issues ou discussions ouvertes.
|
||||
Nous recherchons des développeurs pour améliorer AgenticSeek ! Consultez les problèmes ouverts ou les discussions.
|
||||
|
||||
[Guide de contribution](./docs/CONTRIBUTING.md)
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
## Sponsors:
|
||||
|
||||
Vous voulez améliorer les capacités d'AgenticSeek avec des fonctionnalités comme la recherche de vols, la planification de voyages ou l'obtention des meilleures offres d'achat ? Envisagez d'utiliser SerpApi pour créer des outils personnalisés qui débloquent plus de fonctionnalités de type Jarvis. Avec SerpApi, vous pouvez accélérer votre agent pour des tâches professionnelles tout en gardant le contrôle total.
|
||||
|
||||
<a href="https://serpapi.com/"><img src="./media/banners/sponsor_banner_serpapi.png" height="350" alt="SerpApi Banner" ></a>
|
||||
|
||||
Consultez [Contributing.md](./docs/CONTRIBUTING.md) pour apprendre comment intégrer des outils personnalisés !
|
||||
|
||||
### **Sponsors**:
|
||||
|
||||
- [tatra-labs](https://github.com/tatra-labs)
|
||||
|
||||
## Mainteneurs:
|
||||
|
||||
@@ -538,9 +675,8 @@ Nous recherchons des développeurs pour améliorer AgenticSeek ! Consultez les i
|
||||
|
||||
> [antoineVIVIES](https://github.com/antoineVIVIES) | Heure de Taipei
|
||||
|
||||
> [steveh8758](https://github.com/steveh8758) | Heure de Taipei
|
||||
## Remerciements spéciaux:
|
||||
|
||||
## Remerciements :
|
||||
|
||||
> [tcsenpai](https://github.com/tcsenpai) et [plitc](https://github.com/plitc) pour l’aide à la dockerisation du backend
|
||||
> [tcsenpai](https://github.com/tcsenpai) et [plitc](https://github.com/plitc) pour avoir aidé à la dockerisation du backend
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
|
||||
+384
-242
@@ -1,48 +1,52 @@
|
||||
# AgenticSeek: プライベートでローカルな Manus の代替
|
||||
# AgenticSeek: Manusのプライベートでローカルな代替品
|
||||
|
||||
<p align="center">
|
||||
<img align="center" src="./media/agentic_seek_logo.png" width="300" height="300" alt="Agentic Seek Logo">
|
||||
<p>
|
||||
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md)
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md) | [Español](./README_ES.md)
|
||||
|
||||
**100%ローカルで動作するManus AIの代替**となる音声対応AIアシスタントです。ウェブの自律的な閲覧、コードの作成、タスクの計画を行い、すべてのデータをあなたのデバイス上に保持します。ローカル推論モデル向けに最適化されており、完全なプライバシーとクラウド依存ゼロを実現します。
|
||||
*音声対応のAIアシスタントで、**100%ローカルで動作するManus AIの代替品**です。自律的にウェブを閲覧し、コードを書き、タスクを計画し、すべてのデータをデバイス上に保持します。ローカル推論モデル向けに設計されており、完全にあなたのハードウェア上で動作し、プライバシーを保証し、クラウドへの依存をゼロにします。*
|
||||
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
|
||||
### なぜAgenticSeekなのか?
|
||||
### なぜAgenticSeekを選ぶのか?
|
||||
|
||||
* 🔒 完全ローカル&プライベート - すべてがあなたのマシン上で動作。クラウドやデータ共有は一切なし。ファイル、会話、検索はすべてプライベートに保たれます。
|
||||
* 🔒 完全にローカル&プライベート - すべてがあなたのマシン上で動作し、クラウドなし、データ共有なし。あなたのファイル、会話、検索はプライベートのままです。
|
||||
|
||||
* 🌐 スマートなウェブブラウジング - AgenticSeekは自動でインターネットを検索・閲覧・情報抽出・フォーム入力までハンズフリーで実行します。
|
||||
* 🌐 インテリジェントなウェブブラウジング - AgenticSeekは自律的にインターネットを閲覧できます:検索、読み取り、情報抽出、ウェブフォーム入力、すべて手動操作なしで。
|
||||
|
||||
* 💻 自律型コーディングアシスタント - コードが必要ですか?Python、C、Go、Javaなどのプログラムを自動で作成・デバッグ・実行します。
|
||||
* 💻 自律的なプログラミングアシスタント - コードが必要ですか?Python、C、Go、Javaなどのプログラムを監督なしで書き、デバッグし、実行できます。
|
||||
|
||||
* 🧠 スマートエージェント選択 - あなたの要望に応じて最適なエージェントを自動で選択。まるで専門家チームが常にサポートしてくれるようです。
|
||||
* 🧠 インテリジェントなエージェント選択 - あなたが要求すると、自動的に最適なエージェントがタスクに割り当てられます。常に利用可能な専門家チームを持っているようなものです。
|
||||
|
||||
* 📋 複雑なタスクの計画と実行 - 旅行計画からプロジェクト管理まで、大きなタスクを分割し、複数のAIエージェントで実行します。
|
||||
* 📋 複雑なタスクの計画と実行 - 旅行計画から複雑なプロジェクトまで、大きなタスクをステップに分解し、複数のAIエージェントを使用して完了できます。
|
||||
|
||||
* 🎙️ 音声対応 - 未来的で高速な音声認識&音声合成。まるでSF映画のパーソナルAIのように会話できます(開発中)。
|
||||
* 🎙️ 音声サポート - クリーンで高速で未来的な音声と音声認識機能により、SF映画のようなパーソナルAIと会話できます。(開発中)
|
||||
|
||||
### **デモ**
|
||||
|
||||
> *agenticSeekプロジェクトを検索し、必要なスキルを調べてからCV_candidates.zipを開き、プロジェクトに最も合う候補者を教えて*
|
||||
> *agenticSeekプロジェクトを検索して必要なスキルを学び、CV_candidates.zipを開いて、どの候補がプロジェクトに最も適しているか教えてくれますか?*
|
||||
|
||||
https://github.com/user-attachments/assets/b8ca60e9-7b3b-4533-840e-08f9ac426316
|
||||
|
||||
注意: このデモや登場するファイル(例: CV_candidates.zip)はすべて架空のものです。私たちは企業ではなく、オープンソースの貢献者を募集しています。
|
||||
免責事項:このデモと表示されるすべてのファイル(例:CV_candidates.zip)は完全に架空のものです。私たちは企業ではなく、候補者ではなくオープンソースの貢献者を求めています。
|
||||
|
||||
> 🛠⚠️️ **開発中のプロジェクトです**
|
||||
> 🛠⚠️️ **アクティブな開発中**
|
||||
|
||||
> 🙏 このプロジェクトはサイドプロジェクトとして始まり、ロードマップや資金はありません。GitHub Trending入りするほど成長しました。貢献・フィードバック・ご理解に感謝します。
|
||||
> 🙏 このプロジェクトはサイドプロジェクトとして始まり、ロードマップも資金もありませんでした。GitHub Trendingに登場して予想以上に成長しました。貢献、フィードバック、忍耐に深く感謝します。
|
||||
|
||||
## 前提条件
|
||||
|
||||
chrome driver、docker、python3.10がインストールされていることを確認してください。
|
||||
始める前に、以下がインストールされていることを確認してください:
|
||||
|
||||
chrome driver関連の問題は**Chromedriver**セクションを参照してください。
|
||||
* **Git:** リポジトリをクローンするため。[Gitをダウンロード](https://git-scm.com/downloads)
|
||||
* **Python 3.10.x:** Python 3.10.xを強く推奨します。他のバージョンでは依存関係エラーが発生する可能性があります。[Python 3.10をダウンロード](https://www.python.org/downloads/release/python-3100/)(3.10.xバージョンを選択)。
|
||||
* **Docker Engine & Docker Compose:** SearxNGなどのパッケージ化されたサービスを実行するため。
|
||||
* Docker Desktopをインストール(Docker Compose V2を含む):[Windows](https://docs.docker.com/desktop/install/windows-install/) | [Mac](https://docs.docker.com/desktop/install/mac-install/) | [Linux](https://docs.docker.com/desktop/install/linux-install/)
|
||||
* またはLinuxでDocker EngineとDocker Composeを別々にインストール:[Docker Engine](https://docs.docker.com/engine/install/) | [Docker Compose](https://docs.docker.com/compose/install/)(Compose V2をインストールしていることを確認、例:`sudo apt-get install docker-compose-plugin`)。
|
||||
|
||||
### 1. **リポジトリのクローンとセットアップ**
|
||||
### 1. **リポジトリをクローンして設定**
|
||||
|
||||
```sh
|
||||
git clone https://github.com/Fosowl/agenticSeek.git
|
||||
@@ -53,7 +57,7 @@ mv .env.example .env
|
||||
### 2. .envファイルの内容を変更
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||
SEARXNG_BASE_URL="http://searxng:8080" # ホストでCLIモードを実行する場合はhttp://127.0.0.1:8080を使用
|
||||
REDIS_BASE_URL="redis://redis:6379/0"
|
||||
WORK_DIR="/Users/mlg/Documents/workspace_for_ai"
|
||||
OLLAMA_PORT="11434"
|
||||
@@ -67,262 +71,310 @@ GOOGLE_API_KEY='optional'
|
||||
ANTHROPIC_API_KEY='optional'
|
||||
```
|
||||
|
||||
**APIキーはローカルでLLMを実行する場合は完全にオプションです。十分なハードウェアがある場合は空欄で構いません。**
|
||||
必要に応じて`.env`ファイルを更新してください:
|
||||
|
||||
以下の環境変数はアプリケーションの接続やAPIキーを設定します。必要に応じて`.env`ファイルを編集してください。
|
||||
- **SEARXNG_BASE_URL**: ホストでCLIモードを実行する場合を除き、変更しないでください。
|
||||
- **REDIS_BASE_URL**: 変更しないでください
|
||||
- **WORK_DIR**: ローカル作業ディレクトリへのパス。AgenticSeekはこれらのファイルを読み取り、操作できます。
|
||||
- **OLLAMA_PORT**: Ollamaサービスのポート番号。
|
||||
- **LM_STUDIO_PORT**: LM Studioサービスのポート番号。
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: 追加のカスタムLLMサービスのポート。
|
||||
|
||||
- **SEARXNG_BASE_URL**: 変更不要
|
||||
- **REDIS_BASE_URL**: 変更不要
|
||||
- **WORK_DIR**: ローカル作業ディレクトリのパス。AgenticSeekがこのディレクトリのファイルを読み書きします。
|
||||
- **OLLAMA_PORT**: Ollamaサービスのポート番号
|
||||
- **LM_STUDIO_PORT**: LM Studioサービスのポート番号
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: カスタムLLMサービスのポート番号
|
||||
**APIキーは、ローカルでLLMを実行することを選択するユーザーには完全にオプションであり、これがこのプロジェクトの主な目的です。ハードウェアが十分にある場合は空のままにしてください。**
|
||||
|
||||
APIキーは**すべてオプション**です。外部APIを使う場合のみ設定してください。
|
||||
### 3. **Dockerを起動**
|
||||
|
||||
### 3. **Dockerの起動**
|
||||
Dockerがインストールされ、システム上で実行されていることを確認してください。以下のコマンドでDockerを起動できます:
|
||||
|
||||
Dockerがインストールされ、起動していることを確認してください。以下のコマンドで起動できます。
|
||||
|
||||
- **Linux/macOSの場合:**
|
||||
ターミナルで
|
||||
- **Linux/macOS:**
|
||||
ターミナルを開いて実行:
|
||||
```sh
|
||||
sudo systemctl start docker
|
||||
```
|
||||
またはアプリケーションメニューからDocker Desktopを起動
|
||||
または、インストールされている場合はアプリケーションメニューからDocker Desktopを起動。
|
||||
|
||||
- **Windowsの場合:**
|
||||
スタートメニューからDocker Desktopを起動
|
||||
- **Windows:**
|
||||
スタートメニューからDocker Desktopを起動。
|
||||
|
||||
Dockerが動作しているか確認するには
|
||||
Dockerが実行されているかは以下で確認できます:
|
||||
```sh
|
||||
docker info
|
||||
```
|
||||
と入力し、情報が表示されればOKです。
|
||||
Dockerインストール情報が表示されれば正常に動作しています。
|
||||
|
||||
要約については以下の[ローカルプロバイダーリスト](#ローカルプロバイダーリスト)を参照してください。
|
||||
|
||||
次のステップ:[ローカルでAgenticSeekを実行](#サービスを起動して実行)
|
||||
|
||||
*問題が発生した場合は、[トラブルシューティング](#トラブルシューティング)セクションを参照してください。*
|
||||
*ハードウェアがローカルでLLMを実行できない場合は、[APIを使用した実行設定](#apiを使用した実行設定)を参照してください。*
|
||||
*詳細な`config.ini`の説明については、[設定セクション](#設定)を参照してください。*
|
||||
|
||||
---
|
||||
|
||||
## ローカルでLLMを実行する場合のセットアップ
|
||||
## マシン上でローカルにLLMを実行する設定
|
||||
|
||||
**ハードウェア要件:**
|
||||
|
||||
ローカルでLLMを動かすには十分なハードウェアが必要です。最低でもQwen/Deepseek 14Bが動作するGPUが必要です。詳細はFAQを参照してください。
|
||||
LLMをローカルで実行するには、十分なハードウェアが必要です。少なくともMagistral、Qwen、またはDeepseek 14Bを実行できるGPUが必要です。詳細なモデル/パフォーマンスの推奨事項についてはFAQを参照してください。
|
||||
|
||||
**ローカルプロバイダーの起動例**
|
||||
**ローカルプロバイダーを設定**
|
||||
|
||||
例: ollamaを使う場合
|
||||
例えばollamaを使用してローカルプロバイダーを起動:
|
||||
|
||||
```sh
|
||||
ollama serve
|
||||
```
|
||||
|
||||
対応プロバイダーは下記参照。
|
||||
サポートされているローカルプロバイダーのリストは以下を参照してください。
|
||||
|
||||
**config.iniの更新**
|
||||
**config.iniを更新**
|
||||
|
||||
config.iniファイルでprovider_nameをサポートされているプロバイダー名、provider_modelを対応モデルに設定してください。推論モデルは*Qwen*や*Deepseek*を推奨します。
|
||||
config.iniファイルを変更して、provider_nameをサポートされているプロバイダーに、provider_modelをプロバイダーがサポートするLLMに設定します。*Magistral*や*Deepseek*などの推論モデルをお勧めします。
|
||||
|
||||
FAQで必要なハードウェアを確認してください。
|
||||
必要なハードウェアについては、READMEの最後にある**FAQ**を参照してください。
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:14b
|
||||
is_local = True # ローカルで実行するかリモートプロバイダーを使用するか
|
||||
provider_name = ollama # またはlm-studio、openaiなど
|
||||
provider_model = deepseek-r1:14b # ハードウェアに互換性のあるモデルを選択
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
agent_name = Jarvis
|
||||
recover_last_session = True
|
||||
save_session = True
|
||||
speak = False
|
||||
listen = False
|
||||
jarvis_personality = False
|
||||
languages = en zh
|
||||
agent_name = Jarvis # AIの名前
|
||||
recover_last_session = True # 前のセッションを復元
|
||||
save_session = True # 現在のセッションを記憶
|
||||
speak = False # テキスト読み上げ
|
||||
listen = False # 音声認識、CLIのみ、実験的
|
||||
jarvis_personality = False # より「Jarvis」的な性格を使用(実験的)
|
||||
languages = en zh # 言語リスト、TTSはデフォルトでリストの最初を使用
|
||||
[BROWSER]
|
||||
headless_browser = True
|
||||
stealth_mode = True
|
||||
headless_browser = True # ホストでCLIを使用する場合を除き変更しない
|
||||
stealth_mode = True # 検出されにくいseleniumを使用してブラウザ検出を減らす
|
||||
```
|
||||
|
||||
**注意:**
|
||||
**警告**:
|
||||
|
||||
- `config.ini`はコメントをサポートしません。例の設定をそのままコピペせず、コメントを除いて手動で編集してください。
|
||||
- LM-studioを使う場合、provider_nameは`lm-studio`にしてください(`openai`ではありません)。
|
||||
- 一部プロバイダー(例: lm-studio)はIPアドレスの前に`http://`が必要です(例: `http://127.0.0.1:1234`)。
|
||||
- `config.ini`ファイル形式はコメントをサポートしていません。
|
||||
コメントがエラーを引き起こすため、サンプル設定を直接コピー&ペーストしないでください。代わりに、コメントなしで希望の設定で`config.ini`ファイルを手動で変更してください。
|
||||
|
||||
**ローカルプロバイダー一覧**
|
||||
- LM-studioを使用してLLMを実行する場合、provider_nameを`openai`に設定*しない*でください。`lm-studio`として使用してください。
|
||||
|
||||
| プロバイダー | ローカル? | 説明 |
|
||||
- 一部のプロバイダー(例:lm-studio)では、IPの前に`http://`が必要です。例:`http://127.0.0.1:1234`
|
||||
|
||||
**ローカルプロバイダーリスト**
|
||||
|
||||
| プロバイダー | ローカル? | 説明 |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | はい | ollamaでローカルLLMを簡単に実行 |
|
||||
| lm-studio | はい | LM studioでローカルLLMを実行(`provider_name`は`lm-studio`)|
|
||||
| openai | はい/いいえ | openai互換API(例: llama.cppサーバー) |
|
||||
| ollama | はい | ollamaを使用して簡単にローカルでLLMを実行 |
|
||||
| lm-studio | はい | LM studioでローカルにLLMを実行(`provider_name` = `lm-studio`に設定)|
|
||||
| openai | はい | OpenAI互換API(例:llama.cppサーバー)を使用 |
|
||||
|
||||
次のステップ: [サービスの起動とAgenticSeekの実行](#Start-services-and-Run)
|
||||
次のステップ:[サービスを起動してAgenticSeekを実行](#サービスを起動して実行)
|
||||
|
||||
*問題がある場合は**Known issues**セクション参照*
|
||||
*問題が発生した場合は、[トラブルシューティング](#トラブルシューティング)セクションを参照してください。*
|
||||
*ハードウェアがローカルでLLMを実行できない場合は、[APIを使用した実行設定](#apiを使用した実行設定)を参照してください。*
|
||||
*詳細な`config.ini`の説明については、[設定セクション](#設定)を参照してください。*
|
||||
|
||||
*ローカルでdeepseekが動かない場合は**Run with an API**セクション参照*
|
||||
## APIを使用した実行設定
|
||||
|
||||
*詳細な設定は**Config**セクション参照*
|
||||
この設定では、外部のクラウドベースのLLMプロバイダーを使用します。選択したサービスからAPIキーを取得する必要があります。
|
||||
|
||||
---
|
||||
**1. APIプロバイダーを選択し、APIキーを取得:**
|
||||
|
||||
## APIで実行する場合のセットアップ
|
||||
以下の[APIプロバイダーリスト](#apiプロバイダーリスト)を参照してください。ウェブサイトにアクセスして登録し、APIキーを取得してください。
|
||||
|
||||
**API利用はオプションです。ローカル実行は上記参照。**
|
||||
|
||||
`config.ini`で希望のプロバイダーを設定してください。APIプロバイダー一覧は下記参照。
|
||||
**2. APIキーを環境変数として設定:**
|
||||
|
||||
* **Linux/macOS:**
|
||||
ターミナルを開き、`export`コマンドを使用します。永続的にするにはシェルの設定ファイル(例:`~/.bashrc`、`~/.zshrc`)に追加するのがベストです。
|
||||
```sh
|
||||
export PROVIDER_API_KEY="your_api_key_here"
|
||||
# PROVIDER_API_KEYを特定の変数名に置き換えてください、例:OPENAI_API_KEY、GOOGLE_API_KEY
|
||||
```
|
||||
TogetherAIの例:
|
||||
```sh
|
||||
export TOGETHER_API_KEY="xxxxxxxxxxxxxxxxxxxxxx"
|
||||
```
|
||||
* **Windows:**
|
||||
* **コマンドプロンプト(現在のセッション限定):**
|
||||
```cmd
|
||||
set PROVIDER_API_KEY=your_api_key_here
|
||||
```
|
||||
* **PowerShell(現在のセッション限定):**
|
||||
```powershell
|
||||
$env:PROVIDER_API_KEY="your_api_key_here"
|
||||
```
|
||||
* **永続的:** Windowsの検索バーで「環境変数」を検索し、「システムの環境変数を編集」をクリックしてから「環境変数...」ボタンをクリックします。適切な名前(例:`OPENAI_API_KEY`)とキーを値として新しいユーザー変数を追加します。
|
||||
|
||||
*(詳細については、FAQを参照してください:[APIキーを設定する方法?](#apiキーを設定する方法))。*
|
||||
|
||||
|
||||
**3. `config.ini`を更新:**
|
||||
```ini
|
||||
[MAIN]
|
||||
is_local = False
|
||||
provider_name = google
|
||||
provider_model = gemini-2.0-flash
|
||||
provider_server_address = 127.0.0.1:5000 # 任意
|
||||
provider_name = openai # またはgoogle、deepseek、togetherAI、huggingface
|
||||
provider_model = gpt-3.5-turbo # またはgemini-1.5-flash、deepseek-chat、mistralai/Mixtral-8x7B-Instruct-v0.1など
|
||||
provider_server_address = # is_local = Falseの場合、ほとんどのAPIでは無視されるか空にできる
|
||||
# ... その他の設定 ...
|
||||
```
|
||||
注意: configに余計なスペースがないようにしてください。
|
||||
*警告:* configの値に末尾のスペースがないことを確認してください。
|
||||
|
||||
APIキーをエクスポート: `export <<PROVIDER>>_API_KEY="xxx"`
|
||||
**APIプロバイダーリスト**
|
||||
|
||||
例: `export TOGETHER_API_KEY="xxxxx"`
|
||||
| プロバイダー | `provider_name` | ローカル? | 説明 | APIキーリンク(例) |
|
||||
|--------------|-----------------|--------|---------------------------------------------------|---------------------------------------------|
|
||||
| OpenAI | `openai` | いいえ | OpenAIのAPIを通じてChatGPTモデルを使用。 | [platform.openai.com/signup](https://platform.openai.com/signup) |
|
||||
| Google Gemini| `google` | いいえ | Google AI Studioを通じてGoogle Geminiモデルを使用。 | [aistudio.google.com/keys](https://aistudio.google.com/keys) |
|
||||
| Deepseek | `deepseek` | いいえ | 彼らのAPIを通じてDeepseekモデルを使用。 | [platform.deepseek.com](https://platform.deepseek.com) |
|
||||
| Hugging Face | `huggingface` | いいえ | Hugging Face Inference APIのモデルを使用。 | [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) |
|
||||
| TogetherAI | `togetherAI` | いいえ | TogetherAI APIを通じて様々なオープンソースモデルを使用。| [api.together.ai/settings/api-keys](https://api.together.ai/settings/api-keys) |
|
||||
|
||||
**APIプロバイダー一覧**
|
||||
*注:*
|
||||
* 複雑なウェブブラウジングとタスクプランニングには`gpt-4o`や他のOpenAIモデルの使用は推奨しません。現在のプロンプト最適化はDeepseekなどのモデルを対象としているためです。
|
||||
* コーディング/bashタスクはGeminiで失敗する可能性があります。Deepseek r1用に最適化されたプロンプト形式を無視する傾向があるためです。
|
||||
* `is_local = False`の場合、`config.ini`の`provider_server_address`は通常使用されません。APIエンドポイントは通常、対応するプロバイダーのライブラリで処理されるためです。
|
||||
|
||||
| プロバイダー | ローカル? | 説明 |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| openai | 場合による | ChatGPT API |
|
||||
| deepseek | いいえ | Deepseek API(非プライベート) |
|
||||
| huggingface| いいえ | Hugging-Face API(非プライベート) |
|
||||
| togetherAI | いいえ | together AI API(非プライベート) |
|
||||
| google | いいえ | google gemini API(非プライベート) |
|
||||
次のステップ:[サービスを起動してAgenticSeekを実行](#サービスを起動して実行)
|
||||
|
||||
geminiではコーディングやbashが失敗する場合があります。deepseek r1向けに最適化されたプロンプトを無視する傾向があります。gpt-4oも同様にプロンプトとの相性が悪い場合があります。
|
||||
*問題が発生した場合は、**既知の問題**セクションを参照してください*
|
||||
|
||||
次のステップ: [サービスの起動とAgenticSeekの実行](#Start-services-and-Run)
|
||||
|
||||
*問題がある場合は**Known issues**セクション参照*
|
||||
|
||||
*詳細な設定は**Config**セクション参照*
|
||||
*詳細な設定ファイルの説明については、**設定セクション**を参照してください。*
|
||||
|
||||
---
|
||||
|
||||
## サービスの起動とAgenticSeekの実行
|
||||
## サービスを起動して実行
|
||||
|
||||
必要なサービスを起動します。docker-compose.ymlから以下のサービスが起動します:
|
||||
デフォルトでは、AgenticSeekは完全にDocker内で実行されます。
|
||||
|
||||
**オプション1:** DockerでWebインターフェースを使用して実行:
|
||||
|
||||
必要なサービスを起動します。これにより、docker-compose.ymlのすべてのサービスが起動します:
|
||||
- searxng
|
||||
- redis(searxng用)
|
||||
- redis(searxngに必要)
|
||||
- frontend
|
||||
- backend(`full`の場合)
|
||||
- backend(Webインターフェースに`full`を使用する場合)
|
||||
|
||||
```sh
|
||||
./start_services.sh full # MacOS
|
||||
start start_services.cmd full # Windows
|
||||
```
|
||||
|
||||
**注意:** このステップで全Dockerイメージがダウンロード・展開されるため最大30分かかる場合があります。backendサービスが完全に起動するまで(ログにbackend: <info>が表示されるまで)待ってください。
|
||||
**警告:** このステップではすべてのDockerイメージがダウンロードされロードされます。最大30分かかる場合があります。サービスを起動した後、メッセージを送信する前にバックエンドサービスが完全に実行されていることを確認してください(ログに**backend: "GET /health HTTP/1.1" 200 OK**が表示されるはずです)。初回実行時、バックエンドサービスは起動に5分かかる場合があります。
|
||||
|
||||
`http://localhost:3000/`にアクセスするとWebインターフェースが表示されます。
|
||||
`http://localhost:3000/`にアクセスすると、Webインターフェースが表示されます。
|
||||
|
||||
**オプション:** CLIインターフェースで実行
|
||||
*サービス起動のトラブルシューティング:* これらのスクリプトが失敗する場合は、Docker Engineが実行中でDocker Compose(V2、`docker compose`)が正しくインストールされていることを確認してください。ターミナル出力のエラーメッセージを確認してください。[FAQ: ヘルプ!AgenticSeekまたはそのスクリプトを実行するとエラーが発生します](#faq-トラブルシューティング)を参照してください。
|
||||
|
||||
CLIで実行する場合はホストにパッケージをインストールしてください。
|
||||
**オプション2:** CLIモード:
|
||||
|
||||
CLIインターフェースで実行するには、ホストにパッケージをインストールする必要があります:
|
||||
|
||||
```sh
|
||||
./install.sh
|
||||
./install.bat # windows
|
||||
```
|
||||
|
||||
サービス起動:
|
||||
次に、`config.ini`のSEARXNG_BASE_URLを以下に変更する必要があります:
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://localhost:8080"
|
||||
```
|
||||
|
||||
必要なサービスを起動します。これにより、docker-compose.ymlの一部のサービスが起動します:
|
||||
- searxng
|
||||
- redis(searxngに必要)
|
||||
- frontend
|
||||
|
||||
```sh
|
||||
./start_services.sh # MacOS
|
||||
start start_services.cmd # Windows
|
||||
```
|
||||
|
||||
その後 `uv run cli.py` を実行
|
||||
実行:uv run: `uv run python -m ensurepip` でuvがpipを有効にしていることを確認します。
|
||||
|
||||
CLIを使用:`uv run cli.py`
|
||||
|
||||
---
|
||||
|
||||
## 使い方
|
||||
## 使用方法
|
||||
|
||||
`./start_services.sh full`でサービスが起動していることを確認し、Webインターフェースは`localhost:3000`です。
|
||||
サービスが`./start_services.sh full`で実行されていることを確認し、`localhost:3000`にアクセスしてWebインターフェースを使用します。
|
||||
|
||||
CLIモードで音声認識を使う場合はconfigで`listen = True`にしてください。
|
||||
`listen = True`を設定することで音声認識も使用できます。CLIモードのみ。
|
||||
|
||||
終了するには「goodbye」と入力または発話してください。
|
||||
終了するには、単に`goodbye`と言う/入力します。
|
||||
|
||||
使用例:
|
||||
使用例:
|
||||
|
||||
> *pythonでスネークゲームを作って!*
|
||||
> *Pythonでスネークゲームを作って!*
|
||||
|
||||
> *フランス・レンヌの人気カフェをウェブ検索し、3つ選んで住所とともにrennes_cafes.txtに保存して。*
|
||||
> *ウェブでフランスのレンヌの最高のカフェを検索し、3つとその住所をrennes_cafes.txtに保存して*
|
||||
|
||||
> *Go言語で階乗を計算するプログラムを書き、workspaceにfactorial.goとして保存して。*
|
||||
> *階乗を計算するGoプログラムを書き、factorial.goとしてワークスペースに保存して*
|
||||
|
||||
> *summer_picturesフォルダ内のJPGファイルをすべて検索し、今日の日付でリネームし、リストをphotos_list.txtに保存して。*
|
||||
> *summer_picturesフォルダ内のすべてのJPGファイルを検索し、今日の日付で名前を変更し、名前変更されたファイルのリストをphotos_list.txtに保存して*
|
||||
|
||||
> *2024年の人気SF映画をウェブで調べ、今夜観る3本を選んでmovie_night.txtに保存して。*
|
||||
> *オンラインで2024年の人気SF映画を検索し、今夜見るために3つ選び、movie_night.txtに保存して*
|
||||
|
||||
> *2025年の最新AIニュース記事をウェブ検索し、3つ選んでタイトルと要約をPythonスクリプトでスクレイピング。news_scraper.pyにスクリプト、ai_news.txtに要約を保存して。*
|
||||
> *ウェブで2025年の最新AIニュース記事を検索し、3つ選び、タイトルと要約を抽出するPythonスクリプトを書き、スクリプトをnews_scraper.pyとして保存し、要約をai_news.txtに保存(/home/projects)*
|
||||
|
||||
> *金曜日、無料の株価APIをウェブで探し、supersuper7434567@gmail.comで登録後、Teslaの日次株価を取得するPythonスクリプトを書き、stock_prices.csvに保存して。*
|
||||
> *金曜日、無料の株価APIをウェブ検索し、supersuper7434567@gmail.comで登録し、APIを使用してテスラの日次株価を取得するPythonスクリプトを書き、結果をstock_prices.csvに保存して*
|
||||
|
||||
*フォーム入力機能は実験的で失敗する場合があります。*
|
||||
*フォーム入力はまだ実験的であり、失敗する可能性があることに注意してください。*
|
||||
|
||||
クエリを入力すると、AgenticSeekが最適なエージェントをタスクに割り当てます。
|
||||
|
||||
クエリを入力すると、AgenticSeekが最適なエージェントを自動で割り当てます。
|
||||
これは初期プロトタイプであるため、エージェントルーティングシステムは常にクエリに正しいエージェントを割り当てられるとは限りません。
|
||||
|
||||
初期プロトタイプのため、エージェントの割り当てが最適でない場合があります。
|
||||
したがって、あなたが何を望んでいるか、そしてAIがどのように進めるかを非常に明確に表現する必要があります。例えば、ウェブ検索をしてほしい場合は、次のように言わないでください:
|
||||
|
||||
そのため、AIにしてほしいことや手順を明確に伝えてください。例えばウェブ検索をさせたい場合は
|
||||
`一人旅に適した国を知っていますか?`
|
||||
|
||||
`Do you know some good countries for solo-travel?`
|
||||
代わりに、次のように言ってください:
|
||||
|
||||
ではなく
|
||||
|
||||
`Do a web search and find out which are the best country for solo-travel`
|
||||
|
||||
のように依頼してください。
|
||||
`ウェブ検索を実行し、一人旅に最適な国を見つけてください`
|
||||
|
||||
---
|
||||
|
||||
## **自分のサーバーでLLMを実行する場合**
|
||||
## **独自のサーバーでLLMを実行する設定**
|
||||
|
||||
高性能なPCやサーバーを持っていて、ノートPCから利用したい場合は、カスタムLLMサーバーを使ってリモート実行できます。
|
||||
強力なコンピューターやアクセス可能なサーバーを持っているが、ラップトップから使用したい場合は、カスタムllmサーバーを使用してリモートサーバーでLLMを実行することを選択できます。
|
||||
|
||||
AIモデルを動かす「サーバー」でIPアドレスを取得
|
||||
AIモデルを実行する「サーバー」で、IPアドレスを取得します
|
||||
|
||||
```sh
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # ローカルIP
|
||||
curl https://ipinfo.io/ip # グローバルIP
|
||||
curl https://ipinfo.io/ip # パブリックIP
|
||||
```
|
||||
|
||||
WindowsやmacOSの場合はipconfigやifconfigで確認
|
||||
注:WindowsまたはmacOSでは、IPアドレスを見つけるためにipconfigまたはifconfigを使用してください。
|
||||
|
||||
リポジトリをクローンし、`server/`フォルダへ
|
||||
リポジトリをクローンし、`server/`フォルダに移動します。
|
||||
|
||||
```sh
|
||||
git clone --depth 1 https://github.com/Fosowl/agenticSeek.git
|
||||
cd agenticSeek/llm_server/
|
||||
```
|
||||
|
||||
サーバー用依存パッケージをインストール
|
||||
サーバー固有の要件をインストールします:
|
||||
|
||||
```sh
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
サーバースクリプトを実行
|
||||
サーバースクリプトを実行します。
|
||||
|
||||
```sh
|
||||
python3 app.py --provider ollama --port 3333
|
||||
```
|
||||
|
||||
LLMサービスは`ollama`または`llamacpp`から選択可能です。
|
||||
LLMサービスとして`ollama`と`llamacpp`のどちらを使用するか選択できます。
|
||||
|
||||
個人PC側では
|
||||
次に、あなたのパーソナルコンピューターで:
|
||||
|
||||
`config.ini`で`provider_name`を`server`、`provider_model`を`deepseek-r1:xxb`に設定。
|
||||
`provider_server_address`はサーバーのIPアドレスに設定。
|
||||
`config.ini`ファイルを変更して、`provider_name`を`server`に、`provider_model`を`deepseek-r1:xxb`に設定します。
|
||||
`provider_server_address`をモデルを実行するマシンのIPアドレスに設定します。
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
@@ -332,209 +384,299 @@ provider_model = deepseek-r1:70b
|
||||
provider_server_address = http://x.x.x.x:3333
|
||||
```
|
||||
|
||||
次のステップ: [サービスの起動とAgenticSeekの実行](#Start-services-and-Run)
|
||||
次のステップ:[サービスを起動してAgenticSeekを実行](#サービスを起動して実行)
|
||||
|
||||
---
|
||||
|
||||
## 音声認識(Speech to Text)
|
||||
## 音声認識
|
||||
|
||||
注意: 現在音声認識はCLIモードのみ対応
|
||||
警告:現在、音声認識はCLIモードでのみ機能します。
|
||||
|
||||
現状、音声認識は英語のみ対応です。
|
||||
現在、音声認識は英語でのみ機能することに注意してください。
|
||||
|
||||
デフォルトでは無効です。有効にするにはconfig.iniでlistenをTrueにしてください。
|
||||
音声認識機能はデフォルトで無効になっています。有効にするには、config.iniファイルでlistenオプションをTrueに設定します:
|
||||
|
||||
```
|
||||
listen = True
|
||||
```
|
||||
|
||||
有効時は、エージェント名(例: Friday)をトリガーワードとして発話すると認識が始まります。エージェント名は*config.ini*の`agent_name`で変更可能です。
|
||||
有効にすると、音声認識機能はトリガーワード、つまりエージェントの名前をリッスンし、その後入力を処理し始めます。*config.ini*ファイルの`agent_name`値を更新することでエージェントの名前をカスタマイズできます:
|
||||
|
||||
```
|
||||
agent_name = Friday
|
||||
```
|
||||
|
||||
認識精度向上のため、"John"や"Emma"など一般的な英語名を推奨します。
|
||||
最高の認識のためには、エージェント名として「John」や「Emma」などの一般的な英語名を使用することをお勧めします。
|
||||
|
||||
トランスクリプトが表示され始めたら、エージェント名を発話して起動してください(例: "Friday")。
|
||||
文字起こしが表示され始めたら、エージェントの名前を大声で言って起動します(例:「Friday」)。
|
||||
|
||||
クエリを明瞭に話してください。
|
||||
クエリを明確に言います。
|
||||
|
||||
リクエストの終了時に以下のような確認フレーズを発話してください:
|
||||
確認フレーズでリクエストを終了して、システムに続行するように指示します。確認フレーズの例:
|
||||
```
|
||||
"do it", "go ahead", "execute", "run", "start", "thanks", "would ya", "please", "okay?", "proceed", "continue", "go on", "do that", "go it", "do you understand?"
|
||||
```
|
||||
|
||||
## 設定ファイル(Config)
|
||||
## 設定
|
||||
|
||||
設定例:
|
||||
設定例:
|
||||
```
|
||||
[MAIN]
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
provider_server_address = http://127.0.0.1:11434 # Ollama例;LM-Studioはhttp://127.0.0.1:1234を使用
|
||||
agent_name = Friday
|
||||
recover_last_session = False
|
||||
save_session = False
|
||||
speak = False
|
||||
listen = False
|
||||
|
||||
jarvis_personality = False
|
||||
languages = en zh
|
||||
languages = en zh # TTSおよび潜在的なルーティングの言語リスト。
|
||||
[BROWSER]
|
||||
headless_browser = False
|
||||
stealth_mode = False
|
||||
```
|
||||
|
||||
**各項目の説明:**
|
||||
**`config.ini`設定の説明**:
|
||||
|
||||
- is_local -> ローカル実行(True)かリモート(False)か
|
||||
* **`[MAIN]`セクション:**
|
||||
* `is_local`: ローカルLLMプロバイダー(Ollama、LM-Studio、ローカルOpenAI互換サーバー)またはセルフホストサーバーオプションを使用する場合は`True`。クラウドベースのAPI(OpenAI、Googleなど)を使用する場合は`False`。
|
||||
* `provider_name`: LLMプロバイダーを指定します。
|
||||
* ローカルオプション:`ollama`、`lm-studio`、`openai`(ローカルOpenAI互換サーバー用)、`server`(セルフホストサーバー設定用)。
|
||||
* APIオプション:`openai`、`google`、`deepseek`、`huggingface`、`togetherAI`。
|
||||
* `provider_model`: 選択したプロバイダーの特定のモデル名またはID(例:Ollamaの`deepseekcoder:6.7b`、OpenAI APIの`gpt-3.5-turbo`、TogetherAIの`mistralai/Mixtral-8x7B-Instruct-v0.1`)。
|
||||
* `provider_server_address`: あなたのLLMプロバイダーのアドレス。
|
||||
* ローカルプロバイダー用:例:Ollamaの`http://127.0.0.1:11434`、LM-Studioの`http://127.0.0.1:1234`。
|
||||
* `server`プロバイダータイプ用:あなたのセルフホストLLMサーバーのアドレス(例:`http://your_server_ip:3333`)。
|
||||
* クラウドAPI用(`is_local = False`):これは通常無視されるか空にできます。APIエンドポイントは通常クライアントライブラリで処理されるためです。
|
||||
* `agent_name`: AIアシスタントの名前(例:Friday)。有効な場合、音声認識のトリガーワードとして使用されます。
|
||||
* `recover_last_session`: `True`は前のセッションの状態を復元しようとし、`False`は最初から開始します。
|
||||
* `save_session`: `True`は現在のセッションの状態を潜在的な復元用に保存し、`False`はしません。
|
||||
* `speak`: `True`はテキスト読み上げ音声出力を有効にし、`False`は無効にします。
|
||||
* `listen`: `True`は音声認識音声入力を有効にし(CLIモードのみ)、`False`は無効にします。
|
||||
* `work_dir`: **重要:** AgenticSeekがファイルを読み書きするディレクトリ。**このパスがシステムで有効かつアクセス可能であることを確認してください。**
|
||||
* `jarvis_personality`: `True`はより「Jarvis-like」なシステムプロンプトを使用(実験的)、`False`は標準プロンプトを使用。
|
||||
* `languages`: カンマ区切りの言語リスト(例:`en, zh, fr`)。TTS音声選択(デフォルトは最初)に使用され、LLMルーターを支援できます。ルーターの非効率性を避けるため、多すぎる言語や非常に類似した言語の使用は避けてください。
|
||||
* **`[BROWSER]`セクション:**
|
||||
* `headless_browser`: `True`は可視ウィンドウなしで自動化ブラウザを実行(Webインターフェースまたは非対話的使用に推奨)。`False`はブラウザウィンドウを表示(CLIモードまたはデバッグに有用)。
|
||||
* `stealth_mode`: `True`はブラウザ自動化の検出を困難にする措置を有効にします。anticaptchaなどのブラウザ拡張機能の手動インストールが必要な場合があります。
|
||||
|
||||
- provider_name -> 使用するプロバイダー名(`ollama`, `server`, `lm-studio`, `deepseek-api`など)
|
||||
このセクションはサポートされているLLMプロバイダータイプをまとめています。`config.ini`で設定します。
|
||||
|
||||
- provider_model -> 使用モデル例: deepseek-r1:32b
|
||||
**ローカルプロバイダー(独自のハードウェアで実行):**
|
||||
|
||||
- provider_server_address -> サーバーアドレス例: 127.0.0.1:11434(ローカルの場合)。API利用時は任意。
|
||||
| config.iniのプロバイダー名 | `is_local` | 説明 | 設定セクション |
|
||||
|-------------------------------|------------|-----------------------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| `ollama` | `True` | Ollamaを使用してローカルでLLMを簡単に提供。 | [マシン上でローカルにLLMを実行する設定](#マシン上でローカルにllmを実行する設定) |
|
||||
| `lm-studio` | `True` | LM-StudioでローカルにLLMを提供。 | [マシン上でローカルにLLMを実行する設定](#マシン上でローカルにllmを実行する設定) |
|
||||
| `openai`(ローカルサーバー用) | `True` | OpenAI互換APIを公開するローカルサーバー(例:llama.cpp)に接続。 | [マシン上でローカルにLLMを実行する設定](#マシン上でローカルにllmを実行する設定) |
|
||||
| `server` | `False` | 別のマシンで実行されているAgenticSeekセルフホストLLMサーバーに接続。 | [独自のサーバーでLLMを実行する設定](#独自のサーバーでllmを実行する設定) |
|
||||
|
||||
- agent_name -> エージェント名(例: Friday)。TTSのトリガーワード
|
||||
**APIプロバイダー(クラウドベース):**
|
||||
|
||||
- recover_last_session -> 前回セッションから再開(True)/しない(False)
|
||||
| config.iniのプロバイダー名 | `is_local` | 説明 | 設定セクション |
|
||||
|-------------------------------|------------|--------------------------------------------------|-----------------------------------------------------|
|
||||
| `openai` | `False` | OpenAIの公式API(例:GPT-3.5、GPT-4)を使用。 | [APIを使用した実行設定](#apiを使用した実行設定) |
|
||||
| `google` | `False` | APIを通じてGoogleのGeminiモデルを使用。 | [APIを使用した実行設定](#apiを使用した実行設定) |
|
||||
| `deepseek` | `False` | Deepseekの公式APIを使用。 | [APIを使用した実行設定](#apiを使用した実行設定) |
|
||||
| `huggingface` | `False` | Hugging Face Inference APIを使用。 | [APIを使用した実行設定](#apiを使用した実行設定) |
|
||||
| `togetherAI` | `False` | TogetherAIのAPIを通じて様々なオープンモデルを使用。 | [APIを使用した実行設定](#apiを使用した実行設定) |
|
||||
|
||||
- save_session -> セッションデータ保存(True)/しない(False)
|
||||
---
|
||||
## トラブルシューティング
|
||||
|
||||
- speak -> 音声出力有効(True)/無効(False)
|
||||
|
||||
- listen -> 音声入力有効(True)/無効(False)
|
||||
|
||||
- jarvis_personality -> JARVIS風パーソナリティ(True)/通常(False)。プロンプトファイルが変わります。
|
||||
|
||||
- languages -> サポート言語リスト。エージェントルーティングに必要。多すぎる/似た言語は非推奨。
|
||||
|
||||
- headless_browser -> ブラウザを非表示で実行(True)/表示(False)
|
||||
|
||||
- stealth_mode -> ボット検出回避。anticaptcha拡張の手動インストールが必要
|
||||
|
||||
- languages -> サポート言語リスト。ルーティング用。多いほどモデルダウンロード数増加
|
||||
|
||||
## プロバイダー一覧
|
||||
|
||||
| プロバイダー | ローカル? | 説明 |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | はい | ollamaでローカルLLMを簡単に実行 |
|
||||
| server | はい | 別マシンでモデルをホストし、ローカルから利用 |
|
||||
| lm-studio | はい | LM studioでローカルLLMを実行(`lm-studio`) |
|
||||
| openai | 場合による | ChatGPT API(非プライベート)またはopenai互換API |
|
||||
| deepseek-api | いいえ | Deepseek API(非プライベート) |
|
||||
| huggingface| いいえ | Hugging-Face API(非プライベート) |
|
||||
| togetherAI | いいえ | together AI API(非プライベート) |
|
||||
| google | いいえ | google gemini API(非プライベート) |
|
||||
|
||||
プロバイダーの選択はconfig.iniで
|
||||
|
||||
```
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:5000
|
||||
```
|
||||
`is_local`: ローカルLLMならTrue、それ以外はFalse
|
||||
|
||||
`provider_name`: 上記リストから選択
|
||||
|
||||
`provider_model`: 使用モデル
|
||||
|
||||
`provider_server_address`: serverプロバイダー以外は任意
|
||||
問題が発生した場合、このセクションはガイダンスを提供します。
|
||||
|
||||
# 既知の問題
|
||||
|
||||
## Chromedriverの問題
|
||||
## ChromeDriverの問題
|
||||
|
||||
**既知のエラー #1:** *chromedriverのバージョン不一致*
|
||||
**エラー例:** `SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XXX`
|
||||
|
||||
### 根本原因
|
||||
ChromeDriverのバージョン非互換性は以下で発生します:
|
||||
1. インストールしたChromeDriverのバージョンがChromeブラウザのバージョンと一致しない
|
||||
2. Docker環境では、`undetected_chromedriver`が独自のChromeDriverバージョンをダウンロードし、マウントされたバイナリを回避する可能性がある
|
||||
|
||||
### 解決手順
|
||||
|
||||
#### 1. Chromeのバージョンを確認
|
||||
Google Chromeを開く → `設定 > Chromeについて`でバージョンを確認(例:「バージョン 134.0.6998.88」)
|
||||
|
||||
#### 2. 一致するChromeDriverをダウンロード
|
||||
|
||||
**Chrome 115以降の場合:** [Chrome for Testing API](https://googlechromelabs.github.io/chrome-for-testing/)を使用
|
||||
- Chrome for Testingの可用性ダッシュボードにアクセス
|
||||
- あなたのChromeバージョンまたは最も近い利用可能な一致を見つける
|
||||
- オペレーティングシステム用のChromeDriverをダウンロード(Docker環境ではLinux64を使用)
|
||||
|
||||
**古いChromeバージョンの場合:** [レガシーChromeDriverダウンロード](https://chromedriver.chromium.org/downloads)を使用
|
||||
|
||||

|
||||
|
||||
#### 3. ChromeDriverをインストール(方法を選択)
|
||||
|
||||
**方法A:プロジェクトルートディレクトリ(Docker推奨)**
|
||||
```bash
|
||||
# ダウンロードしたchromedriverバイナリをプロジェクトルートディレクトリに配置
|
||||
cp path/to/downloaded/chromedriver ./chromedriver
|
||||
chmod +x ./chromedriver # Linux/macOSで実行可能にする
|
||||
```
|
||||
|
||||
**方法B:システムPATH**
|
||||
```bash
|
||||
# Linux/macOS
|
||||
sudo mv chromedriver /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/chromedriver
|
||||
|
||||
# Windows: chromedriver.exeをPATH内のフォルダに配置
|
||||
```
|
||||
|
||||
#### 4. インストールを確認
|
||||
```bash
|
||||
# ChromeDriverのバージョンをテスト
|
||||
./chromedriver --version
|
||||
# またはPATHにある場合:
|
||||
chromedriver --version
|
||||
```
|
||||
|
||||
### Docker固有の指示
|
||||
|
||||
⚠️ **Dockerユーザーへの重要:**
|
||||
- Dockerボリュームマウント方法はステルスモード(`undetected_chromedriver`)では機能しない可能性があります
|
||||
- **解決策:** ChromeDriverをプロジェクトルートディレクトリに`./chromedriver`として配置
|
||||
- アプリケーションが自動的に検出し、このバイナリを使用します
|
||||
- ログに次のメッセージが表示されるはずです:`"Using ChromeDriver from project root: ./chromedriver"`
|
||||
|
||||
### トラブルシューティングのヒント
|
||||
|
||||
1. **まだバージョンの不一致が発生しますか?**
|
||||
- ChromeDriverが実行可能か確認:`ls -la ./chromedriver`
|
||||
- ChromeDriverのバージョンを確認:`./chromedriver --version`
|
||||
- Chromeブラウザのバージョンと一致することを確認
|
||||
|
||||
2. **Dockerコンテナの問題ですか?**
|
||||
- バックエンドログを確認:`docker logs backend`
|
||||
- メッセージを探す:`"Using ChromeDriver from project root"`
|
||||
- 見つからない場合は、ファイルが存在し実行可能であることを確認
|
||||
|
||||
3. **Chrome for Testingのバージョン**
|
||||
- 可能な限り完全一致を使用
|
||||
- バージョン134.0.6998.88の場合、ChromeDriver 134.0.6998.165を使用(最も近い利用可能バージョン)
|
||||
- メジャーバージョン番号は一致する必要があります(134 = 134)
|
||||
|
||||
### バージョン互換性マトリックス
|
||||
|
||||
| Chromeバージョン | ChromeDriverバージョン | ステータス |
|
||||
|----------------|---------------------|---------|
|
||||
| 134.0.6998.x | 134.0.6998.165 | ✅ 利用可能 |
|
||||
| 133.0.6943.x | 133.0.6943.141 | ✅ 利用可能 |
|
||||
| 132.0.6834.x | 132.0.6834.159 | ✅ 利用可能 |
|
||||
|
||||
*最新の互換性については、[Chrome for Testingダッシュボード](https://googlechromelabs.github.io/chrome-for-testing/)を確認*
|
||||
|
||||
`Exception: Failed to initialize browser: Message: session not created: This version of ChromeDriver only supports Chrome version 113
|
||||
Current browser version is 134.0.6998.89 with binary path`
|
||||
|
||||
これはブラウザとchromedriverのバージョンが一致していない場合に発生します。
|
||||
ブラウザとchromedriverのバージョンが一致しない場合に発生します。
|
||||
|
||||
最新版は下記からダウンロードしてください:
|
||||
最新バージョンをダウンロードする必要があります:
|
||||
|
||||
https://developer.chrome.com/docs/chromedriver/downloads
|
||||
|
||||
Chrome 115以降の場合は
|
||||
Chromeバージョン115以降を使用している場合は、以下にアクセス:
|
||||
|
||||
https://googlechromelabs.github.io/chrome-for-testing/
|
||||
|
||||
からOSに合ったchromedriverをダウンロード
|
||||
オペレーティングシステムに一致するchromedriverバージョンをダウンロードします。
|
||||
|
||||

|
||||
|
||||
このセクションが不十分な場合はissueを立ててください。
|
||||
このセクションが不完全な場合は、issueを開いてください。
|
||||
|
||||
## connection adaptersの問題
|
||||
## 接続アダプターの問題
|
||||
|
||||
```
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:11434/v1/chat/completions'
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:1234/v1/chat/completions'`(注:ポートは異なる場合があります)
|
||||
```
|
||||
|
||||
provider IPアドレスの前に`http://`を付けてください:
|
||||
* **原因:** `config.ini`の`lm-studio`(または他の類似のローカルOpenAI互換サーバー)の`provider_server_address`に`http://`プレフィックスが欠けているか、間違ったポートを指している。
|
||||
* **解決策:**
|
||||
* アドレスに`http://`が含まれていることを確認。LM-Studioは通常デフォルトで`http://127.0.0.1:1234`を使用。
|
||||
* 正しい`config.ini`:`provider_server_address = http://127.0.0.1:1234`(または実際のLM-Studioサーバーポート)。
|
||||
|
||||
`provider_server_address = http://127.0.0.1:11434`
|
||||
|
||||
## SearxNG base URLが必要
|
||||
## SearxNGベースURLが提供されていない
|
||||
|
||||
```
|
||||
raise ValueError("SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.")
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.`
|
||||
```
|
||||
|
||||
`.env.example`を`.env`にリネームしていない場合に発生します。もしくは下記でエクスポート:
|
||||
間違ったsearxngベースURLでCLIモードを実行すると発生する可能性があります。
|
||||
|
||||
`export SEARXNG_BASE_URL="http://127.0.0.1:8080"`
|
||||
SEARXNG_BASE_URLは、Dockerで実行するかホストで実行するかによって異なります:
|
||||
|
||||
**ホストで実行:** `SEARXNG_BASE_URL="http://localhost:8080"`
|
||||
|
||||
**完全にDocker内で実行(Webインターフェース):** `SEARXNG_BASE_URL="http://searxng:8080"`
|
||||
|
||||
## FAQ
|
||||
|
||||
**Q: どんなハードウェアが必要?**
|
||||
**Q: どのようなハードウェアが必要ですか?**
|
||||
|
||||
| モデルサイズ | GPU | コメント |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| 7B | 8GB Vram | ⚠️ 推奨しません。性能が低く、幻覚やプランナー失敗が多発します。 |
|
||||
| 14B | 12 GB VRAM (例: RTX 3060) | ✅ 簡単なタスクなら使用可。ウェブブラウジングや計画タスクは苦手。 |
|
||||
| 32B | 24+ GB VRAM (例: RTX 4090) | 🚀 ほとんどのタスクで成功。計画タスクはやや苦手 |
|
||||
| 70B+ | 48+ GB Vram (例: mac studio) | 💪 高度な用途に最適。推奨 |
|
||||
| 7B | 8GB VRAM | ⚠️ 非推奨。パフォーマンスが低く、頻繁な幻覚、計画エージェントが失敗する可能性があります。 |
|
||||
| 14B | 12 GB VRAM(例:RTX 3060) | ✅ 単純なタスクに使用可能。ウェブブラウジングとタスク計画に困難がある可能性があります。 |
|
||||
| 32B | 24+ GB VRAM(例:RTX 4090) | 🚀 ほとんどのタスクで成功、タスク計画にまだ困難がある可能性があります |
|
||||
| 70B+ | 48+ GB VRAM | 💪 優れています。高度な使用例に推奨。 |
|
||||
|
||||
**Q: なぜDeepseek R1を推奨?**
|
||||
**Q: エラーが発生したらどうすればよいですか?**
|
||||
|
||||
Deepseek R1は推論やツール利用に優れています。他モデルも使えますが、Deepseekが主力です。
|
||||
ローカルが実行されていること(`ollama serve`)、`config.ini`がプロバイダーと一致していること、依存関係がインストールされていることを確認してください。どれも機能しない場合は、遠慮なくissueを開いてください。
|
||||
|
||||
**Q: `cli.py`実行時にエラーが出る場合は?**
|
||||
**Q: 本当に100%ローカルで実行できますか?**
|
||||
|
||||
`ollama serve`が動作しているか、`config.ini`が正しいか、依存パッケージがインストールされているか確認してください。解決しない場合はissueを立ててください。
|
||||
はい、Ollama、lm-studio、またはserverプロバイダーを使用すると、すべての音声認識、LLM、テキスト読み上げモデルがローカルで実行されます。非ローカルオプション(OpenAI或其他API)はオプションです。
|
||||
|
||||
**Q: 本当に100%ローカルで動作する?**
|
||||
**Q: Manusがあるのに、なぜAgenticSeekを使用する必要がありますか?**
|
||||
|
||||
Ollama、lm-studio、serverプロバイダーなら音声認識・LLM・音声合成すべてローカルで動作します。API利用はオプションです。
|
||||
Manusとは異なり、AgenticSeekは外部システムからの独立性を優先し、より多くの制御、プライバシー、APIコストの回避を提供します。
|
||||
|
||||
**Q: ManusがあるのにAgenticSeekを使う理由は?**
|
||||
**Q: このプロジェクトの背後には誰がいますか?**
|
||||
|
||||
このプロジェクトはローカルモデル利用とAPI回避を目的に始まりました。JarvisやFriday(アイアンマン)風の「かっこよさ」とManusの機能性を両立。Manusと違い外部依存を排除し、プライバシーとコスト削減を重視しています。
|
||||
このプロジェクトは私によって作成され、2人の友人がメンテナーとして、GitHub上のオープンソースコミュニティの貢献者と共に運営されています。私たちは単なる情熱的な個人であり、スタートアップではなく、どの組織にも所属していません。
|
||||
|
||||
## コントリビュート
|
||||
私の個人アカウント(https://x.com/Martin993886460)以外のX上のAgenticSeekアカウントはすべて偽物です。
|
||||
|
||||
AgenticSeekの改善にご協力ください!issueやディスカッションをチェック
|
||||
## 貢献
|
||||
|
||||
[コントリビューションガイド](./docs/CONTRIBUTING.md)
|
||||
AgenticSeekを改善する開発者を探しています!オープンなissueやディスカッションを確認してください。
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
[貢献ガイド](./docs/CONTRIBUTING.md)
|
||||
|
||||
## メンテナー:
|
||||
## スポンサー:
|
||||
|
||||
フライト検索、旅行計画、または最高の買い物のお得な情報の取得などの機能でAgenticSeekの能力を向上させたいですか?SerpApiを使用してカスタムツールを作成し、より多くのJarvisのような機能を解放することを検討してください。SerpApiを使用すると、プロフェッショナルなタスクのためにエージェントを加速させながら、完全な制御を維持できます。
|
||||
|
||||
<a href="https://serpapi.com/"><img src="./media/banners/sponsor_banner_serpapi.png" height="350" alt="SerpApi Banner" ></a>
|
||||
|
||||
[Contributing.md](./docs/CONTRIBUTING.md)をチェックして、カスタムツールを統合する方法を学びましょう!
|
||||
|
||||
### **スポンサー**:
|
||||
|
||||
- [tatra-labs](https://github.com/tatra-labs)
|
||||
|
||||
## メンテナー:
|
||||
|
||||
> [Fosowl](https://github.com/Fosowl) | パリ時間
|
||||
|
||||
> [antoineVIVIES](https://github.com/antoineVIVIES) | 台北時間
|
||||
|
||||
> [steveh8758](https://github.com/steveh8758) | 台北時間
|
||||
## 特別な感謝:
|
||||
|
||||
## Special Thanks:
|
||||
|
||||
> [tcsenpai](https://github.com/tcsenpai) および [plitc](https://github.com/plitc) バックエンドDocker化への貢献に感謝
|
||||
> [tcsenpai](https://github.com/tcsenpai) と [plitc](https://github.com/plitc) がバックエンドのDocker化を支援
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
|
||||
+367
-231
@@ -1,48 +1,52 @@
|
||||
# AgenticSeek: Alternativa Privada e Local ao Manus.
|
||||
# AgenticSeek: Uma Alternativa Privada e Local ao Manus
|
||||
|
||||
<p align="center">
|
||||
<img align="center" src="./media/agentic_seek_logo.png" width="300" height="300" alt="Agentic Seek Logo">
|
||||
<p>
|
||||
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md)
|
||||
English | [中文](./README_CHS.md) | [繁體中文](./README_CHT.md) | [Français](./README_FR.md) | [日本語](./README_JP.md) | [Português (Brasil)](./README_PTBR.md) | [Español](./README_ES.md)
|
||||
|
||||
*Uma **alternativa 100% local ao Manus AI**, este assistente de voz com IA navega autonomamente na web, escreve código e planeja tarefas mantendo todos os dados no seu dispositivo. Feito para modelos de raciocínio locais, roda inteiramente no seu hardware, garantindo total privacidade e zero dependência da nuvem.*
|
||||
*Um assistente de IA com reconhecimento de voz que é uma **alternativa 100% local ao Manus AI**, navega autonomamente na web, escreve código e planeja tarefas enquanto mantém todos os dados no seu dispositivo. Projetado para modelos de raciocínio local, funciona inteiramente no seu hardware, garantindo total privacidade e zero dependência de nuvem.*
|
||||
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
[](https://fosowl.github.io/agenticSeek.html)  [](https://discord.gg/8hGDaME3TC) [](https://x.com/Martin993886460) [](https://github.com/Fosowl/agenticSeek/stargazers)
|
||||
|
||||
### Por que AgenticSeek?
|
||||
### Por que escolher o AgenticSeek?
|
||||
|
||||
* 🔒 Totalmente Local & Privado - Tudo roda na sua máquina — sem nuvem, sem compartilhamento de dados. Seus arquivos, conversas e buscas permanecem privados.
|
||||
* 🔒 Totalmente Local & Privado - Tudo funciona na sua máquina, sem nuvem, sem compartilhamento de dados. Seus arquivos, conversas e pesquisas permanecem privados.
|
||||
|
||||
* 🌐 Navegação Inteligente na Web - O AgenticSeek pode navegar na internet sozinho — pesquisar, ler, extrair informações, preencher formulários — tudo sem as mãos.
|
||||
* 🌐 Navegação Web Inteligente - O AgenticSeek pode navegar na Internet autonomamente: pesquisar, ler, extrair informações, preencher formulários web, tudo sem intervenção manual.
|
||||
|
||||
* 💻 Assistente Autônomo de Programação - Precisa de código? Ele pode escrever, depurar e executar programas em Python, C, Go, Java e mais — tudo sem supervisão.
|
||||
* 💻 Assistente de Programação Autônomo - Precisa de código? Ele pode escrever, depurar e executar programas em Python, C, Go, Java e muito mais, sem supervisão.
|
||||
|
||||
* 🧠 Seleção Inteligente de Agentes - Você pede, ele escolhe automaticamente o melhor agente para a tarefa. Como ter uma equipe de especialistas pronta para ajudar.
|
||||
* 🧠 Seleção Inteligente de Agentes - Você pergunta, ele escolhe automaticamente o melhor agente para a tarefa. Como ter uma equipe de especialistas sempre disponível.
|
||||
|
||||
* 📋 Planeja & Executa Tarefas Complexas - De planejamento de viagens a projetos complexos — pode dividir grandes tarefas em etapas e concluí-las usando múltiplos agentes de IA.
|
||||
* 📋 Planeja e Executa Tarefas Complexas - Desde o planejamento de viagens até projetos complexos, ele pode decompor grandes tarefas em etapas e completá-las usando múltiplos agentes de IA.
|
||||
|
||||
* 🎙️ Ativado por Voz - Voz limpa, rápida e futurista, além de reconhecimento de fala, permitindo que você converse como se fosse sua IA pessoal de um filme de ficção científica. (Em desenvolvimento)
|
||||
* 🎙️ Suporte de Voz - Voz clara, rápida e futurista com reconhecimento de voz, permitindo que você converse como com sua IA pessoal de filme de ficção científica. (Em desenvolvimento)
|
||||
|
||||
### **Demo**
|
||||
|
||||
> *Você pode pesquisar sobre o projeto agenticSeek, aprender quais habilidades são necessárias, depois abrir o CV_candidates.zip e então me dizer quais combinam melhor com o projeto?*
|
||||
> *Você pode pesquisar o projeto agenticSeek, aprender quais habilidades são necessárias e, em seguida, abrir CV_candidates.zip e me dizer quais correspondem melhor ao projeto?*
|
||||
|
||||
https://github.com/user-attachments/assets/b8ca60e9-7b3b-4533-840e-08f9ac426316
|
||||
|
||||
Aviso: Esta demonstração, incluindo todos os arquivos que aparecem (ex: CV_candidates.zip), são totalmente fictícios. Não somos uma corporação, buscamos colaboradores open-source, não candidatos.
|
||||
Aviso: Esta demonstração e todos os arquivos que aparecem (ex: CV_candidates.zip) são totalmente fictícios. Não somos uma empresa, estamos procurando contribuidores de código aberto, não candidatos.
|
||||
|
||||
> 🛠⚠️️ **Trabalho Ativo em Progresso**
|
||||
> 🛠⚠️️ **Trabalho Ativo em Andamento**
|
||||
|
||||
> 🙏 Este projeto começou como um projeto paralelo e não tem roteiro nem financiamento. Cresceu muito além do esperado ao aparecer no GitHub Trending. Contribuições, feedback e paciência são profundamente apreciados.
|
||||
> 🙏 Este projeto começou como um projeto paralelo e não tem roadmap nem financiamento. Cresceu muito além das expectativas ao aparecer no GitHub Trending. Contribuições, comentários e paciência são profundamente apreciados.
|
||||
|
||||
## Pré-requisitos
|
||||
|
||||
Certifique-se de ter chrome driver, docker e python3.10 instalados.
|
||||
Antes de começar, certifique-se de ter instalado:
|
||||
|
||||
Para problemas relacionados ao chrome driver, veja a seção **Chromedriver**.
|
||||
* **Git:** Para clonar o repositório. [Baixar Git](https://git-scm.com/downloads)
|
||||
* **Python 3.10.x:** Python 3.10.x é altamente recomendado. Outras versões podem causar erros de dependência. [Baixar Python 3.10](https://www.python.org/downloads/release/python-3100/) (selecione a versão 3.10.x).
|
||||
* **Docker Engine & Docker Compose:** Para executar serviços empacotados como SearxNG.
|
||||
* Instalar Docker Desktop (inclui Docker Compose V2): [Windows](https://docs.docker.com/desktop/install/windows-install/) | [Mac](https://docs.docker.com/desktop/install/mac-install/) | [Linux](https://docs.docker.com/desktop/install/linux-install/)
|
||||
* Ou instalar Docker Engine e Docker Compose separadamente no Linux: [Docker Engine](https://docs.docker.com/engine/install/) | [Docker Compose](https://docs.docker.com/compose/install/) (certifique-se de instalar Compose V2, por exemplo `sudo apt-get install docker-compose-plugin`).
|
||||
|
||||
### 1. **Clone o repositório e configure**
|
||||
### 1. **Clonar o repositório e configurar**
|
||||
|
||||
```sh
|
||||
git clone https://github.com/Fosowl/agenticSeek.git
|
||||
@@ -50,65 +54,69 @@ cd agenticSeek
|
||||
mv .env.example .env
|
||||
```
|
||||
|
||||
### 2. Altere o conteúdo do arquivo .env
|
||||
### 2. Modificar o conteúdo do arquivo .env
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://127.0.0.1:8080"
|
||||
SEARXNG_BASE_URL="http://searxng:8080" # Se você executar no modo CLI no host, use 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='opcional'
|
||||
DEEPSEEK_API_KEY='opcional'
|
||||
OPENROUTER_API_KEY='opcional'
|
||||
TOGETHER_API_KEY='opcional'
|
||||
GOOGLE_API_KEY='opcional'
|
||||
ANTHROPIC_API_KEY='opcional'
|
||||
OPENAI_API_KEY='optional'
|
||||
DEEPSEEK_API_KEY='optional'
|
||||
OPENROUTER_API_KEY='optional'
|
||||
TOGETHER_API_KEY='optional'
|
||||
GOOGLE_API_KEY='optional'
|
||||
ANTHROPIC_API_KEY='optional'
|
||||
```
|
||||
|
||||
**As chaves de API são totalmente opcionais para quem optar por rodar LLM localmente. Que é o objetivo principal deste projeto. Deixe em branco se você tiver hardware suficiente**
|
||||
Atualize o arquivo `.env` conforme necessário:
|
||||
|
||||
As seguintes variáveis de ambiente configuram as conexões e chaves de API do seu aplicativo.
|
||||
- **SEARXNG_BASE_URL**: Mantenha inalterado, a menos que você execute no modo CLI no host.
|
||||
- **REDIS_BASE_URL**: Mantenha inalterado
|
||||
- **WORK_DIR**: Caminho para o diretório de trabalho local. O AgenticSeek poderá ler e interagir com esses arquivos.
|
||||
- **OLLAMA_PORT**: Número da porta para o serviço Ollama.
|
||||
- **LM_STUDIO_PORT**: Número da porta para o serviço LM Studio.
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: Porta para qualquer serviço LLM personalizado adicional.
|
||||
|
||||
Atualize o arquivo `.env` com seus próprios valores conforme necessário:
|
||||
**As chaves de API são completamente opcionais para aqueles que optam por executar LLM localmente, que é o objetivo principal deste projeto. Deixe-as vazias se você tiver hardware suficiente.**
|
||||
|
||||
- **SEARXNG_BASE_URL**: Deixe inalterado
|
||||
- **REDIS_BASE_URL**: Deixe inalterado
|
||||
- **WORK_DIR**: Caminho para seu diretório de trabalho local. O AgenticSeek poderá ler e interagir com esses arquivos.
|
||||
- **OLLAMA_PORT**: Porta para o serviço Ollama.
|
||||
- **LM_STUDIO_PORT**: Porta para o serviço LM Studio.
|
||||
- **CUSTOM_ADDITIONAL_LLM_PORT**: Porta para qualquer serviço LLM adicional.
|
||||
### 3. **Iniciar o Docker**
|
||||
|
||||
Todas as variáveis de ambiente de chave de API abaixo são **opcionais**. Só forneça se for usar APIs externas em vez de rodar LLMs localmente.
|
||||
Certifique-se de que o Docker está instalado e funcionando no seu sistema. Você pode iniciar o Docker com os seguintes comandos:
|
||||
|
||||
### 3. **Inicie o Docker**
|
||||
|
||||
Certifique-se de que o Docker está instalado e rodando no seu sistema. Você pode iniciar o Docker com os seguintes comandos:
|
||||
|
||||
- **No Linux/macOS:**
|
||||
- **Linux/macOS:**
|
||||
Abra um terminal e execute:
|
||||
```sh
|
||||
sudo systemctl start docker
|
||||
```
|
||||
Ou inicie o Docker Desktop pelo menu de aplicativos, se instalado.
|
||||
Ou inicie o Docker Desktop a partir do menu de aplicativos, se instalado.
|
||||
|
||||
- **No Windows:**
|
||||
Inicie o Docker Desktop pelo menu Iniciar.
|
||||
- **Windows:**
|
||||
Inicie o Docker Desktop a partir do menu Iniciar.
|
||||
|
||||
Você pode verificar se o Docker está rodando executando:
|
||||
Você pode verificar se o Docker está funcionando executando:
|
||||
```sh
|
||||
docker info
|
||||
```
|
||||
Se aparecerem informações sobre sua instalação do Docker, está funcionando corretamente.
|
||||
Se você vir informações sobre sua instalação do Docker, ele está funcionando corretamente.
|
||||
|
||||
Consulte a [Lista de provedores locais](#lista-de-provedores-locais) abaixo para um resumo.
|
||||
|
||||
Próxima etapa: [Executar o AgenticSeek localmente](#iniciar-os-serviços-e-executar)
|
||||
|
||||
*Se você encontrar problemas, consulte a seção [Solução de problemas](#solução-de-problemas).*
|
||||
*Se seu hardware não puder executar LLM localmente, consulte [Configuração para executar com uma API](#configuração-para-executar-com-uma-api).*
|
||||
*Para explicações detalhadas do `config.ini`, consulte a [seção Configuração](#configuração).*
|
||||
|
||||
---
|
||||
|
||||
## Configuração para rodar LLM localmente na sua máquina
|
||||
## Configuração para executar LLM localmente na sua máquina
|
||||
|
||||
**Requisitos de Hardware:**
|
||||
**Requisitos de hardware:**
|
||||
|
||||
Para rodar LLMs localmente, você precisará de hardware suficiente. No mínimo, uma GPU capaz de rodar Qwen/Deepseek 14B é necessária. Veja o FAQ para recomendações detalhadas de modelo/desempenho.
|
||||
Para executar LLM localmente, você precisará de hardware suficiente. No mínimo, uma GPU capaz de executar Magistral, Qwen ou Deepseek 14B é necessária. Consulte o FAQ para recomendações detalhadas de modelo/desempenho.
|
||||
|
||||
**Configure seu provedor local**
|
||||
|
||||
@@ -118,187 +126,229 @@ Inicie seu provedor local, por exemplo com ollama:
|
||||
ollama serve
|
||||
```
|
||||
|
||||
Veja abaixo a lista de provedores locais suportados.
|
||||
Consulte a lista de provedores locais suportados abaixo.
|
||||
|
||||
**Atualize o config.ini**
|
||||
**Atualizar config.ini**
|
||||
|
||||
Altere o arquivo config.ini para definir o provider_name para um provedor suportado e provider_model para um LLM suportado pelo seu provedor. Recomendamos modelos de raciocínio como *Qwen* ou *Deepseek*.
|
||||
Altere o arquivo config.ini para definir provider_name como um provedor suportado e provider_model como um LLM suportado pelo seu provedor. Recomendamos modelos de raciocínio como *Magistral* ou *Deepseek*.
|
||||
|
||||
Veja o **FAQ** no final do README para hardware necessário.
|
||||
Consulte o **FAQ** no final do README para o hardware necessário.
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
is_local = True # Se está rodando localmente ou com provedor remoto.
|
||||
is_local = True # Se você está executando localmente ou com um provedor remoto.
|
||||
provider_name = ollama # ou lm-studio, openai, etc.
|
||||
provider_model = deepseek-r1:14b # escolha um modelo compatível com seu hardware
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
agent_name = Jarvis # nome da sua IA
|
||||
recover_last_session = True # recuperar sessão anterior
|
||||
save_session = True # lembrar sessão atual
|
||||
agent_name = Jarvis # o nome da sua IA
|
||||
recover_last_session = True # recuperar a sessão anterior
|
||||
save_session = True # memorizar a sessão atual
|
||||
speak = False # texto para fala
|
||||
listen = False # fala para texto, apenas para CLI, experimental
|
||||
jarvis_personality = False # usar personalidade "Jarvis" (experimental)
|
||||
languages = en zh # Lista de idiomas, TTS usará o primeiro da lista
|
||||
jarvis_personality = False # usar uma personalidade mais "Jarvis" (experimental)
|
||||
languages = en zh # Lista de idiomas, TTS usará o primeiro da lista por padrão
|
||||
[BROWSER]
|
||||
headless_browser = True # deixe inalterado a menos que use CLI no host.
|
||||
stealth_mode = True # Usa selenium indetectável para reduzir detecção do navegador
|
||||
headless_browser = True # mantenha inalterado, a menos que use CLI no host.
|
||||
stealth_mode = True # Use selenium indetectável para reduzir a detecção do navegador
|
||||
```
|
||||
|
||||
**Aviso**:
|
||||
|
||||
- O formato do arquivo `config.ini` não suporta comentários.
|
||||
Não copie e cole a configuração de exemplo diretamente, pois comentários causarão erros. Em vez disso, modifique manualmente o arquivo `config.ini` com suas configurações desejadas, sem comentários.
|
||||
Não copie e cole diretamente a configuração de exemplo, pois os comentários causarão erros. Em vez disso, modifique manualmente o arquivo `config.ini` com sua configuração desejada, sem comentários.
|
||||
|
||||
- *NÃO* defina provider_name como `openai` se estiver usando LM-studio para rodar LLMs. Use `lm-studio`.
|
||||
- *NÃO* defina provider_name como `openai` se você estiver usando LM-studio para executar LLM. Use-o como `lm-studio`.
|
||||
|
||||
- Alguns provedores (ex: lm-studio) exigem `http://` antes do IP. Exemplo: `http://127.0.0.1:1234`
|
||||
|
||||
**Lista de provedores locais**
|
||||
|
||||
| Provedor | Local ? | Descrição |
|
||||
|------------|--------|---------------------------------------------------------|
|
||||
| ollama | Sim | Rode LLMs localmente facilmente usando ollama |
|
||||
| lm-studio | Sim | Rode LLM localmente com LM studio (`provider_name` = `lm-studio`)|
|
||||
| openai | Sim | Use API compatível com openai (ex: servidor llama.cpp) |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| ollama | Sim | Executa LLM localmente facilmente usando ollama |
|
||||
| lm-studio | Sim | Executa LLM localmente com LM studio (defina `provider_name` = `lm-studio`)|
|
||||
| openai | Sim | Use uma API compatível com openai (ex: servidor llama.cpp) |
|
||||
|
||||
Próximo passo: [Inicie os serviços e rode o AgenticSeek](#Start-services-and-Run)
|
||||
Próxima etapa: [Iniciar os serviços e executar o AgenticSeek](#iniciar-os-serviços-e-executar)
|
||||
|
||||
*Veja a seção **Problemas conhecidos** se tiver problemas*
|
||||
*Se você encontrar problemas, consulte a seção [Solução de problemas](#solução-de-problemas).*
|
||||
*Se seu hardware não puder executar LLM localmente, consulte [Configuração para executar com uma API](#configuração-para-executar-com-uma-api).*
|
||||
*Para explicações detalhadas do `config.ini`, consulte a [seção Configuração](#configuração).*
|
||||
|
||||
*Veja a seção **Rodar com uma API** se seu hardware não rodar deepseek localmente*
|
||||
## Configuração para executar com uma API
|
||||
|
||||
*Veja a seção **Config** para explicação detalhada do arquivo de configuração.*
|
||||
Esta configuração usa provedores de LLM externos baseados em nuvem. Você precisará obter chaves de API do serviço escolhido.
|
||||
|
||||
---
|
||||
**1. Escolha um provedor de API e obtenha uma chave de API:**
|
||||
|
||||
## Configuração para rodar com uma API
|
||||
Consulte a [Lista de provedores de API](#lista-de-provedores-de-api) abaixo. Visite seus sites para se inscrever e obter chaves de API.
|
||||
|
||||
**Rodar com uma API é opcional, veja acima para rodar localmente.**
|
||||
|
||||
Defina o provedor desejado no `config.ini`. Veja abaixo a lista de provedores de API.
|
||||
**2. Defina sua chave de API como variável de ambiente:**
|
||||
|
||||
* **Linux/macOS:**
|
||||
Abra um terminal e use o comando `export`. É melhor adicioná-lo ao arquivo de configuração do seu shell (ex: `~/.bashrc`, `~/.zshrc`) para que seja persistente.
|
||||
```sh
|
||||
export PROVIDER_API_KEY="your_api_key_here"
|
||||
# Substitua PROVIDER_API_KEY pelo nome de variável específico, ex: OPENAI_API_KEY, GOOGLE_API_KEY
|
||||
```
|
||||
Exemplo TogetherAI:
|
||||
```sh
|
||||
export TOGETHER_API_KEY="xxxxxxxxxxxxxxxxxxxxxx"
|
||||
```
|
||||
* **Windows:**
|
||||
* **Prompt de comando (temporário para a sessão atual):**
|
||||
```cmd
|
||||
set PROVIDER_API_KEY=your_api_key_here
|
||||
```
|
||||
* **PowerShell (temporário para a sessão atual):**
|
||||
```powershell
|
||||
$env:PROVIDER_API_KEY="your_api_key_here"
|
||||
```
|
||||
* **Permanente:** Pesquise "variáveis de ambiente" na barra de pesquisa do Windows, clique em "Editar variáveis de ambiente do sistema" e depois no botão "Variáveis de ambiente...". Adicione uma nova variável de usuário com o nome apropriado (ex: `OPENAI_API_KEY`) e sua chave como valor.
|
||||
|
||||
*(Para mais detalhes, consulte o FAQ: [Como configurar uma chave de API?](#como-configurar-uma-chave-de-api)).*
|
||||
|
||||
|
||||
**3. Atualize `config.ini`:**
|
||||
```ini
|
||||
[MAIN]
|
||||
is_local = False
|
||||
provider_name = google
|
||||
provider_model = gemini-2.0-flash
|
||||
provider_server_address = 127.0.0.1:5000 # não importa
|
||||
provider_name = openai # ou google, deepseek, togetherAI, huggingface
|
||||
provider_model = gpt-3.5-turbo # ou gemini-1.5-flash, deepseek-chat, mistralai/Mixtral-8x7B-Instruct-v0.1, etc.
|
||||
provider_server_address = # Quando is_local = False, geralmente ignorado ou pode ser deixado vazio para a maioria das APIs
|
||||
# ... outras configurações ...
|
||||
```
|
||||
Aviso: Certifique-se de não haver espaço no final da linha no config.
|
||||
|
||||
Exporte sua chave de API: `export <<PROVIDER>>_API_KEY="xxx"`
|
||||
|
||||
Exemplo: exportar `TOGETHER_API_KEY="xxxxx"`
|
||||
*Aviso:* Certifique-se de que não há espaços no final dos valores no config.
|
||||
|
||||
**Lista de provedores de API**
|
||||
|
||||
| Provedor | Local? | Descrição |
|
||||
|------------|--------|---------------------------------------------------------|
|
||||
| openai | Depende| Use API do ChatGPT |
|
||||
| deepseek | Não | API Deepseek (não privado) |
|
||||
| huggingface| Não | API Hugging-Face (não privado) |
|
||||
| togetherAI | Não | Use API together AI (não privado) |
|
||||
| google | Não | Use API google gemini (não privado) |
|
||||
| Provedor | `provider_name` | Local ? | Descrição | Link da chave de API (exemplo) |
|
||||
|--------------|-----------------|--------|---------------------------------------------------|---------------------------------------------|
|
||||
| OpenAI | `openai` | Não | Use os modelos ChatGPT via API OpenAI. | [platform.openai.com/signup](https://platform.openai.com/signup) |
|
||||
| Google Gemini| `google` | Não | Use os modelos Google Gemini via Google AI Studio. | [aistudio.google.com/keys](https://aistudio.google.com/keys) |
|
||||
| Deepseek | `deepseek` | Não | Use os modelos Deepseek via sua API. | [platform.deepseek.com](https://platform.deepseek.com) |
|
||||
| Hugging Face | `huggingface` | Não | Use modelos do Hugging Face Inference API. | [huggingface.co/settings/tokens](https://huggingface.co/settings/tokens) |
|
||||
| TogetherAI | `togetherAI` | Não | Use vários modelos open source via API TogetherAI.| [api.together.ai/settings/api-keys](https://api.together.ai/settings/api-keys) |
|
||||
|
||||
Observe que código/bash pode falhar com gemini, pois ignora nosso prompt de formatação, que é otimizado para deepseek r1. Modelos como gpt-4o também apresentam desempenho ruim com nosso prompt.
|
||||
*Nota:*
|
||||
* Não recomendamos usar `gpt-4o` ou outros modelos OpenAI para navegação web complexa e planejamento de tarefas, pois a otimização atual de prompts visa modelos como Deepseek.
|
||||
* Tarefas de codificação/bash podem falhar com Gemini, pois tende a ignorar nosso formato de prompt otimizado para Deepseek r1.
|
||||
* Quando `is_local = False`, `provider_server_address` no `config.ini` geralmente não é usado, pois os endpoints de API são geralmente gerenciados pelas bibliotecas do provedor correspondente.
|
||||
|
||||
Próximo passo: [Inicie os serviços e rode o AgenticSeek](#Start-services-and-Run)
|
||||
Próxima etapa: [Iniciar os serviços e executar o AgenticSeek](#iniciar-os-serviços-e-executar)
|
||||
|
||||
*Veja a seção **Problemas conhecidos** se tiver problemas*
|
||||
*Se você encontrar problemas, consulte a seção **Problemas conhecidos***
|
||||
|
||||
*Veja a seção **Config** para explicação detalhada do arquivo de configuração.*
|
||||
*Para explicações detalhadas do arquivo de configuração, consulte a **seção Configuração**.*
|
||||
|
||||
---
|
||||
|
||||
## Inicie os serviços e rode
|
||||
## Iniciar os serviços e executar
|
||||
|
||||
Por padrão, o AgenticSeek é executado inteiramente no Docker.
|
||||
|
||||
**Opção 1:** Executar no Docker com interface web:
|
||||
|
||||
Inicie os serviços necessários. Isso iniciará todos os serviços do docker-compose.yml, incluindo:
|
||||
- searxng
|
||||
- redis (necessário para searxng)
|
||||
- frontend
|
||||
- backend (se usar `full`)
|
||||
- backend (se você usar `full` para a interface web)
|
||||
|
||||
```sh
|
||||
./start_services.sh full # MacOS
|
||||
start start_services.cmd full # Windows
|
||||
```
|
||||
|
||||
**Aviso:** Este passo fará download e carregará todas as imagens Docker, o que pode levar até 30 minutos. Após iniciar os serviços, aguarde até que o serviço backend esteja totalmente rodando (você verá backend: <info> no log) antes de enviar mensagens. O backend pode demorar mais para iniciar.
|
||||
**Aviso:** Esta etapa baixará e carregará todas as imagens do Docker, o que pode levar até 30 minutos. Depois de iniciar os serviços, aguarde até que o serviço backend esteja totalmente operacional (você deve ver **backend: "GET /health HTTP/1.1" 200 OK** nos logs) antes de enviar mensagens. Na primeira inicialização, o serviço backend pode levar 5 minutos para iniciar.
|
||||
|
||||
Acesse `http://localhost:3000/` e você verá a interface web.
|
||||
Vá para `http://localhost:3000/` e você deve ver a interface web.
|
||||
|
||||
**Opcional:** Rode com a interface CLI:
|
||||
*Solução de problemas de inicialização de serviços:* Se esses scripts falharem, certifique-se de que o Docker Engine está funcionando e que o Docker Compose (V2, `docker compose`) está instalado corretamente. Verifique as mensagens de erro na saída do terminal. Consulte [FAQ: Ajuda! Estou recebendo erros ao executar o AgenticSeek ou seus scripts.](#faq-solução-de-problemas)
|
||||
|
||||
Para rodar com CLI, instale os pacotes no host:
|
||||
**Opção 2:** Modo CLI:
|
||||
|
||||
Para executar com a interface CLI, você precisa instalar os pacotes no host:
|
||||
|
||||
```sh
|
||||
./install.sh
|
||||
./install.bat # windows
|
||||
```
|
||||
|
||||
Inicie os serviços:
|
||||
Em seguida, você precisa alterar SEARXNG_BASE_URL no `config.ini` para:
|
||||
|
||||
```sh
|
||||
SEARXNG_BASE_URL="http://localhost:8080"
|
||||
```
|
||||
|
||||
Inicie os serviços necessários. Isso iniciará alguns serviços do docker-compose.yml, incluindo:
|
||||
- searxng
|
||||
- redis (necessário para searxng)
|
||||
- frontend
|
||||
|
||||
```sh
|
||||
./start_services.sh # MacOS
|
||||
start start_services.cmd # Windows
|
||||
```
|
||||
|
||||
Depois execute: `uv run cli.py`
|
||||
Execute: uv run: `uv run python -m ensurepip` para garantir que o uv tenha o pip ativado.
|
||||
|
||||
Use CLI: `uv run cli.py`
|
||||
|
||||
---
|
||||
|
||||
## Uso
|
||||
|
||||
Certifique-se de que os serviços estão rodando com `./start_services.sh full` e acesse `localhost:3000` para a interface web.
|
||||
Certifique-se de que os serviços estão funcionando com `./start_services.sh full` e vá para `localhost:3000` para a interface web.
|
||||
|
||||
Você também pode usar fala para texto definindo `listen = True` no config. Apenas para modo CLI.
|
||||
Você também pode usar fala para texto definindo `listen = True`. Apenas para o modo CLI.
|
||||
|
||||
Para sair, basta dizer/digitar `goodbye`.
|
||||
|
||||
Exemplos de uso:
|
||||
Alguns exemplos de uso:
|
||||
|
||||
> *Faça um jogo da cobrinha em python!*
|
||||
> *Faça um jogo da cobra em python!*
|
||||
|
||||
> *Pesquise na web pelos melhores cafés em Rennes, França, e salve uma lista de três com seus endereços em rennes_cafes.txt.*
|
||||
> *Pesquise na web os melhores cafés em Rennes, França, e salve uma lista de três com seus endereços em rennes_cafes.txt.*
|
||||
|
||||
> *Escreva um programa Go para calcular o fatorial de um número, salve como factorial.go no seu workspace*
|
||||
> *Escreva um programa Go para calcular o fatorial de um número, salve-o como factorial.go em seu workspace*
|
||||
|
||||
> *Procure na pasta summer_pictures por todos os arquivos JPG, renomeie com a data de hoje e salve a lista dos arquivos renomeados em photos_list.txt*
|
||||
> *Pesquise na pasta summer_pictures todos os arquivos JPG, renomeie-os com a data de hoje e salve a lista de arquivos renomeados em photos_list.txt*
|
||||
|
||||
> *Pesquise online por filmes de ficção científica populares de 2024 e escolha três para assistir hoje à noite. Salve a lista em movie_night.txt.*
|
||||
> *Pesquise online os filmes de ficção científica populares de 2024 e escolha três para assistir esta noite. Salve a lista em movie_night.txt.*
|
||||
|
||||
> *Pesquise na web pelos últimos artigos de notícias de IA de 2025, selecione três e escreva um script Python para extrair títulos e resumos. Salve o script como news_scraper.py e os resumos em ai_news.txt em /home/projects*
|
||||
> *Pesquise na web os últimos artigos de notícias sobre IA de 2025, selecione três e escreva um script Python para extrair os títulos e resumos. Salve o script como news_scraper.py e os resumos em ai_news.txt em /home/projects*
|
||||
|
||||
> *Sexta-feira, pesquise na web por uma API gratuita de preços de ações, registre-se com supersuper7434567@gmail.com e escreva um script Python para buscar os preços diários da Tesla usando a API, salvando os resultados em stock_prices.csv*
|
||||
> *Sexta-feira, pesquise na web uma API gratuita de preços de ações, inscreva-se com supersuper7434567@gmail.com e escreva um script Python para obter os preços diários da Tesla usando a API, salvando os resultados em stock_prices.csv*
|
||||
|
||||
*Observe que o preenchimento de formulários ainda é experimental e pode falhar.*
|
||||
|
||||
Após digitar sua consulta, o AgenticSeek alocará o melhor agente para a tarefa.
|
||||
Depois de inserir sua consulta, o AgenticSeek atribuirá o melhor agente para a tarefa.
|
||||
|
||||
Como este é um protótipo inicial, o sistema de roteamento de agentes pode não alocar sempre o agente certo para sua consulta.
|
||||
Como este é um protótipo inicial, o sistema de roteamento de agentes pode nem sempre atribuir o agente correto à sua consulta.
|
||||
|
||||
Portanto, seja explícito no que deseja e como a IA deve proceder. Por exemplo, se quiser que faça uma busca na web, não diga:
|
||||
Portanto, seja muito explícito sobre o que você quer e como a IA pode proceder, por exemplo, se você quiser que ela faça uma pesquisa na web, não diga:
|
||||
|
||||
`Você conhece alguns bons países para viajar sozinho?`
|
||||
`Você conhece bons países para viajar sozinho?`
|
||||
|
||||
Em vez disso, peça:
|
||||
Em vez disso, diga:
|
||||
|
||||
`Faça uma busca na web e descubra quais são os melhores países para viajar sozinho`
|
||||
`Execute uma pesquisa na web e descubra quais são os melhores países para viajar sozinho`
|
||||
|
||||
---
|
||||
|
||||
## **Configuração para rodar o LLM em seu próprio servidor**
|
||||
## **Configuração para executar LLM em seu próprio servidor**
|
||||
|
||||
Se você tem um computador potente ou servidor, mas quer usar a partir do seu laptop, pode rodar o LLM em um servidor remoto usando nosso servidor LLM customizado.
|
||||
Se você tem um computador poderoso ou um servidor que pode acessar, mas quer usá-lo do seu laptop, você pode optar por executar o LLM em um servidor remoto usando nosso servidor llm personalizado.
|
||||
|
||||
No seu "servidor" que rodará o modelo de IA, obtenha o endereço IP
|
||||
No seu "servidor" que executará o modelo de IA, obtenha o endereço IP
|
||||
|
||||
```sh
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # ip local
|
||||
curl https://ipinfo.io/ip # ip público
|
||||
ip a | grep "inet " | grep -v 127.0.0.1 | awk '{print $2}' | cut -d/ -f1 # IP local
|
||||
curl https://ipinfo.io/ip # IP público
|
||||
```
|
||||
|
||||
Nota: Para Windows ou macOS, use ipconfig ou ifconfig para encontrar o IP.
|
||||
Nota: Para Windows ou macOS, use ipconfig ou ifconfig para encontrar o endereço IP.
|
||||
|
||||
Clone o repositório e entre na pasta `server/`.
|
||||
|
||||
@@ -313,18 +363,18 @@ Instale os requisitos específicos do servidor:
|
||||
pip3 install -r requirements.txt
|
||||
```
|
||||
|
||||
Rode o script do servidor.
|
||||
Execute o script do servidor.
|
||||
|
||||
```sh
|
||||
python3 app.py --provider ollama --port 3333
|
||||
```
|
||||
|
||||
Você pode escolher entre usar `ollama` e `llamacpp` como serviço LLM.
|
||||
Você pode escolher usar `ollama` e `llamacpp` como serviço LLM.
|
||||
|
||||
Agora, no seu computador pessoal:
|
||||
Agora no seu computador pessoal:
|
||||
|
||||
Altere o arquivo `config.ini` para definir `provider_name` como `server` e `provider_model` como `deepseek-r1:xxb`.
|
||||
Defina `provider_server_address` para o IP da máquina que rodará o modelo.
|
||||
Defina `provider_server_address` como o endereço IP da máquina que executará o modelo.
|
||||
|
||||
```sh
|
||||
[MAIN]
|
||||
@@ -334,23 +384,23 @@ provider_model = deepseek-r1:70b
|
||||
provider_server_address = http://x.x.x.x:3333
|
||||
```
|
||||
|
||||
Próximo passo: [Inicie os serviços e rode o AgenticSeek](#Start-services-and-Run)
|
||||
Próxima etapa: [Iniciar os serviços e executar o AgenticSeek](#iniciar-os-serviços-e-executar)
|
||||
|
||||
---
|
||||
|
||||
## Fala para Texto
|
||||
|
||||
Aviso: fala para texto só funciona no modo CLI no momento.
|
||||
Aviso: Fala para texto funciona apenas no modo CLI no momento.
|
||||
|
||||
Atualmente, fala para texto só funciona em inglês.
|
||||
Observe que a fala para texto funciona apenas em inglês no momento.
|
||||
|
||||
A funcionalidade de fala para texto está desativada por padrão. Para ativar, defina listen como True no arquivo config.ini:
|
||||
A funcionalidade de fala para texto está desativada por padrão. Para ativá-la, defina listen como True no arquivo config.ini:
|
||||
|
||||
```
|
||||
listen = True
|
||||
```
|
||||
|
||||
Quando ativado, o recurso escuta por uma palavra-chave de ativação, que é o nome do agente, antes de processar sua entrada. Você pode personalizar o nome do agente atualizando o valor `agent_name` no *config.ini*:
|
||||
Quando ativada, a funcionalidade de fala para texto ouve uma palavra-chave de gatilho, que é o nome do agente, antes de processar sua entrada. Você pode personalizar o nome do agente atualizando o valor `agent_name` em *config.ini*:
|
||||
|
||||
```
|
||||
agent_name = Friday
|
||||
@@ -358,179 +408,266 @@ agent_name = Friday
|
||||
|
||||
Para melhor reconhecimento, recomendamos usar um nome comum em inglês como "John" ou "Emma" como nome do agente.
|
||||
|
||||
Quando o transcript começar a aparecer, diga o nome do agente em voz alta para ativá-lo (ex: "Friday").
|
||||
Assim que você vir a transcrição começar a aparecer, diga o nome do agente em voz alta para acordá-lo (ex: "Friday").
|
||||
|
||||
Fale sua consulta claramente.
|
||||
Diga sua consulta claramente.
|
||||
|
||||
Finalize seu pedido com uma frase de confirmação para o sistema prosseguir. Exemplos de frases de confirmação incluem:
|
||||
Termine sua solicitação com uma frase de confirmação para indicar ao sistema para continuar. Exemplos de frases de confirmação incluem:
|
||||
```
|
||||
"do it", "go ahead", "execute", "run", "start", "thanks", "would ya", "please", "okay?", "proceed", "continue", "go on", "do that", "go it", "do you understand?"
|
||||
```
|
||||
|
||||
## Configuração
|
||||
|
||||
Exemplo de config:
|
||||
Exemplo de configuração:
|
||||
```
|
||||
[MAIN]
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:11434
|
||||
provider_server_address = http://127.0.0.1:11434 # Exemplo Ollama; LM-Studio usa http://127.0.0.1:1234
|
||||
agent_name = Friday
|
||||
recover_last_session = False
|
||||
save_session = False
|
||||
speak = False
|
||||
listen = False
|
||||
|
||||
jarvis_personality = False
|
||||
languages = en zh
|
||||
languages = en zh # Lista de idiomas para TTS e roteamento potencial.
|
||||
[BROWSER]
|
||||
headless_browser = False
|
||||
stealth_mode = False
|
||||
```
|
||||
|
||||
**Explicação**:
|
||||
**Explicação das configurações de `config.ini`**:
|
||||
|
||||
- is_local -> Roda o agente localmente (True) ou em servidor remoto (False).
|
||||
* **Seção `[MAIN]`:**
|
||||
* `is_local`: `True` se você estiver usando provedores de LLM locais (Ollama, LM-Studio, servidor local compatível com OpenAI) ou a opção de servidor auto-hospedado. `False` se você estiver usando APIs baseadas em nuvem (OpenAI, Google, etc.).
|
||||
* `provider_name`: Especifica o provedor de LLM.
|
||||
* Opções locais: `ollama`, `lm-studio`, `openai` (para servidor local compatível com OpenAI), `server` (para configuração de servidor auto-hospedado).
|
||||
* Opções de API: `openai`, `google`, `deepseek`, `huggingface`, `togetherAI`.
|
||||
* `provider_model`: Nome ou ID específico do modelo do provedor selecionado (ex: `deepseekcoder:6.7b` para Ollama, `gpt-3.5-turbo` para API OpenAI, `mistralai/Mixtral-8x7B-Instruct-v0.1` para TogetherAI).
|
||||
* `provider_server_address`: O endereço do seu provedor de LLM.
|
||||
* Para provedores locais: ex: `http://127.0.0.1:11434` para Ollama, `http://127.0.0.1:1234` para LM-Studio.
|
||||
* Para o tipo de provedor `server`: O endereço do seu servidor LLM auto-hospedado (ex: `http://your_server_ip:3333`).
|
||||
* Para APIs em nuvem (`is_local = False`): Isso geralmente é ignorado ou pode ser deixado em branco, pois os endpoints da API são geralmente gerenciados pelas bibliotecas do provedor correspondente.
|
||||
* `agent_name`: O nome do assistente de IA (ex: Friday). Se ativado, usado como palavra de gatilho para fala para texto.
|
||||
* `recover_last_session`: `True` para tentar recuperar o estado da sessão anterior, `False` para começar do zero.
|
||||
* `save_session`: `True` para salvar o estado da sessão atual para possível recuperação, `False` caso contrário.
|
||||
* `speak`: `True` para ativar a saída de voz de texto para fala, `False` para desativar.
|
||||
* `listen`: `True` para ativar a entrada de voz de fala para texto (apenas modo CLI), `False` para desativar.
|
||||
* `work_dir`: **Crítico:** O diretório onde o AgenticSeek lerá/escreverá arquivos. **Certifique-se de que este caminho é válido e acessível no seu sistema.**
|
||||
* `jarvis_personality`: `True` para usar prompts de sistema mais "Jarvis-like" (experimental), `False` para usar prompts padrão.
|
||||
* `languages`: Lista de idiomas separados por vírgulas (ex: `en, zh, fr`). Usado para seleção de voz TTS (primeira por padrão) e pode ajudar o roteador LLM. Para evitar ineficiências do roteador, evite usar muitos idiomas ou idiomas muito semelhantes.
|
||||
* **Seção `[BROWSER]`:**
|
||||
* `headless_browser`: `True` para executar o navegador automatizado sem janela visível (recomendado para interface web ou uso não interativo). `False` para exibir a janela do navegador (útil para modo CLI ou depuração).
|
||||
* `stealth_mode`: `True` para ativar medidas que tornam mais difícil a detecção da automação do navegador. Pode exigir instalação manual de extensões de navegador como anticaptcha.
|
||||
|
||||
- provider_name -> Provedor a ser usado (um de: `ollama`, `server`, `lm-studio`, `deepseek-api`)
|
||||
Esta seção resume os tipos de provedores de LLM suportados. Configure-os em `config.ini`.
|
||||
|
||||
- provider_model -> Modelo usado, ex: deepseek-r1:32b.
|
||||
**Provedores locais (executando em seu próprio hardware):**
|
||||
|
||||
- provider_server_address -> Endereço do servidor, ex: 127.0.0.1:11434 para local. Qualquer valor para API não local.
|
||||
| Nome do provedor em config.ini | `is_local` | Descrição | Seção de configuração |
|
||||
|-------------------------------|------------|-----------------------------------------------------------------------------|------------------------------------------------------------------|
|
||||
| `ollama` | `True` | Fornece LLM localmente facilmente usando Ollama. | [Configuração para executar LLM localmente na sua máquina](#configuração-para-executar-llm-localmente-na-sua-máquina) |
|
||||
| `lm-studio` | `True` | Fornece LLM localmente com LM-Studio. | [Configuração para executar LLM localmente na sua máquina](#configuração-para-executar-llm-localmente-na-sua-máquina) |
|
||||
| `openai` (para servidor local) | `True` | Conecte-se a um servidor local expondo uma API compatível com OpenAI (ex: llama.cpp). | [Configuração para executar LLM localmente na sua máquina](#configuração-para-executar-llm-localmente-na-sua-máquina) |
|
||||
| `server` | `False` | Conecte-se ao servidor LLM auto-hospedado do AgenticSeek em execução em outra máquina. | [Configuração para executar LLM em seu próprio servidor](#configuração-para-executar-llm-em-seu-próprio-servidor) |
|
||||
|
||||
- agent_name -> Nome do agente, ex: Friday. Usado como palavra-chave para TTS.
|
||||
**Provedores de API (baseados em nuvem):**
|
||||
|
||||
- recover_last_session -> Retoma da última sessão (True) ou não (False).
|
||||
| Nome do provedor em config.ini | `is_local` | Descrição | Seção de configuração |
|
||||
|-------------------------------|------------|--------------------------------------------------|-----------------------------------------------------|
|
||||
| `openai` | `False` | Use a API oficial da OpenAI (ex: GPT-3.5, GPT-4). | [Configuração para executar com uma API](#configuração-para-executar-com-uma-api) |
|
||||
| `google` | `False` | Use os modelos Google Gemini via API. | [Configuração para executar com uma API](#configuração-para-executar-com-uma-api) |
|
||||
| `deepseek` | `False` | Use a API oficial da Deepseek. | [Configuração para executar com uma API](#configuração-para-executar-com-uma-api) |
|
||||
| `huggingface` | `False` | Use Hugging Face Inference API. | [Configuração para executar com uma API](#configuração-para-executar-com-uma-api) |
|
||||
| `togetherAI` | `False` | Use vários modelos abertos via API TogetherAI. | [Configuração para executar com uma API](#configuração-para-executar-com-uma-api) |
|
||||
|
||||
- save_session -> Salva dados da sessão (True) ou não (False).
|
||||
---
|
||||
## Solução de problemas
|
||||
|
||||
- speak -> Ativa saída de voz (True) ou não (False).
|
||||
|
||||
- listen -> Ativa entrada por voz (True) ou não (False).
|
||||
|
||||
- jarvis_personality -> Usa personalidade tipo JARVIS (True) ou não (False). Apenas muda o prompt.
|
||||
|
||||
- languages -> Lista de idiomas suportados, necessário para o roteador de LLM funcionar corretamente. Evite muitos idiomas ou muito parecidos.
|
||||
|
||||
- headless_browser -> Roda navegador sem janela visível (True) ou não (False).
|
||||
|
||||
- stealth_mode -> Dificulta detecção de bot. Único contra é instalar manualmente a extensão anticaptcha.
|
||||
|
||||
- languages -> Lista de idiomas suportados. Necessário para o sistema de roteamento de agentes. Quanto maior a lista, mais modelos serão baixados.
|
||||
|
||||
## Provedores
|
||||
|
||||
Tabela de provedores disponíveis:
|
||||
|
||||
| Provedor | Local? | Descrição |
|
||||
|------------|--------|---------------------------------------------------------|
|
||||
| ollama | Sim | Rode LLMs localmente facilmente usando ollama |
|
||||
| server | Sim | Hospede o modelo em outra máquina, use localmente |
|
||||
| lm-studio | Sim | Rode LLM localmente com LM studio (`lm-studio`) |
|
||||
| openai | Depende| Use API do ChatGPT (não privado) ou API compatível |
|
||||
| deepseek-api| Não | API Deepseek (não privado) |
|
||||
| huggingface| Não | API Hugging-Face (não privado) |
|
||||
| togetherAI | Não | Use API together AI (não privado) |
|
||||
| google | Não | Use API google gemini (não privado) |
|
||||
|
||||
Para selecionar um provedor, altere o config.ini:
|
||||
|
||||
```
|
||||
is_local = True
|
||||
provider_name = ollama
|
||||
provider_model = deepseek-r1:32b
|
||||
provider_server_address = 127.0.0.1:5000
|
||||
```
|
||||
`is_local`: deve ser True para qualquer LLM rodando localmente, senão False.
|
||||
|
||||
`provider_name`: Selecione o provedor pelo nome, veja a lista acima.
|
||||
|
||||
`provider_model`: Defina o modelo a ser usado pelo agente.
|
||||
|
||||
`provider_server_address`: pode ser qualquer valor se não usar o provedor server.
|
||||
Se você encontrar problemas, esta seção fornece orientações.
|
||||
|
||||
# Problemas conhecidos
|
||||
|
||||
## Problemas com Chromedriver
|
||||
## Problemas do ChromeDriver
|
||||
|
||||
**Erro conhecido #1:** *chromedriver incompatível*
|
||||
**Exemplo de erro:** `SessionNotCreatedException: Message: session not created: This version of ChromeDriver only supports Chrome version XXX`
|
||||
|
||||
### Causa raiz
|
||||
A incompatibilidade de versão do ChromeDriver ocorre quando:
|
||||
1. A versão do ChromeDriver que você instalou não corresponde à versão do navegador Chrome
|
||||
2. Em ambientes Docker, `undetected_chromedriver` pode baixar sua própria versão do ChromeDriver, contornando os binários montados
|
||||
|
||||
### Etapas de solução
|
||||
|
||||
#### 1. Verifique sua versão do Chrome
|
||||
Abra o Google Chrome → `Configurações > Sobre o Chrome` para encontrar sua versão (ex: "Versão 134.0.6998.88")
|
||||
|
||||
#### 2. Baixe o ChromeDriver correspondente
|
||||
|
||||
**Para Chrome 115 e superior:** Use [Chrome for Testing API](https://googlechromelabs.github.io/chrome-for-testing/)
|
||||
- Visite o painel de disponibilidade do Chrome for Testing
|
||||
- Encontre sua versão do Chrome ou a correspondência disponível mais próxima
|
||||
- Baixe o ChromeDriver para seu sistema operacional (use Linux64 para ambientes Docker)
|
||||
|
||||
**Para versões mais antigas do Chrome:** Use [Downloads legados do ChromeDriver](https://chromedriver.chromium.org/downloads)
|
||||
|
||||

|
||||
|
||||
#### 3. Instale o ChromeDriver (escolha um método)
|
||||
|
||||
**Método A: Diretório raiz do projeto (recomendado para Docker)**
|
||||
```bash
|
||||
# Coloque o binário chromedriver baixado no diretório raiz do projeto
|
||||
cp path/to/downloaded/chromedriver ./chromedriver
|
||||
chmod +x ./chromedriver # Torne-o executável no Linux/macOS
|
||||
```
|
||||
|
||||
**Método B: PATH do sistema**
|
||||
```bash
|
||||
# Linux/macOS
|
||||
sudo mv chromedriver /usr/local/bin/
|
||||
sudo chmod +x /usr/local/bin/chromedriver
|
||||
|
||||
# Windows: Coloque chromedriver.exe em uma pasta do PATH
|
||||
```
|
||||
|
||||
#### 4. Verifique a instalação
|
||||
```bash
|
||||
# Teste a versão do ChromeDriver
|
||||
./chromedriver --version
|
||||
# Ou se estiver no PATH:
|
||||
chromedriver --version
|
||||
```
|
||||
|
||||
### Instruções específicas do Docker
|
||||
|
||||
⚠️ **Importante para usuários do Docker:**
|
||||
- O método de montagem de volumes do Docker pode não funcionar com o modo furtivo (`undetected_chromedriver`)
|
||||
- **Solução:** Coloque o ChromeDriver no diretório raiz do projeto como `./chromedriver`
|
||||
- O aplicativo o detectará automaticamente e usará este binário
|
||||
- Você deve ver nos logs: `"Using ChromeDriver from project root: ./chromedriver"`
|
||||
|
||||
### Dicas de solução de problemas
|
||||
|
||||
1. **Ainda há incompatibilidade de versão?**
|
||||
- Verifique se o ChromeDriver é executável: `ls -la ./chromedriver`
|
||||
- Verifique a versão do ChromeDriver: `./chromedriver --version`
|
||||
- Certifique-se de que corresponde à versão do seu navegador Chrome
|
||||
|
||||
2. **Problemas com o contêiner Docker?**
|
||||
- Verifique os logs do backend: `docker logs backend`
|
||||
- Procure a mensagem: `"Using ChromeDriver from project root"`
|
||||
- Se não for encontrado, verifique se o arquivo existe e é executável
|
||||
|
||||
3. **Versões do Chrome for Testing**
|
||||
- Use uma correspondência exata quando possível
|
||||
- Para a versão 134.0.6998.88, use o ChromeDriver 134.0.6998.165 (a versão disponível mais próxima)
|
||||
- O número da versão principal deve corresponder (134 = 134)
|
||||
|
||||
### Matriz de compatibilidade de versões
|
||||
|
||||
| Versão do Chrome | Versão do ChromeDriver | Status |
|
||||
|----------------|---------------------|---------|
|
||||
| 134.0.6998.x | 134.0.6998.165 | ✅ Disponível |
|
||||
| 133.0.6943.x | 133.0.6943.141 | ✅ Disponível |
|
||||
| 132.0.6834.x | 132.0.6834.159 | ✅ Disponível |
|
||||
|
||||
*Para a compatibilidade mais recente, consulte o [Painel do Chrome for Testing](https://googlechromelabs.github.io/chrome-for-testing/)*
|
||||
|
||||
`Exception: Failed to initialize browser: Message: session not created: This version of ChromeDriver only supports Chrome version 113
|
||||
Current browser version is 134.0.6998.89 with binary path`
|
||||
|
||||
Isso ocorre se houver incompatibilidade entre seu navegador e a versão do chromedriver.
|
||||
Isso acontece se seu navegador e a versão do chromedriver não corresponderem.
|
||||
|
||||
Você precisa baixar a versão mais recente:
|
||||
Você precisa navegar para baixar a versão mais recente:
|
||||
|
||||
https://developer.chrome.com/docs/chromedriver/downloads
|
||||
|
||||
Se estiver usando Chrome versão 115 ou superior, acesse:
|
||||
Se você estiver usando o Chrome versão 115 ou superior, vá para:
|
||||
|
||||
https://googlechromelabs.github.io/chrome-for-testing/
|
||||
|
||||
E baixe o chromedriver correspondente ao seu sistema operacional.
|
||||
e baixe a versão do chromedriver correspondente ao seu sistema operacional.
|
||||
|
||||

|
||||
|
||||
Se esta seção estiver incompleta, abra uma issue.
|
||||
Se esta seção estiver incompleta, abra um issue.
|
||||
|
||||
## Problemas de adaptadores de conexão
|
||||
|
||||
```
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:11434/v1/chat/completions'
|
||||
Exception: Provider lm-studio failed: HTTP request failed: No connection adapters were found for '127.0.0.1:1234/v1/chat/completions'` (nota: a porta pode variar)
|
||||
```
|
||||
|
||||
Certifique-se de ter `http://` antes do IP do provedor:
|
||||
* **Causa:** Falta o prefixo `http://` em `provider_server_address` para `lm-studio` (ou outro servidor local compatível com OpenAI semelhante) no `config.ini`, ou ele aponta para a porta errada.
|
||||
* **Solução:**
|
||||
* Certifique-se de que o endereço inclui `http://`. O LM-Studio geralmente usa `http://127.0.0.1:1234` por padrão.
|
||||
* `config.ini` correto: `provider_server_address = http://127.0.0.1:1234` (ou sua porta real do servidor LM-Studio).
|
||||
|
||||
`provider_server_address = http://127.0.0.1:11434`
|
||||
|
||||
## SearxNG base URL deve ser fornecida
|
||||
## URL base do SearxNG não fornecida
|
||||
|
||||
```
|
||||
raise ValueError("SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.")
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.
|
||||
ValueError: SearxNG base URL must be provided either as an argument or via the SEARXNG_BASE_URL environment variable.`
|
||||
```
|
||||
|
||||
Talvez você não tenha movido `.env.example` para `.env`? Você também pode exportar SEARXNG_BASE_URL:
|
||||
Isso pode acontecer se você executar o modo CLI com uma URL base do searxng incorreta.
|
||||
|
||||
`export SEARXNG_BASE_URL="http://127.0.0.1:8080"`
|
||||
SEARXNG_BASE_URL deve diferir dependendo se você está executando no Docker ou no host:
|
||||
|
||||
**Execução no host:** `SEARXNG_BASE_URL="http://localhost:8080"`
|
||||
|
||||
**Execução completamente no Docker (interface web):** `SEARXNG_BASE_URL="http://searxng:8080"`
|
||||
|
||||
## FAQ
|
||||
|
||||
**P: Que hardware eu preciso?**
|
||||
**P: De qual hardware eu preciso?**
|
||||
|
||||
| Tamanho do Modelo | GPU | Comentário |
|
||||
|-------------------|-------------|---------------------------------------------------------|
|
||||
| 7B | 8GB Vram | ⚠️ Não recomendado. Desempenho ruim, alucinações frequentes, agentes de planejamento podem falhar. |
|
||||
| 14B | 12 GB VRAM (ex: RTX 3060) | ✅ Usável para tarefas simples. Pode ter dificuldades com navegação web e planejamento. |
|
||||
| 32B | 24+ GB VRAM (ex: RTX 4090) | 🚀 Sucesso na maioria das tarefas, pode ainda ter dificuldades com planejamento |
|
||||
| 70B+ | 48+ GB Vram (ex: mac studio) | 💪 Excelente. Recomendado para uso avançado. |
|
||||
| Tamanho do modelo | GPU | Comentários |
|
||||
|-----------|--------|-----------------------------------------------------------|
|
||||
| 7B | 8GB VRAM | ⚠️ Não recomendado. Desempenho ruim, alucinações frequentes, agentes de planejamento podem falhar. |
|
||||
| 14B | 12 GB VRAM (ex: RTX 3060) | ✅ Utilizável para tarefas simples. Pode ter dificuldades com navegação web e planejamento de tarefas. |
|
||||
| 32B | 24+ GB VRAM (ex: RTX 4090) | 🚀 Consegue a maioria das tarefas, ainda pode ter dificuldades com planejamento de tarefas |
|
||||
| 70B+ | 48+ GB VRAM | 💪 Excelente. Recomendado para casos de uso avançados. |
|
||||
|
||||
**P: Por que Deepseek R1 em vez de outros modelos?**
|
||||
**P: O que fazer se eu encontrar erros?**
|
||||
|
||||
Deepseek R1 se destaca em raciocínio e uso de ferramentas para seu tamanho. Achamos que é uma ótima escolha para nossas necessidades, outros modelos funcionam bem, mas Deepseek é nossa principal escolha.
|
||||
Certifique-se de que o local está funcionando (`ollama serve`), que seu `config.ini` corresponde ao seu provedor e que as dependências estão instaladas. Se nada funcionar, sinta-se à vontade para abrir um issue.
|
||||
|
||||
**P: Recebo erro ao rodar `cli.py`. O que faço?**
|
||||
**P: Ele pode realmente funcionar 100% localmente?**
|
||||
|
||||
Certifique-se de que o local está rodando (`ollama serve`), seu `config.ini` corresponde ao provedor e as dependências estão instaladas. Se nada funcionar, abra uma issue.
|
||||
Sim, com os provedores Ollama, lm-studio ou server, todos os modelos de fala para texto, LLM e texto para fala funcionam localmente. As opções não locais (OpenAI ou outras APIs) são opcionais.
|
||||
|
||||
**P: Pode rodar 100% localmente mesmo?**
|
||||
**P: Por que eu deveria usar o AgenticSeek quando tenho o Manus?**
|
||||
|
||||
Sim, com Ollama, lm-studio ou provedores server, todo o reconhecimento de fala, LLM e TTS rodam localmente. Opções não locais (OpenAI ou outras APIs) são opcionais.
|
||||
Ao contrário do Manus, o AgenticSeek prioriza a independência de sistemas externos, dando a você mais controle, privacidade e evitando custos de API.
|
||||
|
||||
**P: Por que usar AgenticSeek se já tenho Manus?**
|
||||
**P: Quem está por trás deste projeto?**
|
||||
|
||||
Começou como um projeto paralelo por interesse em agentes de IA. O diferencial é usar modelos locais e evitar APIs.
|
||||
Nos inspiramos em Jarvis e Friday (filmes do Homem de Ferro) para torná-lo "legal", mas funcionalmente nos inspiramos mais no Manus, pois é isso que as pessoas querem: uma alternativa local ao Manus.
|
||||
Ao contrário do Manus, o AgenticSeek prioriza independência de sistemas externos, dando mais controle, privacidade e evitando custos de API.
|
||||
Este projeto foi criado por mim, com dois amigos como mantenedores e contribuidores da comunidade de código aberto no GitHub. Somos apenas indivíduos apaixonados, não uma startup, nem afiliados a qualquer organização.
|
||||
|
||||
## Contribua
|
||||
Qualquer conta AgenticSeek no X diferente da minha conta pessoal (https://x.com/Martin993886460) é um impostor.
|
||||
|
||||
Procuramos desenvolvedores para melhorar o AgenticSeek! Veja as issues abertas ou discussões.
|
||||
## Contribuir
|
||||
|
||||
Estamos procurando desenvolvedores para melhorar o AgenticSeek! Verifique os problemas abertos ou discussões.
|
||||
|
||||
[Guia de contribuição](./docs/CONTRIBUTING.md)
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
## Patrocinadores:
|
||||
|
||||
Você quer melhorar as capacidades do AgenticSeek com recursos como pesquisa de voos, planejamento de viagens ou obtenção das melhores ofertas de compra? Considere usar o SerpApi para criar ferramentas personalizadas que desbloqueiem mais recursos do tipo Jarvis. Com o SerpApi, você pode acelerar seu agente para tarefas profissionais enquanto mantém o controle total.
|
||||
|
||||
<a href="https://serpapi.com/"><img src="./media/banners/sponsor_banner_serpapi.png" height="350" alt="SerpApi Banner" ></a>
|
||||
|
||||
Confira [Contributing.md](./docs/CONTRIBUTING.md) para aprender como integrar ferramentas personalizadas!
|
||||
|
||||
### **Patrocinadores**:
|
||||
|
||||
- [tatra-labs](https://github.com/tatra-labs)
|
||||
|
||||
## Mantenedores:
|
||||
|
||||
@@ -538,9 +675,8 @@ Procuramos desenvolvedores para melhorar o AgenticSeek! Veja as issues abertas o
|
||||
|
||||
> [antoineVIVIES](https://github.com/antoineVIVIES) | Horário de Taipei
|
||||
|
||||
> [steveh8758](https://github.com/steveh8758) | Horário de Taipei
|
||||
## Agradecimentos especiais:
|
||||
|
||||
## Agradecimentos Especiais:
|
||||
|
||||
> [tcsenpai](https://github.com/tcsenpai) e [plitc](https://github.com/plitc) pela ajuda na dockerização do backend
|
||||
> [tcsenpai](https://github.com/tcsenpai) e [plitc](https://github.com/plitc) por ajudar na dockerização do backend
|
||||
|
||||
[](https://www.star-history.com/#Fosowl/agenticSeek&Date)
|
||||
|
||||
+1
-4
@@ -1,4 +1,4 @@
|
||||
version: '3'
|
||||
version: '3.8'
|
||||
|
||||
services:
|
||||
redis:
|
||||
@@ -77,9 +77,6 @@ services:
|
||||
dockerfile: Dockerfile.backend
|
||||
ports:
|
||||
- ${BACKEND_PORT:-7777}:${BACKEND_PORT:-7777}
|
||||
- ${OLLAMA_PORT:-11434}:${OLLAMA_PORT:-11434}
|
||||
- ${LM_STUDIO_PORT:-1234}:${LM_STUDIO_PORT:-1234}
|
||||
- ${CUSTOM_ADDITIONAL_LLM_PORT:-8000}:${CUSTOM_ADDITIONAL_LLM_PORT:-8000}
|
||||
volumes:
|
||||
- ./:/app
|
||||
- ${WORK_DIR:-.}:/opt/workspace
|
||||
|
||||
@@ -31,6 +31,7 @@ services:
|
||||
- SEARXNG_BASE_URL=http://localhost:8080/
|
||||
- UWSGI_WORKERS=1
|
||||
- UWSGI_THREADS=1
|
||||
user: "1000:1000" # Run as current user to avoid permission issues
|
||||
cap_add:
|
||||
- CHOWN
|
||||
- SETGID
|
||||
|
||||
@@ -1,40 +0,0 @@
|
||||
[real_ip]
|
||||
|
||||
# Number of values to trust for X-Forwarded-For.
|
||||
|
||||
x_for = 1
|
||||
|
||||
# The prefix defines the number of leading bits in an address that are compared
|
||||
# to determine whether or not an address is part of a (client) network.
|
||||
|
||||
ipv4_prefix = 32
|
||||
ipv6_prefix = 48
|
||||
|
||||
[botdetection.ip_limit]
|
||||
|
||||
# To get unlimited access in a local network, by default link-local addresses
|
||||
# (networks) are not monitored by the ip_limit
|
||||
filter_link_local = false
|
||||
|
||||
# activate link_token method in the ip_limit method
|
||||
link_token = false
|
||||
|
||||
[botdetection.ip_lists]
|
||||
|
||||
# In the limiter, the ip_lists method has priority over all other methods -> if
|
||||
# an IP is in the pass_ip list, it has unrestricted access and it is also not
|
||||
# checked if e.g. the "user agent" suggests a bot (e.g. curl).
|
||||
|
||||
block_ip = [
|
||||
# '93.184.216.34', # IPv4 of example.org
|
||||
# '257.1.1.1', # invalid IP --> will be ignored, logged in ERROR class
|
||||
]
|
||||
|
||||
pass_ip = [
|
||||
# '192.168.0.0/16', # IPv4 private network
|
||||
# 'fe80::/10' # IPv6 linklocal / wins over botdetection.ip_limit.filter_link_local
|
||||
]
|
||||
|
||||
# Activate passlist of (hardcoded) IPs from the SearXNG organization,
|
||||
# e.g. `check.searx.space`.
|
||||
pass_searxng_org = true
|
||||
File diff suppressed because it is too large
Load Diff
@@ -1,52 +0,0 @@
|
||||
[uwsgi]
|
||||
# Who will run the code
|
||||
uid = searxng
|
||||
gid = searxng
|
||||
|
||||
# Number of workers (usually CPU count)
|
||||
# default value: %k (= number of CPU core, see Dockerfile)
|
||||
workers = 4
|
||||
|
||||
# Number of threads per worker
|
||||
# default value: 4 (see Dockerfile)
|
||||
threads = 4
|
||||
|
||||
# The right granted on the created socket
|
||||
chmod-socket = 666
|
||||
|
||||
# Plugin to use and interpreter config
|
||||
single-interpreter = true
|
||||
master = true
|
||||
plugin = python3
|
||||
lazy-apps = true
|
||||
enable-threads = 4
|
||||
|
||||
# Module to import
|
||||
module = searx.webapp
|
||||
|
||||
# Virtualenv and python path
|
||||
pythonpath = /usr/local/searxng/
|
||||
chdir = /usr/local/searxng/searx/
|
||||
|
||||
# automatically set processes name to something meaningful
|
||||
auto-procname = true
|
||||
|
||||
# Disable request logging for privacy
|
||||
disable-logging = true
|
||||
log-5xx = true
|
||||
|
||||
# Set the max size of a request (request-body excluded)
|
||||
buffer-size = 8192
|
||||
|
||||
# No keep alive
|
||||
# See https://github.com/searx/searx-docker/issues/24
|
||||
add-header = Connection: close
|
||||
|
||||
# Follow SIGTERM convention
|
||||
# See https://github.com/searxng/searxng/issues/3427
|
||||
die-on-term
|
||||
|
||||
# uwsgi serves the static files
|
||||
static-map = /static=/usr/local/searxng/searx/static
|
||||
static-gzip-all = True
|
||||
offload-threads = 4
|
||||
+57
-43
@@ -121,29 +121,8 @@ def bypass_ssl() -> str:
|
||||
pretty_print("Bypassing SSL verification issues, we strongly advice you update your certifi SSL certificate.", color="warning")
|
||||
ssl._create_default_https_context = ssl._create_unverified_context
|
||||
|
||||
def create_undetected_chromedriver(service, chrome_options) -> webdriver.Chrome:
|
||||
"""Create an undetected ChromeDriver instance."""
|
||||
try:
|
||||
driver = uc.Chrome(service=service, options=chrome_options)
|
||||
except Exception as e:
|
||||
pretty_print(f"Failed to create Chrome driver: {str(e)}. Trying to bypass SSL...", color="failure")
|
||||
try:
|
||||
bypass_ssl()
|
||||
driver = uc.Chrome(service=service, options=chrome_options)
|
||||
except Exception as e:
|
||||
pretty_print(f"Failed to create Chrome driver, fallback failed:\n{str(e)}.", color="failure")
|
||||
raise e
|
||||
raise e
|
||||
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
|
||||
return driver
|
||||
|
||||
def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx", lang="en") -> webdriver.Chrome:
|
||||
"""Create a Chrome WebDriver with specified options."""
|
||||
# Warn if trying to run non-headless in Docker
|
||||
if not headless and os.path.exists('/.dockerenv'):
|
||||
print("[WARNING] Running non-headless browser in Docker may fail!")
|
||||
print("[WARNING] Consider setting headless=True or headless_browser=True in config.ini")
|
||||
|
||||
def create_chrome_options(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx", lang="en") -> Options:
|
||||
"""Create Chrome options - separated for reusability."""
|
||||
chrome_options = Options()
|
||||
chrome_path = get_chrome_path()
|
||||
|
||||
@@ -152,17 +131,17 @@ def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx
|
||||
chrome_options.binary_location = chrome_path
|
||||
|
||||
if headless:
|
||||
#chrome_options.add_argument("--headless")
|
||||
chrome_options.add_argument("--headless=new")
|
||||
chrome_options.add_argument("--disable-gpu")
|
||||
chrome_options.add_argument("--disable-webgl")
|
||||
user_data_dir = tempfile.mkdtemp()
|
||||
|
||||
user_agent = get_random_user_agent()
|
||||
width, height = (1920, 1080)
|
||||
user_data_dir = tempfile.mkdtemp(prefix="chrome_profile_")
|
||||
profile_dir = f"/tmp/chrome_profile_{uuid.uuid4().hex[:8]}"
|
||||
|
||||
# Core options
|
||||
chrome_options.add_argument("--no-sandbox")
|
||||
chrome_options.add_argument('--disable-dev-shm-usage')
|
||||
profile_dir = f"/tmp/chrome_profile_{uuid.uuid4().hex[:8]}"
|
||||
chrome_options.add_argument(f'--user-data-dir={profile_dir}')
|
||||
chrome_options.add_argument(f"--accept-lang={lang}-{lang.upper()},{lang};q=0.9")
|
||||
chrome_options.add_argument("--disable-extensions")
|
||||
@@ -182,28 +161,14 @@ def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx
|
||||
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
|
||||
chrome_options.add_argument(f'user-agent={user_agent["ua"]}')
|
||||
chrome_options.add_argument(f'--window-size={width},{height}')
|
||||
|
||||
if not stealth_mode:
|
||||
if not os.path.exists(crx_path):
|
||||
pretty_print(f"Anti-captcha CRX not found at {crx_path}.", color="failure")
|
||||
else:
|
||||
chrome_options.add_extension(crx_path)
|
||||
|
||||
chromedriver_path = install_chromedriver()
|
||||
|
||||
service = Service(chromedriver_path)
|
||||
if stealth_mode:
|
||||
chrome_options.add_argument("--disable-blink-features=AutomationControlled")
|
||||
driver = create_undetected_chromedriver(service, chrome_options)
|
||||
chrome_version = driver.capabilities['browserVersion']
|
||||
stealth(driver,
|
||||
languages=["en-US", "en"],
|
||||
vendor=user_agent["vendor"],
|
||||
platform="Win64" if "windows" in user_agent["ua"].lower() else "MacIntel" if "mac" in user_agent["ua"].lower() else "Linux x86_64",
|
||||
webgl_vendor="Intel Inc.",
|
||||
renderer="Intel Iris OpenGL Engine",
|
||||
fix_hairline=True,
|
||||
)
|
||||
return driver
|
||||
if not stealth_mode:
|
||||
security_prefs = {
|
||||
"profile.default_content_setting_values.geolocation": 0,
|
||||
"profile.default_content_setting_values.notifications": 0,
|
||||
@@ -227,6 +192,55 @@ def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx
|
||||
chrome_options.add_experimental_option("prefs", security_prefs)
|
||||
chrome_options.add_experimental_option("excludeSwitches", ["enable-automation"])
|
||||
chrome_options.add_experimental_option('useAutomationExtension', False)
|
||||
|
||||
return chrome_options
|
||||
|
||||
def create_undetected_chromedriver(service, chrome_options) -> webdriver.Chrome:
|
||||
"""Create an undetected ChromeDriver instance with proper error handling."""
|
||||
try:
|
||||
driver = uc.Chrome(service=service, options=chrome_options)
|
||||
except Exception as e:
|
||||
pretty_print(f"Failed to create Chrome driver: {str(e)}. Trying to bypass SSL...", color="failure")
|
||||
try:
|
||||
bypass_ssl()
|
||||
# Create NEW options object - this is the key fix
|
||||
fresh_options = create_chrome_options(
|
||||
headless=any("--headless" in arg for arg in chrome_options.arguments),
|
||||
stealth_mode=True, # We're in stealth mode if we reach this point
|
||||
crx_path="./crx/nopecha.crx" # Default path
|
||||
)
|
||||
driver = uc.Chrome(service=service, options=fresh_options)
|
||||
except Exception as e:
|
||||
pretty_print(f"Failed to create Chrome driver, fallback failed:\n{str(e)}.", color="failure")
|
||||
raise e
|
||||
|
||||
driver.execute_script("Object.defineProperty(navigator, 'webdriver', {get: () => undefined})")
|
||||
return driver
|
||||
|
||||
def create_driver(headless=False, stealth_mode=True, crx_path="./crx/nopecha.crx", lang="en") -> webdriver.Chrome:
|
||||
"""Create a Chrome WebDriver with specified options."""
|
||||
# Warn if trying to run non-headless in Docker
|
||||
if not headless and os.path.exists('/.dockerenv'):
|
||||
print("[WARNING] Running non-headless browser in Docker may fail!")
|
||||
print("[WARNING] Consider setting headless=True or headless_browser=True in config.ini")
|
||||
|
||||
chrome_options = create_chrome_options(headless, stealth_mode, crx_path, lang)
|
||||
chromedriver_path = install_chromedriver()
|
||||
service = Service(chromedriver_path)
|
||||
|
||||
if stealth_mode:
|
||||
driver = create_undetected_chromedriver(service, chrome_options)
|
||||
user_agent = get_random_user_agent()
|
||||
stealth(driver,
|
||||
languages=["en-US", "en"],
|
||||
vendor=user_agent["vendor"],
|
||||
platform="Win64" if "windows" in user_agent["ua"].lower() else "MacIntel" if "mac" in user_agent["ua"].lower() else "Linux x86_64",
|
||||
webgl_vendor="Intel Inc.",
|
||||
renderer="Intel Iris OpenGL Engine",
|
||||
fix_hairline=True,
|
||||
)
|
||||
return driver
|
||||
else:
|
||||
return webdriver.Chrome(service=service, options=chrome_options)
|
||||
|
||||
class Browser:
|
||||
|
||||
@@ -63,6 +63,7 @@ class Speech():
|
||||
voice_idx (int, optional): Index of the voice to use from the voice map.
|
||||
"""
|
||||
if not self.pipeline or not IMPORT_FOUND:
|
||||
print("Pipeline disabled.")
|
||||
return
|
||||
if voice_idx >= len(self.voice_map[self.language]):
|
||||
pretty_print("Invalid voice number, using default voice", color="error")
|
||||
|
||||
+12
-11
@@ -16,12 +16,12 @@ else
|
||||
dir_size_bytes=$(du -s --bytes "$WORK_DIR" 2>/dev/null | awk '{print $1}')
|
||||
fi
|
||||
|
||||
max_size_bytes=$((2 * 1024 * 1024 * 1024))
|
||||
max_size_bytes=$((2 * 1024 * 1024 * 1024 * 10))
|
||||
|
||||
echo "Mounting $WORK_DIR ($dir_size_bytes bytes) to docker."
|
||||
|
||||
if [ "$dir_size_bytes" -gt "$max_size_bytes" ]; then
|
||||
echo "Error: WORK_DIR ($WORK_DIR) contains more than 2GB of data ($(du -sh "$WORK_DIR" 2>/dev/null | awk '{print $1}'))."
|
||||
echo "Error: WORK_DIR ($WORK_DIR) contains more than 20GB of data ($(du -sh "$WORK_DIR" 2>/dev/null | awk '{print $1}'))."
|
||||
exit 1
|
||||
fi
|
||||
|
||||
@@ -64,17 +64,18 @@ else
|
||||
fi
|
||||
|
||||
# Check if Docker Compose is installed
|
||||
if ! command_exists docker-compose && ! docker compose version >/dev/null 2>&1; then
|
||||
echo "Error: Docker Compose is not installed. Please install it first."
|
||||
echo "On Ubuntu: sudo apt install docker-compose"
|
||||
echo "Or via pip: pip install docker-compose"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
if command_exists docker-compose; then
|
||||
# Prefer the newer 'docker compose' command if available
|
||||
if docker compose version >/dev/null 2>&1; then
|
||||
echo "Using newer docker compose (v2)."
|
||||
COMPOSE_CMD="docker compose"
|
||||
elif command_exists docker-compose; then
|
||||
echo "Using old docker-compose."
|
||||
COMPOSE_CMD="docker-compose"
|
||||
else
|
||||
COMPOSE_CMD="docker compose"
|
||||
echo "Error: Docker Compose is not installed. Please install it first."
|
||||
echo "On Ubuntu: sudo apt install docker-compose-plugin"
|
||||
echo "Or install Docker Desktop which includes compose v2"
|
||||
exit 1
|
||||
fi
|
||||
|
||||
# Check if docker-compose.yml exists
|
||||
|
||||
Reference in New Issue
Block a user