From 88f84d500c8f3edca0dcc31cf42f153cee1c9559 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Wed, 27 May 2026 11:11: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 | 129 ++++++++++++++++-- 1 file changed, 119 insertions(+), 10 deletions(-) diff --git a/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md b/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md index 1578281..cac1f7c 100644 --- a/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md +++ b/solutions/69de7223f309a98be0007e09_8__Самописный_поисковый_агент_на_основе_/README.md @@ -1,26 +1,135 @@ -# DeepAgent +# 8. Самописный поисковый агент на основе deep agents from scratch -## Описание +## Описание проекта +Этот проект реализует **самописного поискового агента**, который использует: +- **Qdrant** в качестве векторной базы данных для хранения и поиска документов. +- **Ollama** (модели `llama3` и `nomic-embed-text`) для генерации эмбеддингов и ответов LLM. +- **LangChain** + расширения `langchain-qdrant` и `langchain-ollama` для построения цепочки действий агента. -Простой deep‑agent, который умеет искать в интернете, скачивать страницы и создавать виртуальные файлы. После выполнения задачи виртуальные файлы выгружаются в реальную файловую систему. +Агент принимает запрос пользователя, ищет релевантные документы в Qdrant, формирует ответ с помощью Ollama‑LLM и возвращает его пользователю. + +## Предварительные требования +| Компонент | Версия / Минимальные требования | Как установить | +|-----------|---------------------------------|----------------| +| **Python** | 3.10+ | `python -m venv .venv && source .venv/bin/activate` | +| **pip** | 21+ | Встроен в Python | +| **Ollama** | Любая версия, но рекомендуется ≥ 0.1.0 | `curl -fsSL https://ollama.com/install.sh | sh` | +| **Qdrant** | 2.x (или 3.x) | Docker: `docker run -p 6333:6333 qdrant/qdrant` | +| **Docker** | Любая версия, если используете контейнер Qdrant | `sudo apt-get install docker.io` | + +> ⚠️ Убедитесь, что Ollama запущен и доступен по адресу `http://localhost:11434`, а Qdrant – по `http://localhost:6333`. ## Установка ```bash +# Клонируйте репозиторий (или скачайте файлы) +git clone https://github.com/yourusername/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.0 +langchain-ollama>=0.1.0 +langchain-qdrant>=0.1.0 +qdrant-client>=1.7.0 +python-dotenv>=1.0.0 +``` + ## Запуск +### 1️⃣ `agent.py` – запуск агента в режиме CLI + ```bash -python solution.py +# Установите переменные окружения (если не используете .env) +export QDRANT_URL="http://localhost:6333" +export QDRANT_COLLECTION="knowledge_base" + +python agent.py ``` -## Как работает +После запуска вы увидите приглашение: -1. **WebSearchTool** – выполняет поиск в DuckDuckGo и возвращает список URL. -2. **FetchPageTool** – скачивает содержимое страницы. -3. **VirtualFileSystem** – хранит файлы в памяти. -4. **DeepAgent** – использует LLM (по умолчанию `gpt-4o-mini`) для планирования действий. +``` +Введите ваш запрос: +``` -После выполнения задачи файлы сохраняются в каталог `output/`. +Вводите любой вопрос, и агент вернёт ответ. + +### 2️⃣ `client.py` – пример клиентского кода + +```bash +python client.py +``` + +Этот скрипт демонстрирует, как вызвать агента из другого Python‑скрипта: + +```python +from agent import run_agent + +response = run_agent("Какой сегодня прогноз погоды?") +print(response) +``` + +## Пример использования + +1. **Подготовка данных** + Добавьте документы в Qdrant (можно через API или скрипт). Например, создайте файл `docs.jsonl`: + + ```json + {"content":"Python – это язык программирования высокого уровня."} + {"content":"Ollama позволяет запускать LLM локально без подключения к OpenAI."} + ``` + + Затем загрузите их в Qdrant с помощью скрипта (не включён в репозиторий, но пример): + + ```python + from qdrant_client import QdrantClient + from langchain_ollama import OllamaEmbeddings + + client = QdrantClient(url="http://localhost:6333") + embeddings = OllamaEmbeddings(model="nomic-embed-text") + + with open("docs.jsonl") as f: + for line in f: + doc = Document(page_content=line.strip()) + vector = embeddings.embed_query(doc.page_content) + client.upsert( + collection_name="knowledge_base", + points=[{ + "id": hash(line), + "vector": vector, + "payload": {"content": doc.page_content} + }] + ) + ``` + +2. **Запуск агента** + ```bash + python agent.py + ``` + Введите запрос, например: + + ``` + Какой язык программирования я использую? + ``` + +3. **Ответ** + Агент вернёт ответ, сформированный на основе найденных документов и LLM. + +## Дополнительные сведения + +- Если вы хотите изменить модель Ollama или коллекцию Qdrant, отредактируйте переменные окружения `QDRANT_URL`, `QDRANT_COLLECTION` и параметры в `agent.py`. +- Для более продвинутой интеграции с веб‑интерфейсом можно использовать FastAPI/Flask – это не входит в базовый README, но легко реализуемо. + +--- + +**Спасибо за внимание!** Если возникнут вопросы, откройте issue или свяжитесь с нами напрямую. \ No newline at end of file