109 lines
3.6 KiB
Markdown
109 lines
3.6 KiB
Markdown
# Interactive Text Adventure with LLM & Interrupts
|
||
**Solution:** `solution.py`
|
||
|
||
---
|
||
|
||
## 📖 Описание
|
||
|
||
`solution.py` реализует мини‑игру «Выбери свою историю» на основе больших языковых моделей (LLM).
|
||
|
||
1. **Генерация начала** – LLM создаёт завязку и несколько вариантов действий.
|
||
2. **Пауза (interrupt)** – граф LangGraph ставит паузу, ожидая выбора игрока.
|
||
3. **Выбор пользователя** – через консольный интерфейс `questionary` пользователь выбирает вариант.
|
||
4. **Продолжение истории** – после выбора LLM дописывает дальнейший сюжет.
|
||
|
||
Граф построен с помощью `langgraph`, а состояние сохраняется в памяти (`InMemorySaver`). Для вывода текста используется `rich`.
|
||
|
||
---
|
||
|
||
## ⚙️ Предварительные требования
|
||
|
||
| Пакет | Версия |
|
||
|-------|--------|
|
||
| Python | 3.10+ |
|
||
| langchain | ≥0.2.0 |
|
||
| langgraph | ≥0.1.0 |
|
||
| questionary | ≥1.10.0 |
|
||
| rich | ≥13.0.0 |
|
||
| openai (или любая LLM‑провайдер) | – |
|
||
|
||
> **Важно**:
|
||
> - Для работы с OpenAI понадобится переменная окружения `OPENAI_API_KEY`.
|
||
> - Если используете другую модель, замените импорт `ChatOpenAI` на соответствующий провайдер.
|
||
|
||
---
|
||
|
||
## 🚀 Установка
|
||
|
||
```bash
|
||
# 1. Клонируйте репозиторий (или скопируйте файл solution.py)
|
||
git clone https://github.com/yourusername/interactive-adventure.git
|
||
cd interactive-adventure
|
||
|
||
# 2. Создайте виртуальное окружение (рекомендуется)
|
||
python -m venv .venv
|
||
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
|
||
|
||
# 3. Установите зависимости
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
`requirements.txt`:
|
||
|
||
```text
|
||
langchain>=0.2.0
|
||
langgraph>=0.1.0
|
||
questionary>=1.10.0
|
||
rich>=13.0.0
|
||
openai>=1.0.0 # если используете OpenAI
|
||
```
|
||
|
||
---
|
||
|
||
## ▶️ Запуск
|
||
|
||
```bash
|
||
# Установите переменную окружения с ключом API (пример для Linux/macOS)
|
||
export OPENAI_API_KEY="sk-..."
|
||
|
||
# Для Windows:
|
||
set OPENAI_API_KEY=sk-...
|
||
|
||
python solution.py
|
||
```
|
||
|
||
После запуска вы увидите интерактивный диалог в терминале. Выбирайте варианты, и история будет развиваться.
|
||
|
||
---
|
||
|
||
## 📋 Пример работы
|
||
|
||
```text
|
||
> Начало истории:
|
||
Вы просыпаетесь в таинственном лесу. Вокруг слышен шорох ветра.
|
||
Варианты действий:
|
||
1) Исследовать ближайший домик
|
||
2) Пойти к озеру
|
||
3) Остановиться и послушать тишину
|
||
|
||
Выберите номер: 2
|
||
|
||
> Вы выбрали: "Пойти к озеру"
|
||
LLM продолжает историю...
|
||
```
|
||
|
||
---
|
||
|
||
## 📚 Что дальше?
|
||
|
||
- Добавьте более сложные ветки и условия.
|
||
- Сохраните состояние в файл, чтобы игрок мог возобновить игру позже (`langgraph.checkpoint.file`).
|
||
- Интегрируйте голосовой ввод/вывод для более «живого» опыта.
|
||
|
||
---
|
||
|
||
## 📄 Лицензия
|
||
|
||
MIT © 2026
|
||
|
||
--- |