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