diff --git a/solutions/69b1a07c67bbf488a1177da4_текстовая_игра_на_основе_llm___interrupt/README.md b/solutions/69b1a07c67bbf488a1177da4_текстовая_игра_на_основе_llm___interrupt/README.md new file mode 100644 index 0000000..5015955 --- /dev/null +++ b/solutions/69b1a07c67bbf488a1177da4_текстовая_игра_на_основе_llm___interrupt/README.md @@ -0,0 +1,108 @@ +# Interactive Text Adventure with LLM and Interrupts + +A minimal “Choose Your Own Story” game built on **LangGraph** that lets a large language model generate the narrative, pause for user input, and then continue based on the choice. + +--- + +## 📖 Overview + +- The graph starts by asking an LLM to write the opening of a story and propose several actions. +- It then *interrupts* the flow, presenting those options in the console via **questionary**. +- After the player selects an option, the graph resumes and asks the LLM to finish the scene with that choice. + +This demonstrates: +- State management with `TypedDict` +- Custom interrupt nodes (`langgraph.types.interrupt`) +- Human‑in‑the‑loop pattern +- Checkpointing (in‑memory in this example) + +--- + +## ⚙️ Installation + +```bash +# Create a virtual environment (optional but recommended) +python -m venv .venv +source .venv/bin/activate # Windows: .venv\Scripts\activate + +# Install dependencies +pip install langgraph==0.1.9 \ + langchain==1.2.10 \ + langchain-openai==1.1.9 \ + questionary +``` + +> **OpenAI API key** +> The script uses `ChatOpenAI` from LangChain, which requires an OpenAI key. Export it as an environment variable: + +```bash +export OPENAI_API_KEY="sk-..." +# Windows: set OPENAI_API_KEY=sk-... +``` + +--- + +## 📂 Project Structure + +``` +. +├── solution.py # Main script – the graph definition and runner +└── README.md # You’re reading it now +``` + +--- + +## 🚀 Running the Game + +```bash +python solution.py +``` + +You’ll see something like: + +``` +LLM: "You find yourself in a dimly lit tavern..." +Options: + 1) Order a drink + 2) Ask about the town's rumors + 3) Leave immediately +Enter choice (1-3): +``` + +Type `1`, `2` or `3` and press **Enter**. The LLM will then generate a short continuation based on your selection. + +--- + +## 📋 Example Session + +```text +$ python solution.py +LLM: "You stand at the crossroads of destiny, with three paths before you..." +Options: + 1) Take the left path into the forest. + 2) Walk straight toward the looming castle. + 3) Turn back to the village. +Enter choice (1-3): 2 + +LLM: "You stride confidently toward the castle gates, feeling the weight of history upon your shoulders..." +``` + +Feel free to modify `solution.py` to add more nodes, change prompts, or persist checkpoints with a different saver. + +--- + +## 🔧 Customization Tips + +| What | How | +|------|-----| +| **Different LLM** | Replace `ChatOpenAI()` with another LangChain model (e.g., Anthropic). | +| **Persisting state** | Swap `InMemorySaver` for `SQLiteSaver`, `RedisSaver`, etc. | +| **More complex choices** | Add additional interrupt nodes or loop back to earlier parts of the story. | + +--- + +## 📜 License + +This project is provided as a learning example and may be freely used, modified, and distributed. + +--- \ No newline at end of file