101 lines
4.2 KiB
Markdown
101 lines
4.2 KiB
Markdown
# Мини‑игра «Выбери свою историю»
|
||
## 📖 Описание
|
||
Это интерактивная текстовая игра, в которой **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* |