Files
homework-solutions/solutions/69b1a07c67bbf488a1177da4_текстовая_игра_на_основе_llm___interrupt

📚 Мини‑игра «Выбери свою историю»

Текстовая игра на основе LLM + interrupt
Использует LangGraph, LangChain и questionary для создания интерактивной истории, где пользователь выбирает ход событий.


🚀 Что это?

  • LLM генерирует начало сюжета и несколько вариантов развития.
  • Система ставит «паузы» (interrupt) – пользователь в консоли делает выбор через questionary.
  • После выбора LLM дописывает короткую концовку, учитывая выбранный путь.

Идеально подходит для демонстрации возможностей LangGraph: состояние, узлы и прерывания.


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

Пакет Версия
Python 3.10+
pip -
OpenAI API key Переменная окружения OPENAI_API_KEY

Важно: Установите ключ в переменную окружения перед запуском:

export OPENAI_API_KEY="sk-..."

⚙️ Установка

# 1. Клонируйте репозиторий (или скачайте файлы)
git clone https://github.com/yourname/text-adventure.git
cd text-adventure

# 2. Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# 3. Установите зависимости
pip install -r requirements.txt

requirements.txt:

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

▶️ Запуск

python client.py

После запуска вы увидите приглашение ввести тему истории, после чего LLM сгенерирует начало и варианты развития. Выберите один из вариантов – игра завершится короткой концовкой.


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

$ python client.py
Введите тему истории: приключения в космосе
LLM генерирует начальный сюжет...

> Что делает герой?
1️⃣ Пытается открыть дверь
2️⃣ Смотрит на звёзды
3️⃣ Включает систему жизнеобеспечения

Выберите вариант (1/2/3): 2

LLM продолжает историю...

Результат:

Герой, стоя в открытом космосе, смотрел на бесконечный океан звёзд. Внутри него раздался тихий шёпот неизвестного сигнала... (и так далее)

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

  • agent.py – определяет граф LangGraph: узлы генерации, прерывания и завершения.
  • client.py – пользовательский интерфейс в консоли, использует questionary для выбора вариантов.

🤝 Вклад

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


Счастливого кода! 🚀