Практическое задание №3: Память и подтверждение действий: README.md
This commit is contained in:
+122
@@ -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
|
||||||
Reference in New Issue
Block a user