# Мини‑игра «Выбери свою историю» ## (Interactive Storytelling with LLM + Interrupt) --- ## 📖 Описание `solution.py` реализует простую текстовую игру в стиле *«выбери свою историю»*. Процесс игры выглядит так: 1. **LLM** генерирует начальную сцену и несколько вариантов действий героя. 2. С помощью `langgraph` выполнение «приостанавливается» (interrupt). 3. Пользователь выбирает один из предложенных вариантов через консольный интерфейс (`questionary`). 4. После выбора LLM дописывает короткую концовку, учитывая выбранное действие. Таким образом игрок управляет сюжетом в реальном времени, а модель отвечает на его выборы. --- ## ⚙️ Предварительные требования | Компонент | Версия | |-----------|--------| | Python | 3.10+ | | pip | - | > **Важно**: Для работы с LLM требуется ключ OpenAI API. > Установите переменную окружения `OPENAI_API_KEY` перед запуском. --- ## 📦 Установка ```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 questionary>=1.10.0 openai>=1.0.0 ``` --- ## ▶️ Запуск ```bash # Установите ключ OpenAI (пример) export OPENAI_API_KEY="sk-..." # Запустите игру python solution.py ``` После запуска вы увидите: ``` LLM: "Ты стоишь на перекрестке в древнем городе. Что ты сделаешь?" 1) Пойти к рынку 2) Исследовать подземелье 3) Вернуться домой Выберите действие (1/2/3): ``` Введите номер, и модель продолжит историю. --- ## 🎮 Пример игры ``` LLM: "Ты стоишь на перекрестке в древнем городе. Что ты сделаешь?" 1) Пойти к рынку 2) Исследовать подземелье 3) Вернуться домой Выберите действие (1/2/3): 2 LLM: "Твое решение исследовать подземелье заставило тебя спуститься по узкой лестнице, ведущей в мрачные глубины. Внутри ты обнаружил..." ``` --- ## 📚 Как это работает - **LangGraph** управляет состоянием и прерываниями. - **ChatOpenAI** (из `langchain`) отвечает за генерацию текста. - **questionary** обеспечивает интерактивный выбор в консоли. Вы можете расширить игру, добавив больше веток, логики выбора или даже графический интерфейс. --- ## 🤝 Вклад Если хотите улучшить проект – создайте *pull request*! Пожалуйста, придерживайтесь стиля кода и добавляйте тесты при необходимости. ---