Практическое задание №3: Память и подтверждение действий
Описание проекта
В этом проекте реализован агент на базе LangGraph, который умеет:
- Поминать историю диалога (MemorySaver +
thread_id); - Подтверждать каждый вызов инструмента пользователем (
interrupt_before=['tools']).
Библиотека rich используется для красивого вывода в консоль.
Структура файлов
.
├── agent.py # Создание и настройка агента
├── main.py # Точка входа: запуск диалога с пользователем
└── tools.py # Пример пользовательского инструмента
Установка зависимостей
# Клонируйте репозиторий (если ещё не сделали)
git clone https://github.com/your-username/your-repo.git
cd your-repo
# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# Установите зависимости
pip install -r requirements.txt
requirements.txt содержит:
langgraph
rich
openai # или любой другой LLM, который вы используете
Запуск проекта
1. Создание агента (agent.py)
Файл agent.py экспортирует функцию create_agent, которая возвращает готовый агент.
python -c "from agent import create_agent; print('Agent ready')"
Важно: перед запуском убедитесь, что переменная окружения
OPENAI_API_KEY(или аналогичная) установлена.
2. Запуск диалога (main.py)
Файл main.py запускает интерактивный чат с агентом.
python main.py
Пример работы:
> Привет, как дела?
Agent: Я в порядке, спасибо! Как я могу помочь?
> Сколько будет 12 * 8?
[Подтверждение] Вы хотите вызвать инструмент `calculator`? (y/n): y
Agent: Результат вычисления: 96
> Спасибо!
3. Добавление новых инструментов (tools.py)
В файле tools.py определены пользовательские инструменты.
Чтобы добавить новый, создайте функцию и зарегистрируйте её в списке TOOLS.
def my_new_tool(arg1: str) -> str:
"""Описание нового инструмента."""
return f"Вы передали {arg1}"
Пример использования
from agent import create_agent
from tools import TOOLS
from langgraph.checkpoint.memory import MemorySaver
from rich.console import Console
console = Console()
# Инициализируем память
memory = MemorySaver()
# Создаём агента с подтверждением перед каждым инструментом
agent = create_agent(
model="gpt-4o-mini",
tools=TOOLS,
system_prompt="Вы — полезный помощник.",
checkpointer=memory,
interrupt_before=["tools"],
)
config = {"configurable": {"thread_id": "session-1"}}
# Запускаем диалог
response = agent.stream(
{"messages": [{"role": "user", "content": "Сколько будет 7 * 6?"}]},
config=config,
)
for chunk in response:
console.print(chunk["output_text"], end="")
Что дальше?
- Добавьте собственные инструменты в
tools.py. - Настройте более сложный
system_promptи правила взаимодействия. - Используйте другие LLM (например, Anthropic) заменив
"gpt-4o-mini"на нужную модель.
Автор: [Ваше имя]
Дата: 2026‑05‑26