# Мини‑игра «Выбери свою историю» ## 📖 Описание Это интерактивная текстовая игра, в которой **LLM** генерирует сюжет, а пользователь в реальном времени делает выбор. Граф построен на **LangGraph** и использует паттерн *human‑in‑the‑loop*: после генерации сцены LLM «приостанавливается», пользователь выбирает вариант, а затем LLM дописывает короткую концовку. ## 🚀 Установка ```bash # Клонируйте репозиторий git clone https://github.com/yourname/interactive-story.git cd interactive-story # Создайте виртуальное окружение (необязательно, но рекомендуется) python -m venv venv source venv/bin/activate # Windows: venv\Scripts\activate # Установите зависимости pip install langgraph==0.0.38 \ langchain==1.2.10 \ langchain-openai==1.1.9 \ questionary ``` > **Важно**: > - Для работы с OpenAI нужен ключ `OPENAI_API_KEY`. > - Если вы хотите использовать другую модель, настройте `ChatOpenAI` в `solution.py`. ## 📂 Структура проекта ``` interactive-story/ ├── solution.py # Основной скрипт с логикой графа └── README.md ``` ## 🏃‍♂️ Запуск ```bash python solution.py ``` ### Что происходит при запуске 1. **Инициализация** – создаётся граф, LLM и чекпоинтер. 2. **Генерация темы** – LLM создаёт тему/завязку. 3. **Сцена** – LLM генерирует описание текущей сцены. 4. **Опции** – LLM выдаёт 3‑4 варианта действий. 5. **Пауза** – пользователь выбирает вариант через консоль. 6. **Концовка** – LLM дописывает короткую концовку, учитывая выбор. 7. **Вывод** – финальный текст выводится в консоль. ## 📌 Пример использования ```text $ python solution.py LLM: Выберите тему истории: 1) Приключение в космосе 2) Тайна древнего замка 3) Путешествие во времени Выберите вариант (1‑3): 2 LLM: Вы выбрали «Тайна древнего замка». Сцена: Вы стоите перед массивным замком, его стены покрыты мхом... LLM: Что вы будете делать? 1) Подойти к воротам 2) Осмотреть окрестности 3) Выйти обратно Выберите вариант (1‑3): 1 LLM: Вы подошли к воротам. Они открылись, и внутри... Концовка: Вы нашли сокровище и спасли королевство. Поздравляем! ``` ## 🔧 Как изменить модель В `solution.py` найдите строку: ```python llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7) ``` Замените `model` на нужный вам, например `"gpt-3.5-turbo"` или `"gpt-4o"`. Если используете другую поставку, настройте `ChatOpenAI` согласно документации LangChain. ## 📚 Что дальше - Добавьте более сложные состояния (например, инвентарь, здоровье героя). - Переведите игру в веб‑интерфейс с помощью Streamlit. - Расширьте количество вариантов и уровней сложности. ## 🤝 Вклад Пожалуйста, открывайте Issues и Pull Requests. Любые улучшения приветствуются! --- **Автор:** *Ваше имя* **Дата:** *2026‑05‑29*