From 54c955a8997c572bd0f43459465133555b607fae Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Wed, 27 May 2026 13:19:32 +0000 Subject: [PATCH] =?UTF-8?q?8.=20=D0=A1=D0=B0=D0=BC=D0=BE=D0=BF=D0=B8=D1=81?= =?UTF-8?q?=D0=BD=D1=8B=D0=B9=20=D0=BF=D0=BE=D0=B8=D1=81=D0=BA=D0=BE=D0=B2?= =?UTF-8?q?=D1=8B=D0=B9=20=D0=B0=D0=B3=D0=B5=D0=BD=D1=82=20=D0=BD=D0=B0=20?= =?UTF-8?q?=D0=BE=D1=81=D0=BD=D0=BE=D0=B2=D0=B5=20deep=20agents=20from=20s?= =?UTF-8?q?cratch:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 106 ++++++++++++++++++ 1 file changed, 106 insertions(+) create mode 100644 solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md 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