Rebuild the task as a single LangGraph code-review reflection graph with structured scores, targeted rewrite, max_rounds guard, and CLI demo.: update README.md
This commit is contained in:
@@ -1,29 +1,56 @@
|
|||||||
# README.md
|
# LangGraph Code Review Reflection Agent
|
||||||
# LangGraph Code Review Agent
|
|
||||||
|
|
||||||
This repository implements a **LangGraph** agent that takes a Python function as input and produces a code review. The review is evaluated by a critic node that scores it on four criteria:
|
Этот проект реализует `LangGraph`-агента, который:
|
||||||
|
|
||||||
1. **PEP8 compliance**
|
1. берёт Python-функцию;
|
||||||
2. **Type hints**
|
2. пишет первичный code review;
|
||||||
3. **Edge case handling**
|
3. отдельным узлом-критиком оценивает review по 4 критериям:
|
||||||
4. **Naming conventions**
|
- `pep8`
|
||||||
|
- `type_hints`
|
||||||
|
- `edge_cases`
|
||||||
|
- `naming`
|
||||||
|
4. если verdict равен `needs_revision`, запускает `rewrite` и усиливает самое слабое место;
|
||||||
|
5. завершает работу после `ok` или по достижении `max_rounds`.
|
||||||
|
|
||||||
If the critic returns **`needs_revision`** the rewrite node improves the weakest part of the review. The process repeats up to ``max_rounds`` times.
|
## Стек
|
||||||
|
|
||||||
The implementation uses only the technologies specified in the assignment: ``langgraph`` and ``langchain-ollama`` (or ``langchain-openai`` if you prefer). No vector database is used.
|
- Python 3.10+
|
||||||
|
- `langgraph`
|
||||||
|
- `langchain-openai`
|
||||||
|
- `python-dotenv`
|
||||||
|
|
||||||
## Installation
|
## Установка
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
pip install -r requirements.txt
|
pip install -r requirements.txt
|
||||||
```
|
```
|
||||||
|
|
||||||
## Demo
|
Заполните `.env`:
|
||||||
|
|
||||||
Run the demo with:
|
```bash
|
||||||
|
OPENAI_API_KEY=...
|
||||||
|
OPENAI_BASE_URL=...
|
||||||
|
OPENAI_MODEL=...
|
||||||
|
```
|
||||||
|
|
||||||
|
## Запуск
|
||||||
|
|
||||||
```bash
|
```bash
|
||||||
python main.py
|
python main.py
|
||||||
```
|
```
|
||||||
|
|
||||||
It will review the example function ``sort_numbers`` and print the draft review, scores, and verdict.
|
## Что видно в демо
|
||||||
|
|
||||||
|
- исходный код функции `sort_numbers`
|
||||||
|
- первичный `draft_review`
|
||||||
|
- баллы критика по 4 критериям
|
||||||
|
- `weakest_criterion`
|
||||||
|
- при необходимости переписанный review
|
||||||
|
- финальный результат и число использованных раундов
|
||||||
|
|
||||||
|
## Соответствие заданию
|
||||||
|
|
||||||
|
- `CodeReviewState` содержит все требуемые поля
|
||||||
|
- `reflect` использует structured output
|
||||||
|
- `rewrite` дорабатывает review по `weakest_criterion`
|
||||||
|
- цикл `rewrite -> reflect` ограничен через `max_rounds`
|
||||||
|
|||||||
Reference in New Issue
Block a user