2026-05-28 13:24:09 +00:00
2026-05-28 12:42:14 +00:00

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 (или вы можете задать его вручную в коде).


📦 Установка

# Клонируйте репозиторий
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

После запуска вы увидите:

  1. Сгенерированное вступление и варианты действий.
  2. Вопрос с выбором через questionary.
  3. Короткая концовка, основанная на вашем выборе.

🎮 Пример

> 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

S
Description
Решение: текстовая игра на основе llm + interrupt
Readme 46 KiB
Languages
Python 100%