Files
69a474cdc46fd26feae69896_--…/README.md
T

3.8 KiB
Raw Blame History

Практическое задание №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!

Как это работает

  1. Память

    • MemorySaver сохраняет состояние диалога.
    • Каждый запрос отправляется с конфигурацией {"configurable": {"thread_id": "разговор-1"}}, чтобы все сообщения в рамках одного разговора были связаны.
  2. Подтверждение

    • Параметр interrupt_before=["tools"] заставляет агент остановиться перед вызовом любого инструмента.
    • В момент паузы пользователь получает запрос на подтверждение (y/n). Если ответ n, инструмент не вызывается, и агент продолжает работу.
  3. Инструмент

    • Простой эхо‑инструмент echo_tool возвращает введённый текст. Его можно заменить любым другим действием (поиск в интернете, работа с базой данных и т.д.).

Что дальше

  • Добавьте более сложные инструменты.
  • Реализуйте сохранение диалогов в файл или БД для дальнейшего анализа.
  • Настройте разные thread_id для параллельных разговоров.

Автор: [Ваше имя]
Дата: 27 мая 2026 г.