Добавлен README.md

This commit is contained in:
2026-05-28 10:29:13 +00:00
parent 28df27e1c5
commit fcb8270302
+121 -2
View File
@@ -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