2026-05-28 10:29:12 +00:00
2026-05-28 10:29:12 +00:00
2026-05-28 10:29:13 +00:00

Практическое задание №3

Память и подтверждение действий

Цель – доработать агента из предыдущих заданий: добавить память разговора и механизм подтверждения каждого вызова инструмента пользователем.


Описание проекта

В этом репозитории реализован простой чат‑бот на базе LangChain, который умеет:

  • хранить историю диалога (память) при помощи MemorySaver;
  • запрашивать у пользователя подтверждение перед выполнением любого внешнего инструмента;
  • выводить сообщения в красивом формате с помощью библиотеки rich.

Бот использует Ollama‑LLM (llama3) и два вспомогательных файла:

Файл Описание
agent.py Определяет агента, инструменты и логику подтверждения.
client.py Точка входа: запускает интерактивный чат с пользователем.

Предварительные требования

  • Python 3.11+ (рекомендуется 3.12)
  • Ollama установлен и запущен локально:
    ollama pull llama3
    
  • Установлен пакет rich для красивого вывода в консоль.

Установка

# Клонируйте репозиторий
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 содержит:

langchain==0.2.*
langgraph==0.1.*
langchain-ollama==0.0.*
rich>=13.0

Запуск

python client.py

После запуска бот будет ждать вашего ввода в консоли. При каждом запросе к инструменту он попросит подтвердить действие, например:

> Какова цена товара "X"?
[Bot] Пожалуйста, подтвердите вызов инструмента get_price для аргументов: {'product': 'X'} (y/n):

Введите y – инструмент выполнится; n – запрос будет отменён.


Пример работы

> Какова цена товара "Кофе"?
[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, инструмент выполняется; иначе – операция отменяется.

Тесты

Для запуска тестов (если есть) используйте:

pytest tests/

Вклад

Если хотите улучшить проект, откройте issue или pull request. Убедитесь, что все изменения проходят линтер (ruff) и тесты.


Лицензия

MIT © 2026

S
Description
Решение: Практическое задание №3: Память и подтверждение действий
Readme 31 KiB
Languages
Python 100%