From 39134c9f91715ca6cf495d524b74e4c690d5c9da Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Wed, 27 May 2026 15:38:06 +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 | 131 ++++++++++-------- 1 file changed, 71 insertions(+), 60 deletions(-) diff --git a/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md b/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md index b9005fd..e9e83bb 100644 --- a/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md +++ b/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md @@ -1,99 +1,110 @@ -# 8️⃣ Самописный поисковый агент на основе Deep Agents from Scratch +# 8️⃣ Самописный поисковый агент на основе deep agents from scratch -## 📌 Описание проекта -Этот проект реализует **самописного поискового агента**, который использует модели из Ollama и векторное хранилище Qdrant для быстрого поиска и генерации ответов. -Агент умеет: +## 📌 Описание проекта +Этот проект реализует **deep agent** (глубокий агент), способный: +- Искать информацию в интернете с помощью `requests` и `beautifulsoup4`. +- Генерировать текстовые ответы при помощи модели Ollama (`llama3`). +- Хранить найденные данные во внутренней памяти, используя Qdrant как векторную базу. +- Создавать виртуальные файлы (объекты `Document`) и сохранять их в реальную файловую систему после завершения работы. -- Индексировать документы (PDF, TXT, HTML и т.д.) с помощью эмбеддеров `nomic-embed-text`. -- Хранить embeddings в коллекции Qdrant. -- Выполнять запросы к LLM `llama3` для генерации ответов на основе найденных документов. -- Работать как CLI‑интерфейс через файл `client.py`. - -## ⚙️ Предварительные требования +Агент построен на примере из репозитория **langchain-ai/deep-agents-from-scratch** и расширён функциональностью поиска и сохранения файлов. +## ⚙️ Предварительные требования | Компонент | Версия (рекоменд.) | Как установить | |-----------|--------------------|----------------| -| **Python** | ≥ 3.10 | `python -m venv .venv && source .venv/bin/activate` | -| **Ollama** | Любая, но минимум 0.1.0 | [Скачать](https://ollama.ai) и запустить: `ollama serve` | -| **Qdrant** | ≥ 1.9 | Docker: `docker run -p 6333:6333 qdrant/qdrant` | -| **LangChain** | 0.2.x | Установится через `requirements.txt` | +| Python | ≥ 3.10 | `python -m venv .venv && source .venv/bin/activate` | +| Ollama | Любая, но минимум `llama3` | `curl -fsSL https://ollama.ai/install.sh | sh`
или скачайте с официального сайта | +| Qdrant | ≥ 1.6 | `docker run -p 6333:6333 qdrant/qdrant` (Docker) | +| Docker | — | `sudo apt-get install docker.io` | -> **Важно:** -> * Ollama должен быть запущен и иметь модели `llama3` и `nomic-embed-text`. -> * Qdrant должен работать на `http://localhost:6333` (или изменить переменную окружения `QDRANT_URL`). +> **Важно**: Убедитесь, что Ollama запущен и модель `llama3` доступна (`ollama pull llama3`). +> Qdrant должен быть поднят на `http://localhost:6333`. Если используете другой адрес/порт, задайте переменную окружения `QDRANT_URL`. ## 📦 Установка - ```bash -# Клонируйте репозиторий -git clone https://github.com/yourusername/deep-agent.git +# Клонируем репозиторий (если ещё не сделано) +git clone https://github.com/<ваш-аккаунт>/deep-agent.git cd deep-agent -# Создайте виртуальное окружение и активируйте его +# Создаём виртуальное окружение и активируем его python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate -# Установите зависимости +# Устанавливаем зависимости pip install -r requirements.txt ``` `requirements.txt` содержит: - ```text -langchain==0.2.* -langchain-ollama==0.1.* -langchain-qdrant==0.1.* -qdrant-client==1.9.* +requests +beautifulsoup4 +langchain +langchain-community +python-dotenv +langchain-ollama +langchain-qdrant +rich ``` -## 🚀 Запуск - -### 1️⃣ Индексация документов (`agent.py`) +## 🚀 Запуск файлов +### 1️⃣ `agent.py` +Файл, содержащий логику агента. +Запускается так: ```bash -python agent.py --index /path/to/documents +python agent.py --query "Какой язык программирования лучше всего использовать для машинного обучения?" ``` +Параметр `--query` задаёт начальный запрос к агенту. -* `--index` – путь к каталогу с документами (pdf, txt, html и т.д.). -* Скрипт создаст/обновит коллекцию `knowledge_base` в Qdrant. - -### 2️⃣ Взаимодействие через CLI (`client.py`) - +### 2️⃣ `client.py` +Простой клиент, который демонстрирует взаимодействие с агентом через API. +Запускается так: ```bash -python client.py "Какой смысл жизни?" +python client.py --endpoint http://localhost:8000/api/ask --question "Что такое deep learning?" ``` -* Передайте ваш вопрос как аргумент. -* Агент выполнит поиск, соберёт релевантные документы и сгенерирует ответ при помощи `llama3`. +> **Замечание**: Для работы `client.py` требуется запущенный сервер (см. ниже). + +## 🛠️ Запуск сервера (если нужен API) + +В проекте есть простая FastAPI‑интерфейс, который можно поднять: +```bash +uvicorn client:app --reload +``` +После запуска вы сможете обращаться к эндпоинту `/api/ask` через `client.py`. ## 📄 Пример использования -```bash -# 1. Индексируем набор документов -python agent.py --index ./data/articles +1. **Инициализация** + Запустите агент с запросом: + ```bash + python agent.py --query "Какой язык программирования лучше всего использовать для машинного обучения?" + ``` -# 2. Запускаем клиент для получения ответа -python client.py "Что такое квантовый компьютер?" -``` +2. **Поиск и генерация** + Агент выполнит поиск в интернете, соберёт релевантные страницы, преобразует их в документы и сохранит в Qdrant. -**Вывод:** +3. **Создание виртуальных файлов** + На основе найденной информации агент создаст виртуальные файлы (объекты `Document`) с содержимым и метаданными. -``` -Ответ: -Квантовый компьютер – это вычислительное устройство, использующее принципы квантовой механики (суперпозицию и запутанность) для выполнения операций быстрее классических компьютеров. Он способен обрабатывать огромные объёмы данных параллельно, что делает его потенциально мощным инструментом в криптографии, моделировании молекул и оптимизации сложных задач. -``` +4. **Экспорт** + После завершения работы все виртуальные файлы будут выгружены в реальную файловую систему по указанному пути (`output/` по умолчанию). -## 📚 Дополнительная информация +5. **Результат** + В каталоге `output/` появятся файлы, например: + ``` + output/ + ├─ 1.md + ├─ 2.md + └─ summary.txt + ``` -- **Параметры Qdrant** можно изменить через переменные окружения `QDRANT_URL` и `COLLECTION_NAME`. -- Если вы хотите использовать другую модель LLM или эмбеддер, просто поменяйте аргументы в `OllamaLLM(model="...")` и `OllamaEmbeddings(model="...")`. -- Для более продвинутой интеграции можно подключить дополнительные инструменты LangChain (например, поиск по вебу) через декоратор `@tool`. +## 📚 Дополнительные сведения -## 🤝 Вклад +- **Конфигурация**: Все параметры (URL Qdrant, путь к выходной папке и т.д.) можно задать через `.env` файл. +- **Логи**: Агент использует `rich` для красивого вывода таблиц и логов в консоль. +- **Расширяемость**: Добавьте новые инструменты (например, API поисковых систем) с помощью декоратора `@tool`. -Пожалуйста, откройте issue или pull request, если хотите улучшить функциональность, добавить новые источники данных или исправить баги. +--- ---- - -*Автор: [Ваше имя]* -*Дата: 2026‑05‑27* \ No newline at end of file +Если возникнут вопросы или понадобится помощь — открывайте issue в репозитории! \ No newline at end of file