e1d38f334539c5304b81d35b150c1199f9b005b3
Text Adventure with LLM and Interrupts
A minimal “choose‑your‑own‑story” game powered by LangGraph, LangChain & OpenAI
📖 Описание
solution.py реализует простую интерактивную историю, где:
- LLM генерирует начальный сюжет и несколько вариантов действий.
- Граф приостанавливает выполнение (interrupt) и выводит варианты пользователю через
questionary. - После выбора пользовательского действия LLM дописывает короткую концовку.
Таким образом игрок видит цепочку:
LLM → пауза → выбор → LLM.
⚙️ Предварительные требования
| Технология | Версия |
|---|---|
| Python | ≥ 3.10 |
| pip | – |
API‑ключ OpenAI должен быть доступен в переменной окружения OPENAI_API_KEY (или вы можете задать его вручную в коде).
📦 Установка
# Клонируйте репозиторий
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:
langgraph>=0.1.0
langchain-openai>=0.2.0
questionary>=1.10.0
rich>=13.0.0
▶️ Запуск
# Убедитесь, что переменная окружения установлена
export OPENAI_API_KEY="sk-..."
# Запустите игру
python solution.py
После запуска вы увидите:
- Сгенерированное вступление и варианты действий.
- Вопрос с выбором через
questionary. - Короткая концовка, основанная на вашем выборе.
🎮 Пример
> 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
Description
Languages
Python
100%