From 830472cc023f8ab791588500b99c4b72a1c5c997 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Thu, 28 May 2026 12:42:15 +0000 Subject: [PATCH] =?UTF-8?q?=D0=94=D0=BE=D0=B1=D0=B0=D0=B2=D0=BB=D0=B5?= =?UTF-8?q?=D0=BD=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 106 ++++++++++++++++++++++++++---------------------------- 1 file changed, 51 insertions(+), 55 deletions(-) diff --git a/README.md b/README.md index f607263..d750446 100644 --- a/README.md +++ b/README.md @@ -1,56 +1,61 @@ -# Мини‑игра «Выбери свою историю» -## (Interactive Storytelling with LLM + Interrupt) +# Interactive Text Adventure with LLM & Interrupts +**Solution:** `solution.py` --- ## 📖 Описание -`solution.py` реализует простую текстовую игру в стиле *«выбери свою историю»*. -Процесс игры выглядит так: +`solution.py` реализует мини‑игру «Выбери свою историю» на основе больших языковых моделей (LLM). -1. **LLM** генерирует начальную сцену и несколько вариантов действий героя. -2. С помощью `langgraph` выполнение «приостанавливается» (interrupt). -3. Пользователь выбирает один из предложенных вариантов через консольный интерфейс (`questionary`). -4. После выбора LLM дописывает короткую концовку, учитывая выбранное действие. +1. **Генерация начала** – LLM создаёт завязку и несколько вариантов действий. +2. **Пауза (interrupt)** – граф LangGraph ставит паузу, ожидая выбора игрока. +3. **Выбор пользователя** – через консольный интерфейс `questionary` пользователь выбирает вариант. +4. **Продолжение истории** – после выбора LLM дописывает дальнейший сюжет. -Таким образом игрок управляет сюжетом в реальном времени, а модель отвечает на его выборы. +Граф построен с помощью `langgraph`, а состояние сохраняется в памяти (`InMemorySaver`). Для вывода текста используется `rich`. --- ## ⚙️ Предварительные требования -| Компонент | Версия | -|-----------|--------| -| Python | 3.10+ | -| pip | - | +| Пакет | Версия | +|-------|--------| +| Python | 3.10+ | +| langchain | ≥0.2.0 | +| langgraph | ≥0.1.0 | +| questionary | ≥1.10.0 | +| rich | ≥13.0.0 | +| openai (или любая LLM‑провайдер) | – | -> **Важно**: Для работы с LLM требуется ключ OpenAI API. -> Установите переменную окружения `OPENAI_API_KEY` перед запуском. +> **Важно**: +> - Для работы с OpenAI понадобится переменная окружения `OPENAI_API_KEY`. +> - Если используете другую модель, замените импорт `ChatOpenAI` на соответствующий провайдер. --- -## 📦 Установка +## 🚀 Установка ```bash -# Клонируйте репозиторий (или скачайте файлы) -git clone https://github.com/yourname/text-adventure-llm.git -cd text-adventure-llm +# 1. Клонируйте репозиторий (или скопируйте файл solution.py) +git clone https://github.com/yourusername/interactive-adventure.git +cd interactive-adventure -# Создайте виртуальное окружение (рекомендуется) +# 2. Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .\.venv\Scripts\activate -# Установите зависимости +# 3. Установите зависимости pip install -r requirements.txt ``` -`requirements.txt` содержит: +`requirements.txt`: ```text -langgraph>=0.1.0 langchain>=0.2.0 +langgraph>=0.1.0 questionary>=1.10.0 -openai>=1.0.0 +rich>=13.0.0 +openai>=1.0.0 # если используете OpenAI ``` --- @@ -58,56 +63,47 @@ openai>=1.0.0 ## ▶️ Запуск ```bash -# Установите ключ OpenAI (пример) +# Установите переменную окружения с ключом API (пример для Linux/macOS) export OPENAI_API_KEY="sk-..." -# Запустите игру +# Для Windows: +set OPENAI_API_KEY=sk-... + python solution.py ``` -После запуска вы увидите: - -``` -LLM: "Ты стоишь на перекрестке в древнем городе. Что ты сделаешь?" -1) Пойти к рынку -2) Исследовать подземелье -3) Вернуться домой - -Выберите действие (1/2/3): -``` - -Введите номер, и модель продолжит историю. +После запуска вы увидите интерактивный диалог в терминале. Выбирайте варианты, и история будет развиваться. --- -## 🎮 Пример игры +## 📋 Пример работы -``` -LLM: "Ты стоишь на перекрестке в древнем городе. Что ты сделаешь?" -1) Пойти к рынку -2) Исследовать подземелье -3) Вернуться домой +```text +> Начало истории: +Вы просыпаетесь в таинственном лесу. Вокруг слышен шорох ветра. +Варианты действий: + 1) Исследовать ближайший домик + 2) Пойти к озеру + 3) Остановиться и послушать тишину -Выберите действие (1/2/3): 2 +Выберите номер: 2 -LLM: "Твое решение исследовать подземелье заставило тебя спуститься по узкой лестнице, ведущей в мрачные глубины. Внутри ты обнаружил..." +> Вы выбрали: "Пойти к озеру" +LLM продолжает историю... ``` --- -## 📚 Как это работает +## 📚 Что дальше? -- **LangGraph** управляет состоянием и прерываниями. -- **ChatOpenAI** (из `langchain`) отвечает за генерацию текста. -- **questionary** обеспечивает интерактивный выбор в консоли. - -Вы можете расширить игру, добавив больше веток, логики выбора или даже графический интерфейс. +- Добавьте более сложные ветки и условия. +- Сохраните состояние в файл, чтобы игрок мог возобновить игру позже (`langgraph.checkpoint.file`). +- Интегрируйте голосовой ввод/вывод для более «живого» опыта. --- -## 🤝 Вклад +## 📄 Лицензия -Если хотите улучшить проект – создайте *pull request*! -Пожалуйста, придерживайтесь стиля кода и добавляйте тесты при необходимости. +MIT © 2026 --- \ No newline at end of file