Практическое задание №3: Память и подтверждение действий: README.md

This commit is contained in:
2026-05-26 09:19:16 +00:00
parent fa37a27a21
commit 055ce3d080
@@ -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"` на нужную модель.
---
**Автор:** [Ваше имя]
**Дата:** 20260526