commit f8457690fc66dfaef648cea486276a2c636abae2 Author: balabanovan530 <175+balabanovan530@noreply.localhost> Date: Thu Jun 4 16:16:27 2026 +0000 Add README.md diff --git a/README.md b/README.md new file mode 100644 index 0000000..39fc53a --- /dev/null +++ b/README.md @@ -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.