add README.md
This commit is contained in:
@@ -1,2 +1,62 @@
|
|||||||
# task-6a219d2dfd30e81cf3146bae
|
# LangGraph с узлом рефлексии
|
||||||
|
|
||||||
|
LangGraph‑агент, который пишет ответ на вопрос, затем отдельным LLM‑критиком оценивает качество (полнота, конкретика, отсутствие воды). При вердикте `needs_revision` узел rewrite улучшает текст (до `max_rounds` раз).
|
||||||
|
|
||||||
|
## Стек
|
||||||
|
|
||||||
|
| Компонент | Технология |
|
||||||
|
|-----------|------------|
|
||||||
|
| LLM | BroJS gpt-oss-20b |
|
||||||
|
| Граф | LangGraph StateGraph |
|
||||||
|
| Состояние | ReflectState (TypedDict) |
|
||||||
|
|
||||||
|
## Установка
|
||||||
|
|
||||||
|
```bash
|
||||||
|
pip install -r requirements.txt
|
||||||
|
```
|
||||||
|
|
||||||
|
Добавь в `.env`:
|
||||||
|
```
|
||||||
|
JOURNAL_MCP_PAT=твой_токен
|
||||||
|
```
|
||||||
|
|
||||||
|
## Запуск
|
||||||
|
|
||||||
|
```bash
|
||||||
|
python main.py
|
||||||
|
```
|
||||||
|
|
||||||
|
## Структура проекта
|
||||||
|
|
||||||
|
| Файл | Назначение |
|
||||||
|
|------|------------|
|
||||||
|
| `graph.py` | Узлы draft_answer, reflect, rewrite и сборка графа |
|
||||||
|
| `main.py` | Точка входа, три демо‑примера |
|
||||||
|
| `requirements.txt` | Зависимости |
|
||||||
|
|
||||||
|
## Архитектура графа
|
||||||
|
|
||||||
|
```
|
||||||
|
START -> draft_answer -> reflect
|
||||||
|
|
|
||||||
|
ok ----------+-------> END
|
||||||
|
needs_revision & round < max_rounds -> rewrite -> reflect
|
||||||
|
needs_revision & round >= max_rounds -> END
|
||||||
|
```
|
||||||
|
|
||||||
|
### Узлы
|
||||||
|
- **draft_answer** — первичный ответ на вопрос (5‑10 предложений)
|
||||||
|
- **reflect** — LLM‑критик: вердикт `ok` / `needs_revision` + замечания в `critique`
|
||||||
|
- **rewrite** — учитывает замечания, обновляет `draft`, увеличивает `round`
|
||||||
|
|
||||||
|
### Состояние ReflectState
|
||||||
|
```python
|
||||||
|
class ReflectState(TypedDict):
|
||||||
|
question: str # исходный вопрос
|
||||||
|
draft: str # текущий вариант ответа
|
||||||
|
critique: str # замечания критика
|
||||||
|
verdict: str # ok | needs_revision
|
||||||
|
round: int # текущий раунд (0 = первый черновик)
|
||||||
|
max_rounds: int # максимум раундов доработки
|
||||||
|
```
|
||||||
|
|||||||
Reference in New Issue
Block a user