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

📖 Описание

Это интерактивная текстовая игра, в которой LLM генерирует сюжет, а пользователь в реальном времени делает выбор.
Граф построен на LangGraph и использует паттерн humanintheloop: после генерации сцены LLM «приостанавливается», пользователь выбирает вариант, а затем LLM дописывает короткую концовку.

🚀 Установка

# Клонируйте репозиторий
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

🏃‍♂️ Запуск

python solution.py

Что происходит при запуске

  1. Инициализация – создаётся граф, LLM и чекпоинтер.
  2. Генерация темы – LLM создаёт тему/завязку.
  3. Сцена – LLM генерирует описание текущей сцены.
  4. Опции – LLM выдаёт 3‑4 варианта действий.
  5. Пауза – пользователь выбирает вариант через консоль.
  6. Концовка – LLM дописывает короткую концовку, учитывая выбор.
  7. Вывод – финальный текст выводится в консоль.

📌 Пример использования

$ python solution.py
LLM: Выберите тему истории:
1) Приключение в космосе
2) Тайна древнего замка
3) Путешествие во времени

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

LLM: Вы выбрали «Тайна древнего замка».  
Сцена: Вы стоите перед массивным замком, его стены покрыты мхом...

LLM: Что вы будете делать?
1) Подойти к воротам
2) Осмотреть окрестности
3) Выйти обратно

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

LLM: Вы подошли к воротам. Они открылись, и внутри...

Концовка: Вы нашли сокровище и спасли королевство. Поздравляем!

🔧 Как изменить модель

В solution.py найдите строку:

llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7)

Замените model на нужный вам, например "gpt-3.5-turbo" или "gpt-4o".
Если используете другую поставку, настройте ChatOpenAI согласно документации LangChain.

📚 Что дальше

  • Добавьте более сложные состояния (например, инвентарь, здоровье героя).
  • Переведите игру в веб‑интерфейс с помощью Streamlit.
  • Расширьте количество вариантов и уровней сложности.

🤝 Вклад

Пожалуйста, открывайте Issues и Pull Requests. Любые улучшения приветствуются!


Автор: Ваше имя
Дата: 20260529

S
Description
Решения домашних заданий
Readme 29 KiB
Languages
Python 100%