feat: Human-in-the-Loop через middleware

- Агент с HumanInTheLoopMiddleware для подтверждения вызовов инструментов
- Инструменты: get_weather, search_web
- Цикл: invoke → __interrupt__ → approve/reject → Command(resume=...)
- Поддержка approve и reject с сообщением при отказе
- requirements.txt, .env.example, README.md
This commit is contained in:
2026-05-08 17:18:24 +03:00
commit ebe9e913f5
4 changed files with 206 additions and 0 deletions
+34
View File
@@ -0,0 +1,34 @@
# Задание 5: Human-in-the-Loop через middleware
## Описание
Агент с `HumanInTheLoopMiddleware`: при каждом вызове инструмента
агент останавливается, в терминале показывается что он хочет сделать,
пользователь вводит решение (approve или reject),
после чего выполнение возобновляется через `Command(resume=...)`.
## Стек
- Python 3.10+
- langchain-core, langchain-openai, langgraph
## Установка
```bash
pip install -r requirements.txt
cp .env.example .env
# Заполнить OPENAI_API_KEY в .env
```
## Запуск
```bash
python main.py "Какая погода в Казани сегодня?"
```
## Архитектура
- `get_weather`, `search_web` — инструменты агента
- `HumanInTheLoopMiddleware` — middleware для подтверждения вызовов
- `run_agent_with_hitl()` — цикл: invoke → __interrupt__ → решения → resume
- Поддерживаются `approve` и `reject` для каждого вызова инструмента