45 lines
1.4 KiB
Markdown
45 lines
1.4 KiB
Markdown
# LangGraph Reflection Agent
|
||
|
||
Небольшой CLI-агент на `LangGraph`, который:
|
||
|
||
1. пишет первичный ответ на вопрос;
|
||
2. отдельным узлом `reflect` критикует его по полноте, конкретике и отсутствию воды;
|
||
3. при `needs_revision` запускает `rewrite`;
|
||
4. завершает работу после `ok` или по достижении `max_rounds`.
|
||
|
||
## Установка
|
||
|
||
```bash
|
||
pip install -r requirements.txt
|
||
```
|
||
|
||
Для запуска нужен OpenAI-совместимый API:
|
||
|
||
```bash
|
||
export OPENAI_API_KEY=...
|
||
export OPENAI_BASE_URL=...
|
||
export OPENAI_MODEL=...
|
||
```
|
||
|
||
## Запуск
|
||
|
||
Запуск с вопросом из задания:
|
||
|
||
```bash
|
||
python main.py "Объясни студенту разницу между tool и resource в MCP"
|
||
```
|
||
|
||
Запуск без аргументов использует тот же вопрос по умолчанию:
|
||
|
||
```bash
|
||
python main.py
|
||
```
|
||
|
||
## Что реализовано
|
||
|
||
- `ReflectState(TypedDict)` с полями `question`, `draft`, `critique`, `verdict`, `round`, `max_rounds`
|
||
- узлы `draft_answer`, `reflect`, `rewrite`
|
||
- цикл `rewrite -> reflect` при `needs_revision`
|
||
- ограничение числа доработок через `max_rounds`
|
||
- CLI-демо с финальным ответом, вердиктом критика и количеством раундов
|