110 lines
3.3 KiB
Markdown
110 lines
3.3 KiB
Markdown
# Text Adventure with LLM and Interrupts
|
||
*A minimal “choose‑your‑own‑story” game powered by LangGraph, LangChain & OpenAI*
|
||
|
||
---
|
||
|
||
## 📖 Описание
|
||
|
||
`solution.py` реализует простую интерактивную историю, где:
|
||
|
||
1. **LLM** генерирует начальный сюжет и несколько вариантов действий.
|
||
2. Граф приостанавливает выполнение (interrupt) и выводит варианты пользователю через `questionary`.
|
||
3. После выбора пользовательского действия LLM дописывает короткую концовку.
|
||
|
||
Таким образом игрок видит цепочку:
|
||
`LLM → пауза → выбор → LLM`.
|
||
|
||
---
|
||
|
||
## ⚙️ Предварительные требования
|
||
|
||
| Технология | Версия |
|
||
|------------|--------|
|
||
| Python | ≥ 3.10 |
|
||
| pip | – |
|
||
|
||
**API‑ключ OpenAI** должен быть доступен в переменной окружения `OPENAI_API_KEY` (или вы можете задать его вручную в коде).
|
||
|
||
---
|
||
|
||
## 📦 Установка
|
||
|
||
```bash
|
||
# Клонируйте репозиторий
|
||
git clone https://github.com/your-username/text-adventure.git
|
||
cd text-adventure
|
||
|
||
# Создайте виртуальное окружение (рекомендуется)
|
||
python -m venv .venv
|
||
source .venv/bin/activate # Windows: .\.venv\Scripts\activate
|
||
|
||
# Установите зависимости
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
`requirements.txt`:
|
||
|
||
```text
|
||
langgraph>=0.1.0
|
||
langchain-openai>=0.2.0
|
||
questionary>=1.10.0
|
||
rich>=13.0.0
|
||
```
|
||
|
||
---
|
||
|
||
## ▶️ Запуск
|
||
|
||
```bash
|
||
# Убедитесь, что переменная окружения установлена
|
||
export OPENAI_API_KEY="sk-..."
|
||
|
||
# Запустите игру
|
||
python solution.py
|
||
```
|
||
|
||
После запуска вы увидите:
|
||
|
||
1. Сгенерированное вступление и варианты действий.
|
||
2. Вопрос с выбором через `questionary`.
|
||
3. Короткая концовка, основанная на вашем выборе.
|
||
|
||
---
|
||
|
||
## 🎮 Пример
|
||
|
||
```text
|
||
> python solution.py
|
||
Welcome to the LLM Adventure!
|
||
|
||
You find yourself in a dimly lit cavern. A faint glow emanates from a stone altar.
|
||
What do you do?
|
||
|
||
1️⃣ Inspect the altar
|
||
2️⃣ Search for an exit
|
||
3️⃣ Sit and wait
|
||
|
||
Your choice: 1
|
||
|
||
The altar is covered with ancient runes. As you touch them, a burst of light surrounds you...
|
||
```
|
||
|
||
---
|
||
|
||
## 📚 Как это работает
|
||
|
||
- **StateGraph** управляет состоянием игры.
|
||
- `interrupt` заставляет граф остановиться и передать управление пользователю.
|
||
- После выбора пользовательского действия состояние обновляется и LLM продолжает генерацию.
|
||
|
||
---
|
||
|
||
## 🤝 Вклад
|
||
|
||
Если хотите улучшить игру (добавить больше веток, использовать другие модели, добавить сохранение прогресса), создайте pull request. Убедитесь, что тесты проходят (`pytest`).
|
||
|
||
---
|
||
|
||
## 📄 Лицензия
|
||
|
||
MIT © 2026 |