# 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