Files
homework-solutions/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве

Практическое задание №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" на нужную модель.

Автор: [Ваше имя]
Дата: 20260526