From 055ce3d08003e8726e6c670676d6258b2b72e7e4 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Tue, 26 May 2026 09:19:16 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D1=80=D0=B0=D0=BA=D1=82=D0=B8=D1=87?= =?UTF-8?q?=D0=B5=D1=81=D0=BA=D0=BE=D0=B5=20=D0=B7=D0=B0=D0=B4=D0=B0=D0=BD?= =?UTF-8?q?=D0=B8=D0=B5=20=E2=84=963:=20=D0=9F=D0=B0=D0=BC=D1=8F=D1=82?= =?UTF-8?q?=D1=8C=20=D0=B8=20=D0=BF=D0=BE=D0=B4=D1=82=D0=B2=D0=B5=D1=80?= =?UTF-8?q?=D0=B6=D0=B4=D0=B5=D0=BD=D0=B8=D0=B5=20=D0=B4=D0=B5=D0=B9=D1=81?= =?UTF-8?q?=D1=82=D0=B2=D0=B8=D0=B9:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- .../README.md | 122 ++++++++++++++++++ 1 file changed, 122 insertions(+) create mode 100644 solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве/README.md 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