Практическое задание №3 – Память и подтверждение действий
Описание проекта
В этом задании вы дорабатываете агента из предыдущих практических работ.
Новые возможности:
- Память разговора – агент запоминает все сообщения в рамках одного диалога.
- Подтверждение перед вызовом инструмента – пользователь подтверждает каждый запрос к инструменту.
Для красивого вывода используется библиотека rich.
Структура репозитория
project/
├── solution.py # Основной скрипт с реализацией агента
└── README.md # Это файл
Установка зависимостей
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите все необходимые пакеты
pip install langchain-openai langgraph rich
Важно
Для работы сChatOpenAIвам понадобится переменная окруженияOPENAI_API_KEY.export OPENAI_API_KEY="sk-..."
Запуск проекта
1. Откройте терминал и перейдите в корневую папку проекта.
cd /путь/к/project
2. Активируйте виртуальное окружение (если не сделали это ранее).
source .venv/bin/activate # Windows: .venv\Scripts\activate
3. Запустите скрипт solution.py.
python solution.py
Скрипт запускает интерактивный диалог с агентом.
Введите сообщение, после чего агент предложит вам подтвердить вызов инструмента (в данном случае – эхо‑инструмент).
Нажмите Y для подтверждения или N для отмены.
Пример использования
$ python solution.py
🤖 Здравствуйте! Чем могу помочь?
User: Какой сегодня день недели?
🤖 (подтверждение) Вы хотите вызвать инструмент echo_tool с аргументом {"message": "Какой сегодня день недели?"}?
Y
✅ Эхо: Какой сегодня день недели?
🤖 Что ещё интересует вас?
🤖– вывод агента.User:– ваш ввод.✅– результат работы инструмента после подтверждения.
Как это работает
- MemorySaver сохраняет все сообщения в состоянии графа, позволяя агенту «помнить» историю диалога.
- Параметр
interrupt_before=['tools']заставляет агент остановиться перед каждым вызовом инструмента и запросить подтверждение от пользователя. - Библиотека
richиспользуется для красивого форматирования вывода в консоли.
Что дальше
- Добавьте собственные инструменты (например, поиск в интернете, вычисления и т.д.).
- Измените
system_prompt, чтобы агент отвечал в нужном стиле. - Попробуйте запустить несколько диалогов с разными
thread_id– они будут независимыми.
Поддержка
Если возникли вопросы или проблемы, откройте issue в репозитории.