Добавлен README.md
This commit is contained in:
@@ -1,3 +1,122 @@
|
|||||||
# 8-samopisnyy-poiskovyy-agent-na-osnove-deep-agents
|
# 8. Самописный поисковый агент на основе deep agents from scratch
|
||||||
|
|
||||||
Решение: 8. Самописный поисковый агент на основе deep agents from scratch
|
## Описание проекта
|
||||||
|
|
||||||
|
В этом проекте реализован **самописный поисковый агент** с использованием библиотеки LangChain и OpenAI LLM.
|
||||||
|
Агент умеет:
|
||||||
|
|
||||||
|
1. Принимать запрос от пользователя через консоль.
|
||||||
|
2. Искать нужную информацию в интернете (через встроенные инструменты LangChain).
|
||||||
|
3. Создавать виртуальные файлы, заполняя их содержимым найденной информации.
|
||||||
|
4. Выводить содержимое файлов в красивом формате с помощью `rich`.
|
||||||
|
5. Сохранять созданные файлы на диск.
|
||||||
|
|
||||||
|
Проект демонстрирует практическое применение **deep agents** – агентов, которые могут использовать внешние инструменты и сохранять промежуточные результаты в виде файлов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Предварительные требования
|
||||||
|
|
||||||
|
| Пакет | Версия |
|
||||||
|
|-------|--------|
|
||||||
|
| Python | 3.10+ |
|
||||||
|
| langchain | ≥0.1.0 |
|
||||||
|
| langchain-openai | ≥0.1.0 |
|
||||||
|
| questionary | ≥1.10.0 |
|
||||||
|
| rich | ≥13.0.0 |
|
||||||
|
|
||||||
|
> **Важно**: Для работы с OpenAI понадобится API‑ключ, который можно получить на [openai.com](https://platform.openai.com/).
|
||||||
|
> Установите переменную окружения `OPENAI_API_KEY` перед запуском.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# 1. Клонируйте репозиторий (или скачайте файлы)
|
||||||
|
git clone https://github.com/<ваш-аккаунт>/deep-agent-search.git
|
||||||
|
cd deep-agent-search
|
||||||
|
|
||||||
|
# 2. Создайте виртуальное окружение (рекомендовано)
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||||||
|
|
||||||
|
# 3. Установите зависимости
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
`requirements.txt` содержит:
|
||||||
|
|
||||||
|
```text
|
||||||
|
langchain>=0.1.0
|
||||||
|
langchain-openai>=0.1.0
|
||||||
|
questionary>=1.10.0
|
||||||
|
rich>=13.0.0
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Запуск
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Установите переменную окружения с вашим ключом OpenAI
|
||||||
|
export OPENAI_API_KEY="sk-..."
|
||||||
|
|
||||||
|
# Запустите скрипт
|
||||||
|
python solution.py
|
||||||
|
```
|
||||||
|
|
||||||
|
После запуска вы увидите интерактивный запрос:
|
||||||
|
|
||||||
|
```
|
||||||
|
Введите ваш поисковый запрос:
|
||||||
|
```
|
||||||
|
|
||||||
|
Вводите любой вопрос, например: `Какой самый быстрый млекопитающий?`.
|
||||||
|
Агент выполнит поиск, создаст виртуальный файл с ответом и отобразит его содержимое. Далее будет предложено сохранить файлы на диск.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Пример работы
|
||||||
|
|
||||||
|
```text
|
||||||
|
$ python solution.py
|
||||||
|
Введите ваш поисковый запрос: Какой самый быстрый млекопитающий?
|
||||||
|
|
||||||
|
[+] Ищу информацию...
|
||||||
|
[+] Создаю виртуальный файл "fastest_mammal.txt"...
|
||||||
|
|
||||||
|
Содержимое файла:
|
||||||
|
----------------------------------------
|
||||||
|
Самым быстрым млекопитающим считается гепард (Acinonyx jubatus). Он способен развивать скорость до 120 км/ч на коротких дистанциях.
|
||||||
|
----------------------------------------
|
||||||
|
|
||||||
|
Хотите сохранить файлы на диск? [y/N]: y
|
||||||
|
Файл сохранён: ./fastest_mammal.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Как это работает
|
||||||
|
|
||||||
|
- **LangChain** управляет агентом и инструментами поиска (например, `SerpAPI`).
|
||||||
|
- **ChatOpenAI** отвечает за генерацию текста и интерпретацию запросов.
|
||||||
|
- **questionary** обеспечивает интерактивный ввод/вывод в консоли.
|
||||||
|
- **rich** форматирует вывод, делая его более читаемым.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Возможные улучшения
|
||||||
|
|
||||||
|
- Добавить поддержку нескольких языков.
|
||||||
|
- Интегрировать другие источники данных (Wikipedia API, DuckDuckGo и т.д.).
|
||||||
|
- Сохранять файлы в формате Markdown или PDF.
|
||||||
|
- Реализовать кэширование результатов для ускорения повторных запросов.
|
||||||
|
|
||||||
|
---
|
||||||
|
|
||||||
|
## Лицензия
|
||||||
|
|
||||||
|
MIT License – см. файл `LICENSE`.
|
||||||
|
|
||||||
|
---
|
||||||
Reference in New Issue
Block a user