113 lines
3.8 KiB
Markdown
113 lines
3.8 KiB
Markdown
# Мини‑игра «Выбери свою историю»
|
||
## (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*!
|
||
Пожалуйста, придерживайтесь стиля кода и добавляйте тесты при необходимости.
|
||
|
||
--- |