Добавлен README.md
This commit is contained in:
@@ -1,3 +1,122 @@
|
||||
# prakticheskoe-zadanie-3-pamyat-i-podtverzhdenie-de
|
||||
# Практическое задание №3
|
||||
## Память и подтверждение действий
|
||||
|
||||
Решение: Практическое задание №3: Память и подтверждение действий
|
||||
> **Цель** – доработать агента из предыдущих заданий: добавить память разговора и механизм подтверждения каждого вызова инструмента пользователем.
|
||||
|
||||
---
|
||||
|
||||
## Описание проекта
|
||||
|
||||
В этом репозитории реализован простой чат‑бот на базе LangChain, который умеет:
|
||||
|
||||
- хранить историю диалога (память) при помощи `MemorySaver`;
|
||||
- запрашивать у пользователя подтверждение перед выполнением любого внешнего инструмента;
|
||||
- выводить сообщения в красивом формате с помощью библиотеки `rich`.
|
||||
|
||||
Бот использует Ollama‑LLM (`llama3`) и два вспомогательных файла:
|
||||
|
||||
| Файл | Описание |
|
||||
|------|----------|
|
||||
| `agent.py` | Определяет агента, инструменты и логику подтверждения. |
|
||||
| `client.py` | Точка входа: запускает интерактивный чат с пользователем. |
|
||||
|
||||
---
|
||||
|
||||
## Предварительные требования
|
||||
|
||||
- Python **3.11+** (рекомендуется 3.12)
|
||||
- Ollama установлен и запущен локально:
|
||||
```bash
|
||||
ollama pull llama3
|
||||
```
|
||||
- Установлен пакет `rich` для красивого вывода в консоль.
|
||||
|
||||
---
|
||||
|
||||
## Установка
|
||||
|
||||
```bash
|
||||
# Клонируйте репозиторий
|
||||
git clone https://github.com/yourusername/langchain-memory-confirmation.git
|
||||
cd langchain-memory-confirmation
|
||||
|
||||
# Создайте виртуальное окружение (опционально)
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||||
|
||||
# Установите зависимости
|
||||
pip install -r requirements.txt
|
||||
```
|
||||
|
||||
`requirements.txt` содержит:
|
||||
|
||||
```text
|
||||
langchain==0.2.*
|
||||
langgraph==0.1.*
|
||||
langchain-ollama==0.0.*
|
||||
rich>=13.0
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Запуск
|
||||
|
||||
```bash
|
||||
python client.py
|
||||
```
|
||||
|
||||
После запуска бот будет ждать вашего ввода в консоли. При каждом запросе к инструменту он попросит подтвердить действие, например:
|
||||
|
||||
```
|
||||
> Какова цена товара "X"?
|
||||
[Bot] Пожалуйста, подтвердите вызов инструмента get_price для аргументов: {'product': 'X'} (y/n):
|
||||
```
|
||||
|
||||
Введите `y` – инструмент выполнится; `n` – запрос будет отменён.
|
||||
|
||||
---
|
||||
|
||||
## Пример работы
|
||||
|
||||
```text
|
||||
> Какова цена товара "Кофе"?
|
||||
[Bot] Пожалуйста, подтвердите вызов инструмента get_price для аргументов: {'product': 'Кофе'} (y/n): y
|
||||
[Bot] Цена продукта Кофе: 5.00 USD
|
||||
|
||||
> Сколько стоит товар "Чай"?
|
||||
[Bot] Пожалуйста, подтвердите вызов инструмента get_price для аргументов: {'product': 'Чай'} (y/n): n
|
||||
[Bot] Операция отменена.
|
||||
```
|
||||
|
||||
Память сохраняет все предыдущие сообщения, поэтому бот может использовать их в дальнейшем диалоге.
|
||||
|
||||
---
|
||||
|
||||
## Как это работает
|
||||
|
||||
1. **MemorySaver** хранит историю сообщений в памяти процесса.
|
||||
2. В `agent.py` каждый инструмент помечен декоратором `@tool`.
|
||||
3. При вызове инструмента агент выводит запрос на подтверждение через `rich.console.Console()`.
|
||||
Если пользователь отвечает `y`, инструмент выполняется; иначе – операция отменяется.
|
||||
|
||||
---
|
||||
|
||||
## Тесты
|
||||
|
||||
Для запуска тестов (если есть) используйте:
|
||||
|
||||
```bash
|
||||
pytest tests/
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## Вклад
|
||||
|
||||
Если хотите улучшить проект, откройте issue или pull request. Убедитесь, что все изменения проходят линтер (`ruff`) и тесты.
|
||||
|
||||
---
|
||||
|
||||
## Лицензия
|
||||
|
||||
MIT © 2026
|
||||
Reference in New Issue
Block a user