Delete directory 'solutions/69a474cdc46fd26feae69896_Практическое_задание__3__Память_и_подтве'
This commit is contained in:
-122
@@ -1,122 +0,0 @@
|
|||||||
# Практическое задание №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
|
|
||||||
-2
@@ -1,2 +0,0 @@
|
|||||||
numpy
|
|
||||||
pandas
|
|
||||||
Reference in New Issue
Block a user