2026-05-28 15:51:49 +00:00
2026-05-28 15:50:09 +00:00

Текстовая игра «Выбери свою историю»

Интерактивная история с LLM и прерыванием (LangGraph)


📖 Описание

Проект реализует мини‑игру «выбери свою историю» на основе больших языковых моделей.

  • LLM генерирует начальную завязку и несколько вариантов действий.
  • Пользователь выбирает один из них через консольный интерфейс (questionary).
  • После выбора модель дописывает короткую концовку, завершая сцену.

Граф выполнения реализован с помощью LangGraph:

  • узел генерации текста → узел прерывания (выбор пользователя) → узел завершения.
  • Состояние сохраняется в чекпоинтере, чтобы можно было продолжить игру после перезапуска.

⚙️ Предварительные требования

Пакет Версия
Python 3.10+
pip любой актуальный

Важно: Для работы с OpenAI требуется переменная окружения OPENAI_API_KEY.
Если вы хотите использовать другую модель, настройте соответствующий провайдер в solution.py.


📦 Установка

# Клонируйте репозиторий (или скачайте архив)
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:

langgraph>=0.1.0
langchain>=0.2.0
langchain-openai>=0.1.0
questionary>=1.10.0
rich>=13.0.0

▶️ Запуск

# Установите переменную окружения с ключом OpenAI
export OPENAI_API_KEY="sk-..."

# Запустите игру
python solution.py

Tip

: Если вы используете Windows PowerShell, команда будет:

$env:OPENAI_API_KEY = "sk-..."
python solution.py

🎮 Пример работы

$ python solution.py
Добро пожаловать в интерактивную историю!

Завязка:
  Вы просыпаетесь в таинственном лесу, окружённом странными светлячками. Вокруг слышен шёпот ветра.

Варианты действий:
1) Исследовать ближайший домик
2) Пойти к озеру
3) Спрятаться за деревом

Выберите действие (1‑3): 2

Вы выбрали: "Пойти к озеру"

Концовка:
  Вы подходите к зеркальному озеру, и вода начинает светиться. Внезапно из воды выскакивает древний дух, который дарует вам силу видеть будущее. Игра завершена.

📚 Как это работает

  1. Генерация – LLM создаёт завязку и варианты действий.
  2. Прерывание questionary выводит список вариантов; пользователь вводит номер.
  3. Завершение – выбранный вариант передаётся в модель, которая генерирует короткую концовку.

Все состояния сохраняются в чекпоинтере (checkpoint.json) – при следующем запуске можно продолжить с того же места.


🤝 Вклад

Если хотите улучшить игру (добавить новые сценарии, изменить логику выбора, интегрировать другие LLM), откройте Pull Request. Убедитесь, что тесты проходят (pytest).


📄 Лицензия

MIT License – свободно используйте и модифицируйте проект.


S
Description
Решение: текстовая игра на основе llm + interrupt
Readme 46 KiB
Languages
Python 100%