Delete directory 'solutions/69b1a07c67bbf488a1177da4_текстовая_игра_на_основе_llm___interrupt'
This commit is contained in:
-138
@@ -1,138 +0,0 @@
|
||||
# Interactive Story Game with LLM and Interrupts
|
||||
|
||||
A lightweight “choose‑your‑own‑adventure” text game that uses a large language model (LLM) to generate story snippets, pauses for user input, then continues the narrative based on the chosen option. The project demonstrates how to build a LangGraph pipeline with human‑in‑the‑loop interruptions and checkpoints.
|
||||
|
||||
---
|
||||
|
||||
## 📖 Overview
|
||||
|
||||
1. **LLM generates an opening scene** – a short paragraph describing the setting and presenting several possible actions.
|
||||
2. **Interrupt** – the graph pauses, displaying the options in the console via `questionary`.
|
||||
3. **User selects an option** – the choice is stored in the graph state.
|
||||
4. **LLM writes a brief ending** that follows the chosen path.
|
||||
|
||||
The result is a chain of prompts:
|
||||
`LLM → pause & user input → LLM (ending)`.
|
||||
|
||||
---
|
||||
|
||||
## 🚀 Getting Started
|
||||
|
||||
### Prerequisites
|
||||
|
||||
- Python 3.10+
|
||||
- An OpenAI API key (or any other model supported by LangChain)
|
||||
|
||||
> **Tip:** If you prefer not to use OpenAI, replace the `OpenAI` wrapper with another LangChain LLM provider in `main.py`.
|
||||
|
||||
### Installation
|
||||
|
||||
```bash
|
||||
# Clone the repo
|
||||
git clone https://github.com/your-username/interactive-story-game.git
|
||||
cd interactive-story-game
|
||||
|
||||
# Create a virtual environment (optional but recommended)
|
||||
python -m venv .venv
|
||||
source .venv/bin/activate # On Windows: .\.venv\Scripts\activate
|
||||
|
||||
# Install dependencies
|
||||
pip install langgraph==0.1.2 \
|
||||
langchain==1.2.10 \
|
||||
langchain-openai==1.1.9 \
|
||||
questionary
|
||||
```
|
||||
|
||||
> **Environment variable**
|
||||
> Set your OpenAI key before running the game:
|
||||
> ```bash
|
||||
> export OPENAI_API_KEY="sk-..."
|
||||
> # Windows PowerShell
|
||||
> $env:OPENAI_API_KEY = "sk-..."
|
||||
> ```
|
||||
|
||||
---
|
||||
|
||||
## 📁 Project Structure
|
||||
|
||||
| File | Purpose |
|
||||
|------|---------|
|
||||
| `main.py` | Entry point – builds the graph, runs it, and handles user interaction. |
|
||||
| `graph.py` | Defines the LangGraph nodes, state schema, and interrupt logic. |
|
||||
| `utils.py` | Helper functions (e.g., prompt templates). |
|
||||
| `requirements.txt` | List of dependencies (for reproducibility). |
|
||||
|
||||
---
|
||||
|
||||
## 🛠️ Running the Game
|
||||
|
||||
```bash
|
||||
python main.py
|
||||
```
|
||||
|
||||
You will see something like:
|
||||
|
||||
```
|
||||
=== Interactive Story ===
|
||||
Topic: A mysterious forest
|
||||
|
||||
Scene:
|
||||
You find yourself at the edge of a dark, misty forest. The trees loom overhead, their branches tangled like fingers.
|
||||
|
||||
Options:
|
||||
1) Step into the forest.
|
||||
2) Walk along the clearing's edge.
|
||||
3) Call out for help.
|
||||
|
||||
Enter your choice (1‑3):
|
||||
```
|
||||
|
||||
After you type `1`, the game will ask the LLM to finish the story based on that choice and print a short ending.
|
||||
|
||||
---
|
||||
|
||||
## 🔧 Customization
|
||||
|
||||
### Changing the Prompt
|
||||
|
||||
Edit `utils.py`:
|
||||
|
||||
```python
|
||||
def generate_scene_prompt(topic: str) -> str:
|
||||
return f"Topic: {topic}\nWrite a short opening scene with 3 possible actions."
|
||||
```
|
||||
|
||||
### Adding More Nodes
|
||||
|
||||
You can split the graph into separate nodes for “generate scene” and “write ending”, or add additional decision points.
|
||||
|
||||
---
|
||||
|
||||
## 🎮 Example Session
|
||||
|
||||
```text
|
||||
$ python main.py
|
||||
=== Interactive Story ===
|
||||
Topic: A forgotten laboratory
|
||||
|
||||
Scene:
|
||||
The lab is dimly lit, with humming machines and a faint smell of ozone. In the center lies an ancient console flickering with static.
|
||||
|
||||
Options:
|
||||
1) Approach the console.
|
||||
2) Inspect the surrounding equipment.
|
||||
3) Leave the lab immediately.
|
||||
|
||||
Enter your choice (1‑3): 2
|
||||
|
||||
Ending:
|
||||
You carefully examine the equipment, discovering a hidden panel that opens to reveal a secret passage. The adventure continues...
|
||||
```
|
||||
|
||||
---
|
||||
|
||||
## 📜 License
|
||||
|
||||
This project is released under the MIT License – feel free to adapt and expand it for your own experiments with LLMs and human‑in‑the‑loop systems.
|
||||
|
||||
---
|
||||
Reference in New Issue
Block a user