From 0b195119b3f8e2877fd332e2ab001e0e912cbc3a Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=D0=9C=D0=B0=D1=80=D0=B8=D1=8F=20=D0=91=D0=B5=D1=80=D0=B4?= =?UTF-8?q?=D0=BD=D0=B8=D0=BA=D0=BE=D0=B2=D0=B0?= Date: Thu, 28 May 2026 08:17:28 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=B8=D1=82?= =?UTF-8?q?=D1=8C=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 75 +++++++++++++++++++++++++++++++++++++++++++++++++++++++ 1 file changed, 75 insertions(+) create mode 100644 README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..ca70550 --- /dev/null +++ b/README.md @@ -0,0 +1,75 @@ +# Практическое задание №3: Память и подтверждение действий + +## Описание проекта +В этом задании вы доработаете агента из предыдущих практических работ, добавив: +- **Память разговора** – агент будет помнить все сообщения в рамках одного диалога. +- **Механизм подтверждения** каждого вызова инструмента пользователем. + +Для красивого вывода в консоль используется библиотека `rich`. +Агент реализован на основе LangGraph и использует OpenAI LLM через `langchain_openai`. + +## Структура проекта +``` +project/ +├── solution.py # Основной скрипт с реализацией агента +└── README.md # Это файл +``` + +## Установка зависимостей + +```bash +# Создайте виртуальное окружение (рекомендуется) +python -m venv .venv +source .venv/bin/activate # Windows: .venv\Scripts\activate + +# Установите все необходимые пакеты +pip install rich langgraph langchain_openai openai +``` + +> **Важно** +> Для работы с OpenAI вам понадобится переменная окружения `OPENAI_API_KEY`. +> ```bash +> export OPENAI_API_KEY="sk-..." +> ``` + +## Запуск скрипта + +```bash +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 г. \ No newline at end of file