8. Самописный поисковый агент на основе deep agents from scratch: README.md

This commit is contained in:
2026-05-27 13:42:32 +00:00
parent 7a98a0e124
commit f7949ca0ca
@@ -1,25 +1,27 @@
# 8. Самописный поисковый агент на основе deep agents from scratch # 8️⃣ Самописный поисковый агент на основе Deep Agents from Scratch
## Описание проекта **Project name:** `deep-search-agent`
Проект реализует **deep agent** – автономного поискового агента, который использует: **Goal:** Build a custom search agent that can browse the web, create virtual files in memory and finally export them to the real file system.
- **OpenAI LLM** для генерации ответов и запросов к базе знаний.
- **Qdrant** в качестве векторного хранилища для быстрых семантических поисков.
- **LangChain** для упрощения взаимодействия между компонентами (LLM, embeddings, vector store).
- **Rich** для красивого вывода информации в консоли.
Агент умеет:
1. Загружать документы и сохранять их эмбеддинги в Qdrant.
2. Выполнять запросы пользователя, находить релевантные фрагменты текста и генерировать ответы на основе LLM.
3. Показать результаты поиска в виде таблицы с метриками.
> **Важно**: Для работы проекта необходим доступ к API OpenAI (ключ `OPENAI_API_KEY`) и работающий экземпляр Qdrant, который можно запустить локально через Docker или использовать облачный сервис.
--- ---
## Установка зависимостей ## 📖 Описание проекта
В этом репозитории реализован **Deep Agent**, построенный на основе библиотеки [langchain](https://github.com/hwchase17/langchain) и примеров из репозитория `deep-agents-from-scratch`.
Агент умеет:
1. Выполнять поисковые запросы в интернете (через `requests` + `BeautifulSoup`);
2. Создавать виртуальные файлы, хранить их в памяти (`VirtualFileSystem`);
3. В конце работы выгружать все виртуальные файлы на диск.
Код находится в одном файле **`solution.py`** и содержит полностью рабочий пример с использованием OpenAI LLM (можно заменить на любой другой).
---
## ⚙️ Установка зависимостей
```bash ```bash
# Создайте виртуальное окружение (необязательно) # Создайте виртуальное окружение (рекомендовано)
python -m venv .venv python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate source .venv/bin/activate # Windows: .venv\Scripts\activate
@@ -27,80 +29,88 @@ source .venv/bin/activate # Windows: .venv\Scripts\activate
pip install -r requirements.txt pip install -r requirements.txt
``` ```
`requirements.txt`: `requirements.txt` содержит:
```text ```text
langchain==0.2.* langchain==0.2.0
openai==1.* openai==1.12.0
qdrant-client==1.* beautifulsoup4==4.12.3
rich==13.* requests==2.32.3
python-dotenv==1.* rich==13.7.1
``` ```
> **Совет**: Если вы используете `pipx`, можно установить проект как глобальный пакет. > **Важно:**
> - Для работы с OpenAI понадобится переменная окружения `OPENAI_API_KEY`.
> ```bash
> export OPENAI_API_KEY="sk-..."
> ```
> - Если вы используете другую LLM, замените импорт и конфигурацию в коде.
--- ---
## Как запустить ## 🚀 Запуск
### 1. Настройка переменных окружения
Создайте файл `.env` в корне проекта и добавьте:
```dotenv
OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX
QDRANT_URL=http://localhost:6333 # URL вашего Qdrant сервера
COLLECTION_NAME=my_collection # Имя коллекции для хранения эмбеддингов
```
> **Важно**: Убедитесь, что Qdrant запущен и доступен по указанному URL.
### 2. Запуск скрипта
```bash ```bash
python solution.py python solution.py
``` ```
Скрипт выполнит следующие шаги: При запуске агент:
1. Инициализирует подключение к Qdrant.
2. Загружает документы из папки `data/` (если она существует) и сохраняет их эмбеддинги. 1. Спросит у пользователя цель (например: «Найти информацию о последних новостях по теме X»).
3. Ожидает ввод пользователя в консоли, после чего выполняет поиск и выводит ответ. 2. Выполнит поиск, создаст виртуальные файлы с найденными данными.
3. После завершения работы выведет список созданных файлов и их путь к выгрузке.
--- ---
## Пример использования ## 📄 Пример использования
```bash ```bash
$ python solution.py $ python solution.py
[INFO] 2026-05-27 12:00:00 - Инициализация Qdrant... Enter your goal: Find the latest news about AI breakthroughs in 2024.
[INFO] 2026-05-27 12:00:01 - Коллекция 'my_collection' найдена.
Введите запрос (или 'exit' для выхода): Какова площадь России?
Ответ:
Россия занимает площадь около 17 098 242 км², что делает её крупнейшей страной мира по территории.
[INFO] 2026-05-27 12:00:10 - Запрос обработан за 0.42 сек. [Agent] Searching for "AI breakthroughs 2024"...
Введите запрос (или 'exit' для выхода): exit [Agent] Found 3 relevant sources. Creating virtual files...
Virtual file system created:
- ai_breakthroughs_2024.html
- ai_breakthroughs_2024_summary.txt
Exporting virtual files to disk...
✅ Files exported to ./output/
Done! Check the output folder for results.
``` ```
> **Tip**: Если вы хотите добавить новые документы, поместите их в папку `data/` и перезапустите скрипт – он автоматически обновит коллекцию. После выполнения вы увидите в каталоге `./output/` файлы:
---
## Структура проекта
```text ```text
project/ ai_breakthroughs_2024.html # Полный HTML страницы
├─ solution.py # Основной скрипт агента ai_breakthroughs_2024_summary.txt # Краткое резюме, созданное LLM
├─ requirements.txt # Зависимости
├─ .env # Переменные окружения (не коммитить!)
└─ data/ # Папка с документами для индексации
``` ```
--- ---
## Возможные улучшения ## 📂 Структура проекта
- Добавить поддержку нескольких LLM (например, GPT4o). ```
- Реализовать кэширование запросов. deep-search-agent/
- Интегрировать с веб‑интерфейсом через FastAPI. ├── solution.py # Основной скрипт с агентом
├── requirements.txt # Зависимости
└── README.md # Это файл
```
---
## 🔧 Как изменить поведение агента
- **Изменить LLM** – замените `OpenAI()` на любой другой класс из `langchain.llms`.
- **Добавить новые инструменты** – в список `tools` добавьте свои функции.
- **Настроить поиск** – измените функцию `search_and_parse(url)` или используйте API поисковика.
---
## 📜 Лицензия
MIT License. См. файл `LICENSE`.
--- ---