0b195119b3f8e2877fd332e2ab001e0e912cbc3a
Практическое задание №3: Память и подтверждение действий
Описание проекта
В этом задании вы доработаете агента из предыдущих практических работ, добавив:
- Память разговора – агент будет помнить все сообщения в рамках одного диалога.
- Механизм подтверждения каждого вызова инструмента пользователем.
Для красивого вывода в консоль используется библиотека rich.
Агент реализован на основе LangGraph и использует OpenAI LLM через langchain_openai.
Структура проекта
project/
├── solution.py # Основной скрипт с реализацией агента
└── README.md # Это файл
Установка зависимостей
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите все необходимые пакеты
pip install rich langgraph langchain_openai openai
Важно
Для работы с OpenAI вам понадобится переменная окруженияOPENAI_API_KEY.export OPENAI_API_KEY="sk-..."
Запуск скрипта
python solution.py
Скрипт запускает интерактивный чат. Введите сообщение, и агент ответит, используя инструмент echo_tool при необходимости. Перед каждым вызовом инструмента пользователь будет запрашиваться о подтверждении.
Пример работы
$ python solution.py
🤖: Hello! How can I help you today?
🧑: Tell me a joke.
🤔 (пауза) Вы хотите вызвать инструмент? [y/n]: y
🤖: Why did the scarecrow win an award? Because he was outstanding in his field!
Как это работает
-
Память
MemorySaverсохраняет состояние диалога.- Каждый запрос отправляется с конфигурацией
{"configurable": {"thread_id": "разговор-1"}}, чтобы все сообщения в рамках одного разговора были связаны.
-
Подтверждение
- Параметр
interrupt_before=["tools"]заставляет агент остановиться перед вызовом любого инструмента. - В момент паузы пользователь получает запрос на подтверждение (
y/n). Если ответn, инструмент не вызывается, и агент продолжает работу.
- Параметр
-
Инструмент
- Простой эхо‑инструмент
echo_toolвозвращает введённый текст. Его можно заменить любым другим действием (поиск в интернете, работа с базой данных и т.д.).
- Простой эхо‑инструмент
Что дальше
- Добавьте более сложные инструменты.
- Реализуйте сохранение диалогов в файл или БД для дальнейшего анализа.
- Настройте разные
thread_idдля параллельных разговоров.
Автор: [Ваше имя]
Дата: 27 мая 2026 г.
Description
Languages
Python
100%