Files
tekstovaya-igra-na-osnove-l…/README.md
T

110 lines
3.3 KiB
Markdown
Raw Blame History

This file contains ambiguous Unicode characters
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Text Adventure with LLM and Interrupts
*A minimal “chooseyourownstory” game powered by LangGraph, LangChain & OpenAI*
---
## 📖 Описание
`solution.py` реализует простую интерактивную историю, где:
1. **LLM** генерирует начальный сюжет и несколько вариантов действий.
2. Граф приостанавливает выполнение (interrupt) и выводит варианты пользователю через `questionary`.
3. После выбора пользовательского действия LLM дописывает короткую концовку.
Таким образом игрок видит цепочку:
`LLM → пауза → выбор → LLM`.
---
## ⚙️ Предварительные требования
| Технология | Версия |
|------------|--------|
| Python | ≥ 3.10 |
| pip | |
**API‑ключ OpenAI** должен быть доступен в переменной окружения `OPENAI_API_KEY` (или вы можете задать его вручную в коде).
---
## 📦 Установка
```bash
# Клонируйте репозиторий
git clone https://github.com/your-username/text-adventure.git
cd text-adventure
# Создайте виртуальное окружение (рекомендуется)
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-openai>=0.2.0
questionary>=1.10.0
rich>=13.0.0
```
---
## ▶️ Запуск
```bash
# Убедитесь, что переменная окружения установлена
export OPENAI_API_KEY="sk-..."
# Запустите игру
python solution.py
```
После запуска вы увидите:
1. Сгенерированное вступление и варианты действий.
2. Вопрос с выбором через `questionary`.
3. Короткая концовка, основанная на вашем выборе.
---
## 🎮 Пример
```text
> python solution.py
Welcome to the LLM Adventure!
You find yourself in a dimly lit cavern. A faint glow emanates from a stone altar.
What do you do?
1️⃣ Inspect the altar
2️⃣ Search for an exit
3️⃣ Sit and wait
Your choice: 1
The altar is covered with ancient runes. As you touch them, a burst of light surrounds you...
```
---
## 📚 Как это работает
- **StateGraph** управляет состоянием игры.
- `interrupt` заставляет граф остановиться и передать управление пользователю.
- После выбора пользовательского действия состояние обновляется и LLM продолжает генерацию.
---
## 🤝 Вклад
Если хотите улучшить игру (добавить больше веток, использовать другие модели, добавить сохранение прогресса), создайте pull request. Убедитесь, что тесты проходят (`pytest`).
---
## 📄 Лицензия
MIT © 2026