diff --git a/README.md b/README.md index da12047..99bc6f1 100644 --- a/README.md +++ b/README.md @@ -1,110 +1,95 @@ -# Text Adventure with LLM and Interrupts -*A minimal “choose‑your‑own‑story” game powered by LangGraph, LangChain & OpenAI* +# Мини‑игра «Выбери свою историю» ---- +## Описание -## 📖 Описание +Проект реализует интерактивную текстовую игру на основе больших языковых моделей (LLM). +Сценарий игры строится следующим образом: -`solution.py` реализует простую интерактивную историю, где: +1. **LLM** генерирует начальную завязку и несколько вариантов действий для главного героя. +2. С помощью **LangGraph** выполнение модели ставится в состояние *прерывания* – пользователь получает список вариантов через консольный интерфейс. +3. Пользователь выбирает один из вариантов при помощи `questionary`. +4. После выбора LLM дописывает короткую концовку, учитывая выбранный путь. -1. **LLM** генерирует начальный сюжет и несколько вариантов действий. -2. Граф приостанавливает выполнение (interrupt) и выводит варианты пользователю через `questionary`. -3. После выбора пользовательского действия LLM дописывает короткую концовку. +Таким образом игрок участвует в создании истории в реальном времени, а модель реагирует на его решения. -Таким образом игрок видит цепочку: -`LLM → пауза → выбор → LLM`. +## Предварительные требования ---- +| Пакет | Версия | +|-------|--------| +| Python | 3.10+ | +| pip | любой актуальный | -## ⚙️ Предварительные требования - -| Технология | Версия | -|------------|--------| -| Python | ≥ 3.10 | -| pip | – | - -**API‑ключ OpenAI** должен быть доступен в переменной окружения `OPENAI_API_KEY` (или вы можете задать его вручную в коде). - ---- - -## 📦 Установка +Для работы с OpenAI API понадобится ключ `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-..." +``` -# Запустите игру +## Установка + +1. Клонируйте репозиторий (или скачайте файлы): + + ```bash + git clone https://github.com/yourname/text-adventure.git + cd text-adventure + ``` + +2. Создайте и активируйте виртуальное окружение: + + ```bash + python -m venv .venv + source .venv/bin/activate # Linux/macOS + .\.venv\Scripts\activate # Windows + ``` + +3. Установите зависимости из `requirements.txt` (или вручную): + + ```bash + pip install -r requirements.txt + ``` + + Если файла нет, установите пакеты по отдельности: + + ```bash + pip install langgraph langchain langchain-openai questionary rich + ``` + +## Запуск + +После установки и настройки переменной окружения просто запустите скрипт: + +```bash python solution.py ``` -После запуска вы увидите: +Вы увидите в консоли начальную историю, список вариантов действий и сможете выбрать один из них. После выбора LLM сгенерирует короткую концовку. -1. Сгенерированное вступление и варианты действий. -2. Вопрос с выбором через `questionary`. -3. Короткая концовка, основанная на вашем выборе. +## Пример работы ---- +``` +> Запуск игры... -## 🎮 Пример +Начальная сцена: + Вы просыпаетесь в темном лесу. Вокруг слышен шорох ветвей. + Что вы будете делать? -```text -> python solution.py -Welcome to the LLM Adventure! +1) Пойти к свету +2) Остановиться и послушать шумы +3) Спрятаться за деревом -You find yourself in a dimly lit cavern. A faint glow emanates from a stone altar. -What do you do? +Выберите номер варианта: 1 -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 продолжает генерацию. +> **Важно** +> Если при запуске возникнет ошибка `openai.error.AuthenticationError`, проверьте корректность переменной `OPENAI_API_KEY`. --- -## 🤝 Вклад - -Если хотите улучшить игру (добавить больше веток, использовать другие модели, добавить сохранение прогресса), создайте pull request. Убедитесь, что тесты проходят (`pytest`). - ---- - -## 📄 Лицензия - -MIT © 2026 \ No newline at end of file +*Автор: [Ваше имя]* +*Дата: 2026‑05‑28* \ No newline at end of file