Добавлен README.md

This commit is contained in:
2026-05-28 13:24:09 +00:00
parent 4423de7430
commit e1d38f3345
+49 -48
View File
@@ -1,61 +1,54 @@
# Interactive Text Adventure with LLM & Interrupts # Text Adventure with LLM and Interrupts
**Solution:** `solution.py` *A minimal “chooseyourownstory” game powered by LangGraph, LangChain & OpenAI*
--- ---
## 📖 Описание ## 📖 Описание
`solution.py` реализует мини‑игру «Выбери свою историю» на основе больших языковых моделей (LLM). `solution.py` реализует простую интерактивную историю, где:
1. **Генерация начала** – LLM создаёт завязку и несколько вариантов действий. 1. **LLM** генерирует начальный сюжет и несколько вариантов действий.
2. **Пауза (interrupt)** граф LangGraph ставит паузу, ожидая выбора игрока. 2. Граф приостанавливает выполнение (interrupt) и выводит варианты пользователю через `questionary`.
3. **Выбор пользователя** – через консольный интерфейс `questionary` пользователь выбирает вариант. 3. После выбора пользовательского действия LLM дописывает короткую концовку.
4. **Продолжение истории** – после выбора LLM дописывает дальнейший сюжет.
Граф построен с помощью `langgraph`, а состояние сохраняется в памяти (`InMemorySaver`). Для вывода текста используется `rich`. Таким образом игрок видит цепочку:
`LLM → пауза → выбор → LLM`.
--- ---
## ⚙️ Предварительные требования ## ⚙️ Предварительные требования
| Пакет | Версия | | Технология | Версия |
|-------|--------| |------------|--------|
| Python | 3.10+ | | Python | ≥ 3.10 |
| langchain | ≥0.2.0 | | pip | |
| langgraph | ≥0.1.0 |
| questionary | ≥1.10.0 |
| rich | ≥13.0.0 |
| openai (или любая LLM‑провайдер) | – |
> **Важно**: **API‑ключ OpenAI** должен быть доступен в переменной окружения `OPENAI_API_KEY` (или вы можете задать его вручную в коде).
> - Для работы с OpenAI понадобится переменная окружения `OPENAI_API_KEY`.
> - Если используете другую модель, замените импорт `ChatOpenAI` на соответствующий провайдер.
--- ---
## 🚀 Установка ## 📦 Установка
```bash ```bash
# 1. Клонируйте репозиторий (или скопируйте файл solution.py) # Клонируйте репозиторий
git clone https://github.com/yourusername/interactive-adventure.git git clone https://github.com/your-username/text-adventure.git
cd interactive-adventure cd text-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
langchain>=0.2.0
langgraph>=0.1.0 langgraph>=0.1.0
langchain-openai>=0.2.0
questionary>=1.10.0 questionary>=1.10.0
rich>=13.0.0 rich>=13.0.0
openai>=1.0.0 # если используете OpenAI
``` ```
--- ---
@@ -63,47 +56,55 @@ openai>=1.0.0 # если используете OpenAI
## ▶️ Запуск ## ▶️ Запуск
```bash ```bash
# Установите переменную окружения с ключом 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
``` ```
После запуска вы увидите интерактивный диалог в терминале. Выбирайте варианты, и история будет развиваться. После запуска вы увидите:
1. Сгенерированное вступление и варианты действий.
2. Вопрос с выбором через `questionary`.
3. Короткая концовка, основанная на вашем выборе.
--- ---
## 📋 Пример работы ## 🎮 Пример
```text ```text
> Начало истории: > python solution.py
Вы просыпаетесь в таинственном лесу. Вокруг слышен шорох ветра. Welcome to the LLM Adventure!
Варианты действий:
1) Исследовать ближайший домик
2) Пойти к озеру
3) Остановиться и послушать тишину
Выберите номер: 2 You find yourself in a dimly lit cavern. A faint glow emanates from a stone altar.
What do you do?
> Вы выбрали: "Пойти к озеру" 1️⃣ Inspect the altar
LLM продолжает историю... 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** управляет состоянием игры.
- Сохраните состояние в файл, чтобы игрок мог возобновить игру позже (`langgraph.checkpoint.file`). - `interrupt` заставляет граф остановиться и передать управление пользователю.
- Интегрируйте голосовой ввод/вывод для более «живого» опыта. - После выбора пользовательского действия состояние обновляется и LLM продолжает генерацию.
---
## 🤝 Вклад
Если хотите улучшить игру (добавить больше веток, использовать другие модели, добавить сохранение прогресса), создайте pull request. Убедитесь, что тесты проходят (`pytest`).
--- ---
## 📄 Лицензия ## 📄 Лицензия
MIT © 2026 MIT © 2026
---