# Текстовая игра «Выбери свою историю» *Интерактивная история с 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 – свободно используйте и модифицируйте проект. ---