diff --git a/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md b/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md new file mode 100644 index 0000000..f0b3d58 --- /dev/null +++ b/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md @@ -0,0 +1,106 @@ +# 8. Самописный поисковый агент на основе deep agents from scratch + +## Описание проекта +Проект реализует **deep agent** – автономного поискового агента, который использует: +- **OpenAI LLM** для генерации ответов и запросов к базе знаний. +- **Qdrant** в качестве векторного хранилища для быстрых семантических поисков. +- **LangChain** для упрощения взаимодействия между компонентами (LLM, embeddings, vector store). +- **Rich** для красивого вывода информации в консоли. + +Агент умеет: +1. Загружать документы и сохранять их эмбеддинги в Qdrant. +2. Выполнять запросы пользователя, находить релевантные фрагменты текста и генерировать ответы на основе LLM. +3. Показать результаты поиска в виде таблицы с метриками. + +> **Важно**: Для работы проекта необходим доступ к API OpenAI (ключ `OPENAI_API_KEY`) и работающий экземпляр Qdrant, который можно запустить локально через Docker или использовать облачный сервис. + +--- + +## Установка зависимостей + +```bash +# Создайте виртуальное окружение (необязательно) +python -m venv .venv +source .venv/bin/activate # Windows: .venv\Scripts\activate + +# Установите зависимости из requirements.txt +pip install -r requirements.txt +``` + +`requirements.txt`: + +```text +langchain==0.2.* +openai==1.* +qdrant-client==1.* +rich==13.* +python-dotenv==1.* +``` + +> **Совет**: Если вы используете `pipx`, можно установить проект как глобальный пакет. + +--- + +## Как запустить + +### 1. Настройка переменных окружения +Создайте файл `.env` в корне проекта и добавьте: + +```dotenv +OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX +QDRANT_URL=http://localhost:6333 # URL вашего Qdrant сервера +COLLECTION_NAME=my_collection # Имя коллекции для хранения эмбеддингов +``` + +> **Важно**: Убедитесь, что Qdrant запущен и доступен по указанному URL. + +### 2. Запуск скрипта + +```bash +python solution.py +``` + +Скрипт выполнит следующие шаги: +1. Инициализирует подключение к Qdrant. +2. Загружает документы из папки `data/` (если она существует) и сохраняет их эмбеддинги. +3. Ожидает ввод пользователя в консоли, после чего выполняет поиск и выводит ответ. + +--- + +## Пример использования + +```bash +$ python solution.py +[INFO] 2026-05-27 12:00:00 - Инициализация Qdrant... +[INFO] 2026-05-27 12:00:01 - Коллекция 'my_collection' найдена. +Введите запрос (или 'exit' для выхода): Какова площадь России? +Ответ: +Россия занимает площадь около 17 098 242 км², что делает её крупнейшей страной мира по территории. + +[INFO] 2026-05-27 12:00:10 - Запрос обработан за 0.42 сек. +Введите запрос (или 'exit' для выхода): exit +``` + +> **Tip**: Если вы хотите добавить новые документы, поместите их в папку `data/` и перезапустите скрипт – он автоматически обновит коллекцию. + +--- + +## Структура проекта + +```text +project/ +├─ solution.py # Основной скрипт агента +├─ requirements.txt # Зависимости +├─ .env # Переменные окружения (не коммитить!) +└─ data/ # Папка с документами для индексации +``` + +--- + +## Возможные улучшения + +- Добавить поддержку нескольких LLM (например, GPT‑4o). +- Реализовать кэширование запросов. +- Интегрировать с веб‑интерфейсом через FastAPI. + +--- \ No newline at end of file