diff --git a/README.md b/README.md index c2c571c..00bf9d2 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,101 @@ -# task-69b1a07c-tekstovaya-igra-na-osnove +# Мини‑игра «Выбери свою историю» +## 📖 Описание +Это интерактивная текстовая игра, в которой **LLM** генерирует сюжет, а пользователь в реальном времени делает выбор. +Граф построен на **LangGraph** и использует паттерн *human‑in‑the‑loop*: после генерации сцены LLM «приостанавливается», пользователь выбирает вариант, а затем LLM дописывает короткую концовку. -Решения домашних заданий \ No newline at end of file +## 🚀 Установка + +```bash +# Клонируйте репозиторий +git clone https://github.com/yourname/interactive-story.git +cd interactive-story + +# Создайте виртуальное окружение (необязательно, но рекомендуется) +python -m venv venv +source venv/bin/activate # Windows: venv\Scripts\activate + +# Установите зависимости +pip install langgraph==0.0.38 \ + langchain==1.2.10 \ + langchain-openai==1.1.9 \ + questionary +``` + +> **Важно**: +> - Для работы с OpenAI нужен ключ `OPENAI_API_KEY`. +> - Если вы хотите использовать другую модель, настройте `ChatOpenAI` в `solution.py`. + +## 📂 Структура проекта +``` +interactive-story/ +├── solution.py # Основной скрипт с логикой графа +└── README.md +``` + +## 🏃‍♂️ Запуск + +```bash +python solution.py +``` + +### Что происходит при запуске + +1. **Инициализация** – создаётся граф, LLM и чекпоинтер. +2. **Генерация темы** – LLM создаёт тему/завязку. +3. **Сцена** – LLM генерирует описание текущей сцены. +4. **Опции** – LLM выдаёт 3‑4 варианта действий. +5. **Пауза** – пользователь выбирает вариант через консоль. +6. **Концовка** – LLM дописывает короткую концовку, учитывая выбор. +7. **Вывод** – финальный текст выводится в консоль. + +## 📌 Пример использования + +```text +$ python solution.py +LLM: Выберите тему истории: +1) Приключение в космосе +2) Тайна древнего замка +3) Путешествие во времени + +Выберите вариант (1‑3): 2 + +LLM: Вы выбрали «Тайна древнего замка». +Сцена: Вы стоите перед массивным замком, его стены покрыты мхом... + +LLM: Что вы будете делать? +1) Подойти к воротам +2) Осмотреть окрестности +3) Выйти обратно + +Выберите вариант (1‑3): 1 + +LLM: Вы подошли к воротам. Они открылись, и внутри... + +Концовка: Вы нашли сокровище и спасли королевство. Поздравляем! +``` + +## 🔧 Как изменить модель + +В `solution.py` найдите строку: + +```python +llm = ChatOpenAI(model="gpt-4o-mini", temperature=0.7) +``` + +Замените `model` на нужный вам, например `"gpt-3.5-turbo"` или `"gpt-4o"`. +Если используете другую поставку, настройте `ChatOpenAI` согласно документации LangChain. + +## 📚 Что дальше + +- Добавьте более сложные состояния (например, инвентарь, здоровье героя). +- Переведите игру в веб‑интерфейс с помощью Streamlit. +- Расширьте количество вариантов и уровней сложности. + +## 🤝 Вклад + +Пожалуйста, открывайте Issues и Pull Requests. Любые улучшения приветствуются! + +--- + +**Автор:** *Ваше имя* +**Дата:** *2026‑05‑29* \ No newline at end of file