diff --git a/README.md b/README.md index d347ed6..6399e05 100644 --- a/README.md +++ b/README.md @@ -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 # максимум раундов доработки +```