diff --git a/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md b/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md new file mode 100644 index 0000000..bb62088 --- /dev/null +++ b/solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md @@ -0,0 +1,122 @@ +# Практическое задание №3: Память и подтверждение действий + +## Описание проекта +В этом проекте реализован агент на базе LangGraph, который умеет: +- **Поминать** историю диалога (MemorySaver + `thread_id`); +- **Подтверждать** каждый вызов инструмента пользователем (`interrupt_before=['tools']`). + +Библиотека `rich` используется для красивого вывода в консоль. + +## Структура файлов +``` +. +├── agent.py # Создание и настройка агента +├── main.py # Точка входа: запуск диалога с пользователем +└── tools.py # Пример пользовательского инструмента +``` + +## Установка зависимостей + +```bash +# Клонируйте репозиторий (если ещё не сделали) +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` содержит: +```text +langgraph +rich +openai # или любой другой LLM, который вы используете +``` + +## Запуск проекта + +### 1. Создание агента (`agent.py`) +Файл `agent.py` экспортирует функцию `create_agent`, которая возвращает готовый агент. + +```bash +python -c "from agent import create_agent; print('Agent ready')" +``` + +> **Важно**: перед запуском убедитесь, что переменная окружения `OPENAI_API_KEY` (или аналогичная) установлена. + +### 2. Запуск диалога (`main.py`) +Файл `main.py` запускает интерактивный чат с агентом. + +```bash +python main.py +``` + +Пример работы: + +``` +> Привет, как дела? +Agent: Я в порядке, спасибо! Как я могу помочь? + +> Сколько будет 12 * 8? +[Подтверждение] Вы хотите вызвать инструмент `calculator`? (y/n): y +Agent: Результат вычисления: 96 + +> Спасибо! +``` + +### 3. Добавление новых инструментов (`tools.py`) +В файле `tools.py` определены пользовательские инструменты. +Чтобы добавить новый, создайте функцию и зарегистрируйте её в списке `TOOLS`. + +```python +def my_new_tool(arg1: str) -> str: + """Описание нового инструмента.""" + return f"Вы передали {arg1}" +``` + +## Пример использования + +```python +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 \ No newline at end of file