Add README.md
This commit is contained in:
@@ -0,0 +1,67 @@
|
|||||||
|
# LangGraph Draft‑Critique‑Rewrite Agent
|
||||||
|
|
||||||
|
## Overview
|
||||||
|
This project implements a small LangGraph agent that:
|
||||||
|
|
||||||
|
1. Generates a short answer (5‑10 sentences) to a user question.
|
||||||
|
2. Critiques the draft for completeness, concreteness and absence of filler.
|
||||||
|
3. If the critique says *needs_revision*, rewrites the draft incorporating the critique.
|
||||||
|
4. Loops until the verdict is *ok* or a maximum of two rewrites is reached.
|
||||||
|
5. Provides a simple CLI entry point.
|
||||||
|
|
||||||
|
The implementation is fully self‑contained and requires only a modern Python interpreter (3.10+).
|
||||||
|
|
||||||
|
## Installation
|
||||||
|
|
||||||
|
```bash
|
||||||
|
# Create and activate a virtual environment (optional but recommended)
|
||||||
|
python -m venv .venv
|
||||||
|
source .venv/bin/activate # On Windows: .venv\Scripts\activate
|
||||||
|
|
||||||
|
# Install dependencies
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
**Dependencies**
|
||||||
|
- `langgraph`
|
||||||
|
- `langchain-openai`
|
||||||
|
- `langchain-ollama`
|
||||||
|
|
||||||
|
## Configuration
|
||||||
|
The agent uses an LLM via the `langchain_openai.ChatOpenAI` wrapper. It supports both OpenAI and Ollama providers.
|
||||||
|
|
||||||
|
| Variable | Description | Example |
|
||||||
|
|----------|-------------|---------|
|
||||||
|
| `OPENAI_API_KEY` | API key for OpenAI. | `export OPENAI_API_KEY=sk-…` |
|
||||||
|
| `OLLAMA_BASE_URL` | Base URL for a local Ollama instance. | `export OLLAMA_BASE_URL=http://localhost:11434/v1` |
|
||||||
|
|
||||||
|
If neither variable is set the agent falls back to the default model `gpt-4o-mini` (this will require network access to OpenAI).
|
||||||
|
|
||||||
|
## Usage
|
||||||
|
Run the CLI entry point:
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python agent.py
|
||||||
|
```
|
||||||
|
|
||||||
|
You will be prompted to type a question. The agent will then display the final draft, the critique, and the verdict.
|
||||||
|
|
||||||
|
### Example
|
||||||
|
```
|
||||||
|
$ python agent.py
|
||||||
|
Enter your question: What is the capital of France?
|
||||||
|
|
||||||
|
Final Result:
|
||||||
|
Draft: The capital of France is Paris.
|
||||||
|
Critique: ok
|
||||||
|
Verdict: ok
|
||||||
|
```
|
||||||
|
|
||||||
|
## Development Notes
|
||||||
|
- The graph uses `END` from `langgraph` for terminal states.
|
||||||
|
- The `reflect` node parses a JSON response, falling back to a default verdict if parsing fails.
|
||||||
|
- The `rewrite` node increments the round counter.
|
||||||
|
- All LLM calls are wrapped in `try/except` blocks to surface errors clearly.
|
||||||
|
|
||||||
|
## License
|
||||||
|
MIT License.
|
||||||
Reference in New Issue
Block a user