Files

120 lines
4.5 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Текстовая игра «Выбери свою историю»
*Интерактивная история с LLM и прерыванием (LangGraph)*
---
## 📖 Описание
Проект реализует мини‑игру **«выбери свою историю»** на основе больших языковых моделей.
- LLM генерирует начальную завязку и несколько вариантов действий.
- Пользователь выбирает один из них через консольный интерфейс (`questionary`).
- После выбора модель дописывает короткую концовку, завершая сцену.
Граф выполнения реализован с помощью **LangGraph**:
- узел генерации текста → узел прерывания (выбор пользователя) → узел завершения.
- Состояние сохраняется в чекпоинтере, чтобы можно было продолжить игру после перезапуска.
---
## ⚙️ Предварительные требования
| Пакет | Версия |
|-------|--------|
| Python | 3.10+ |
| pip | любой актуальный |
> **Важно**: Для работы с OpenAI требуется переменная окружения `OPENAI_API_KEY`.
> Если вы хотите использовать другую модель, настройте соответствующий провайдер в `solution.py`.
---
## 📦 Установка
```bash
# Клонируйте репозиторий (или скачайте архив)
git clone https://github.com/yourname/text-adventure-llm.git
cd text-adventure-llm
# Создайте виртуальное окружение (рекомендуется)
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>=0.2.0
langchain-openai>=0.1.0
questionary>=1.10.0
rich>=13.0.0
```
---
## ▶️ Запуск
```bash
# Установите переменную окружения с ключом OpenAI
export OPENAI_API_KEY="sk-..."
# Запустите игру
python solution.py
```
> **Tip**: Если вы используете Windows PowerShell, команда будет:
> ```powershell
> $env:OPENAI_API_KEY = "sk-..."
> python solution.py
> ```
---
## 🎮 Пример работы
```text
$ python solution.py
Добро пожаловать в интерактивную историю!
Завязка:
Вы просыпаетесь в таинственном лесу, окружённом странными светлячками. Вокруг слышен шёпот ветра.
Варианты действий:
1) Исследовать ближайший домик
2) Пойти к озеру
3) Спрятаться за деревом
Выберите действие (1‑3): 2
Вы выбрали: "Пойти к озеру"
Концовка:
Вы подходите к зеркальному озеру, и вода начинает светиться. Внезапно из воды выскакивает древний дух, который дарует вам силу видеть будущее. Игра завершена.
```
---
## 📚 Как это работает
1. **Генерация** – LLM создаёт завязку и варианты действий.
2. **Прерывание** `questionary` выводит список вариантов; пользователь вводит номер.
3. **Завершение** – выбранный вариант передаётся в модель, которая генерирует короткую концовку.
Все состояния сохраняются в чекпоинтере (`checkpoint.json`) – при следующем запуске можно продолжить с того же места.
---
## 🤝 Вклад
Если хотите улучшить игру (добавить новые сценарии, изменить логику выбора, интегрировать другие LLM), откройте Pull Request. Убедитесь, что тесты проходят (`pytest`).
---
## 📄 Лицензия
MIT License – свободно используйте и модифицируйте проект.
---