65 lines
1.5 KiB
Markdown
65 lines
1.5 KiB
Markdown
# LangGraph Reflection Demo
|
||
|
||
This project demonstrates a simple LangGraph agent that:
|
||
1. Generates a short answer (5–10 sentences) to a user‑supplied question.
|
||
2. Critiques the answer for completeness, concreteness, and fluff.
|
||
3. If the critique indicates `needs_revision`, rewrites the answer up to a maximum number of rounds.
|
||
|
||
## Features
|
||
|
||
- **Separate nodes** for drafting, reflecting, and rewriting.
|
||
- **LLM‑based critic** that returns a verdict (`ok` or `needs_revision`) and 2–3 critique points.
|
||
- **Controlled loop**: rewrites only if the verdict is `needs_revision` and the round count is below `max_rounds`.
|
||
- **CLI interface**: pass a question via `-q` or input interactively.
|
||
- **Configurable maximum rounds** via `-m` (default 2).
|
||
|
||
## Requirements
|
||
|
||
- Python 3.10+
|
||
- `langgraph`
|
||
- `langchain-openai`
|
||
|
||
Install dependencies:
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
## Usage
|
||
|
||
1. **Set your OpenAI API key**:
|
||
|
||
```bash
|
||
export OPENAI_API_KEY="your_api_key_here"
|
||
```
|
||
|
||
2. **Run the demo**:
|
||
|
||
```bash
|
||
python src/main.py -q "Explain the difference between a tool and a resource in MCP."
|
||
```
|
||
|
||
Or simply:
|
||
|
||
```bash
|
||
python src/main.py
|
||
```
|
||
|
||
and enter the question when prompted.
|
||
|
||
The script will output the final answer, the number of rounds performed, the verdict, and the critique points.
|
||
|
||
## Project Structure
|
||
|
||
```
|
||
src/
|
||
├── main.py # CLI entry point
|
||
├── graph.py # LangGraph definition
|
||
└── nodes.py # Node implementations
|
||
requirements.txt
|
||
README.md
|
||
```
|
||
|
||
## License
|
||
|
||
MIT License |