Добавлен README.md

This commit is contained in:
2026-05-28 12:42:15 +00:00
parent b416ca2ce4
commit 830472cc02
+50 -54
View File
@@ -1,56 +1,61 @@
# Мини‑игра «Выбери свою историю» # Interactive Text Adventure with LLM & Interrupts
## (Interactive Storytelling with LLM + Interrupt) **Solution:** `solution.py`
--- ---
## 📖 Описание ## 📖 Описание
`solution.py` реализует простую текстовую игру в стиле *«выбери свою историю»*. `solution.py` реализует мини‑игру «Выбери свою историю» на основе больших языковых моделей (LLM).
Процесс игры выглядит так:
1. **LLM** генерирует начальную сцену и несколько вариантов действий героя. 1. **Генерация начала** – LLM создаёт завязку и несколько вариантов действий.
2. С помощью `langgraph` выполнение «приостанавливается» (interrupt). 2. **Пауза (interrupt)** граф LangGraph ставит паузу, ожидая выбора игрока.
3. Пользователь выбирает один из предложенных вариантов через консольный интерфейс (`questionary`). 3. **Выбор пользователя** через консольный интерфейс `questionary` пользователь выбирает вариант.
4. После выбора LLM дописывает короткую концовку, учитывая выбранное действие. 4. **Продолжение истории** – после выбора LLM дописывает дальнейший сюжет.
Таким образом игрок управляет сюжетом в реальном времени, а модель отвечает на его выборы. Граф построен с помощью `langgraph`, а состояние сохраняется в памяти (`InMemorySaver`). Для вывода текста используется `rich`.
--- ---
## ⚙️ Предварительные требования ## ⚙️ Предварительные требования
| Компонент | Версия | | Пакет | Версия |
|-----------|--------| |-------|--------|
| Python | 3.10+ | | Python | 3.10+ |
| pip | - | | langchain | ≥0.2.0 |
| langgraph | ≥0.1.0 |
| questionary | ≥1.10.0 |
| rich | ≥13.0.0 |
| openai (или любая LLM‑провайдер) | – |
> **Важно**: Для работы с LLM требуется ключ OpenAI API. > **Важно**:
> Установите переменную окружения `OPENAI_API_KEY` перед запуском. > - Для работы с OpenAI понадобится переменная окружения `OPENAI_API_KEY`.
> - Если используете другую модель, замените импорт `ChatOpenAI` на соответствующий провайдер.
--- ---
## 📦 Установка ## 🚀 Установка
```bash ```bash
# Клонируйте репозиторий (или скачайте файлы) # 1. Клонируйте репозиторий (или скопируйте файл solution.py)
git clone https://github.com/yourname/text-adventure-llm.git git clone https://github.com/yourusername/interactive-adventure.git
cd text-adventure-llm cd interactive-adventure
# Создайте виртуальное окружение (рекомендуется) # 2. Создайте виртуальное окружение (рекомендуется)
python -m venv .venv python -m venv .venv
source .venv/bin/activate # Windows: .\.venv\Scripts\activate source .venv/bin/activate # Windows: .\.venv\Scripts\activate
# Установите зависимости # 3. Установите зависимости
pip install -r requirements.txt pip install -r requirements.txt
``` ```
`requirements.txt` содержит: `requirements.txt`:
```text ```text
langgraph>=0.1.0
langchain>=0.2.0 langchain>=0.2.0
langgraph>=0.1.0
questionary>=1.10.0 questionary>=1.10.0
openai>=1.0.0 rich>=13.0.0
openai>=1.0.0 # если используете OpenAI
``` ```
--- ---
@@ -58,56 +63,47 @@ openai>=1.0.0
## ▶️ Запуск ## ▶️ Запуск
```bash ```bash
# Установите ключ OpenAI (пример) # Установите переменную окружения с ключом API (пример для Linux/macOS)
export OPENAI_API_KEY="sk-..." export OPENAI_API_KEY="sk-..."
# Запустите игру # Для Windows:
set OPENAI_API_KEY=sk-...
python solution.py python solution.py
``` ```
После запуска вы увидите: После запуска вы увидите интерактивный диалог в терминале. Выбирайте варианты, и история будет развиваться.
```
LLM: "Ты стоишь на перекрестке в древнем городе. Что ты сделаешь?"
1) Пойти к рынку
2) Исследовать подземелье
3) Вернуться домой
Выберите действие (1/2/3):
```
Введите номер, и модель продолжит историю.
--- ---
## 🎮 Пример игры ## 📋 Пример работы
``` ```text
LLM: "Ты стоишь на перекрестке в древнем городе. Что ты сделаешь?" > Начало истории:
1) Пойти к рынку Вы просыпаетесь в таинственном лесу. Вокруг слышен шорох ветра.
2) Исследовать подземелье Варианты действий:
3) Вернуться домой 1) Исследовать ближайший домик
2) Пойти к озеру
3) Остановиться и послушать тишину
Выберите действие (1/2/3): 2 Выберите номер: 2
LLM: "Твое решение исследовать подземелье заставило тебя спуститься по узкой лестнице, ведущей в мрачные глубины. Внутри ты обнаружил..." > Вы выбрали: "Пойти к озеру"
LLM продолжает историю...
``` ```
--- ---
## 📚 Как это работает ## 📚 Что дальше?
- **LangGraph** управляет состоянием и прерываниями. - Добавьте более сложные ветки и условия.
- **ChatOpenAI** (из `langchain`) отвечает за генерацию текста. - Сохраните состояние в файл, чтобы игрок мог возобновить игру позже (`langgraph.checkpoint.file`).
- **questionary** обеспечивает интерактивный выбор в консоли. - Интегрируйте голосовой ввод/вывод для более «живого» опыта.
Вы можете расширить игру, добавив больше веток, логики выбора или даже графический интерфейс.
--- ---
## 🤝 Вклад ## 📄 Лицензия
Если хотите улучшить проект – создайте *pull request*! MIT © 2026
Пожалуйста, придерживайтесь стиля кода и добавляйте тесты при необходимости.
--- ---