57 lines
1.5 KiB
Markdown
57 lines
1.5 KiB
Markdown
# LangGraph Code Review Reflection Agent
|
|
|
|
Этот проект реализует `LangGraph`-агента, который:
|
|
|
|
1. берёт Python-функцию;
|
|
2. пишет первичный code review;
|
|
3. отдельным узлом-критиком оценивает review по 4 критериям:
|
|
- `pep8`
|
|
- `type_hints`
|
|
- `edge_cases`
|
|
- `naming`
|
|
4. если verdict равен `needs_revision`, запускает `rewrite` и усиливает самое слабое место;
|
|
5. завершает работу после `ok` или по достижении `max_rounds`.
|
|
|
|
## Стек
|
|
|
|
- Python 3.10+
|
|
- `langgraph`
|
|
- `langchain-openai`
|
|
- `python-dotenv`
|
|
|
|
## Установка
|
|
|
|
```bash
|
|
pip install -r requirements.txt
|
|
```
|
|
|
|
Заполните `.env`:
|
|
|
|
```bash
|
|
OPENAI_API_KEY=...
|
|
OPENAI_BASE_URL=...
|
|
OPENAI_MODEL=...
|
|
```
|
|
|
|
## Запуск
|
|
|
|
```bash
|
|
python main.py
|
|
```
|
|
|
|
## Что видно в демо
|
|
|
|
- исходный код функции `sort_numbers`
|
|
- первичный `draft_review`
|
|
- баллы критика по 4 критериям
|
|
- `weakest_criterion`
|
|
- при необходимости переписанный review
|
|
- финальный результат и число использованных раундов
|
|
|
|
## Соответствие заданию
|
|
|
|
- `CodeReviewState` содержит все требуемые поля
|
|
- `reflect` использует structured output
|
|
- `rewrite` дорабатывает review по `weakest_criterion`
|
|
- цикл `rewrite -> reflect` ограничен через `max_rounds`
|