Files
dz/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_

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 или использовать облачный сервис.


Установка зависимостей

# Создайте виртуальное окружение (необязательно)
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# Установите зависимости из requirements.txt
pip install -r requirements.txt

requirements.txt:

langchain==0.2.*
openai==1.*
qdrant-client==1.*
rich==13.*
python-dotenv==1.*

Совет: Если вы используете pipx, можно установить проект как глобальный пакет.


Как запустить

1. Настройка переменных окружения

Создайте файл .env в корне проекта и добавьте:

OPENAI_API_KEY=sk-XXXXXXXXXXXXXXXXXXXX
QDRANT_URL=http://localhost:6333   # URL вашего Qdrant сервера
COLLECTION_NAME=my_collection       # Имя коллекции для хранения эмбеддингов

Важно: Убедитесь, что Qdrant запущен и доступен по указанному URL.

2. Запуск скрипта

python solution.py

Скрипт выполнит следующие шаги:

  1. Инициализирует подключение к Qdrant.
  2. Загружает документы из папки data/ (если она существует) и сохраняет их эмбеддинги.
  3. Ожидает ввод пользователя в консоли, после чего выполняет поиск и выводит ответ.

Пример использования

$ 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/ и перезапустите скрипт – он автоматически обновит коллекцию.


Структура проекта

project/
├─ solution.py          # Основной скрипт агента
├─ requirements.txt     # Зависимости
├─ .env                 # Переменные окружения (не коммитить!)
└─ data/                # Папка с документами для индексации

Возможные улучшения

  • Добавить поддержку нескольких LLM (например, GPT4o).
  • Реализовать кэширование запросов.
  • Интегрировать с веб‑интерфейсом через FastAPI.