From 5af49789962b3ba6a3c529263ceeb963b9f30990 Mon Sep 17 00:00:00 2001 From: lonpatovaadelina Date: Tue, 2 Jun 2026 16:16:54 +0000 Subject: [PATCH] =?UTF-8?q?=D0=9F=D0=BE=D0=B2=D1=82=D0=BE=D1=80=D0=BD?= =?UTF-8?q?=D1=8B=D0=B9=20=D1=8D=D0=BA=D0=B7=D0=B0=D0=BC=D0=B5=D0=BD:=20?= =?UTF-8?q?=D0=93=D1=80=D0=B0=D1=84=20=D1=81=20=D1=80=D0=B5=D1=84=D0=BB?= =?UTF-8?q?=D0=B5=D0=BA=D1=81=D0=B8=D0=B5=D0=B9=20=D0=B8=20=D0=B4=D0=BE?= =?UTF-8?q?=D1=80=D0=B0=D0=B1=D0=BE=D1=82=D0=BA=D0=BE=D0=B9:=20README.md?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- README.md | 127 +++++++++++++++++++++++++++++++++++++++++++++++++++++- 1 file changed, 125 insertions(+), 2 deletions(-) diff --git a/README.md b/README.md index ea6093b..e17dda9 100644 --- a/README.md +++ b/README.md @@ -1,3 +1,126 @@ -# task-6a1d75d1-povtornyy-ekzamen-graf-s- +# Повторный экзамен: Граф с рефлексией и доработкой -Решения домашних заданий \ No newline at end of file +## Описание проекта +В этом проекте реализован **LangGraph**‑агент, который сам проверяет свой ответ на заданный вопрос. +1. Агент генерирует *черновик* ответа (`draft_answer`). +2. Затем отдельный узел‑критик оценивает качество черновика и выдаёт вердикт `ok` или `needs_revision`, а также список замечаний (`critique`). +3. Если критик требует доработки, агент вносит изменения в ответ через узел `rewrite`. Процесс повторяется не более `max_rounds` раз (по умолчанию 2). + +Таким образом реализуется «самопроверка» без использования случайных инструментов и с акцентом на рефлексию LLM. + +--- + +## Стек технологий +- Python 3.10+ +- **langgraph** – библиотека для построения графов взаимодействия LLM‑узлов +- **langchain-openai** (или **langchain-ollama**) – клиент OpenAI + +```bash +pip install langgraph langchain-openai +``` + +> Если вы хотите использовать Ollama вместо OpenAI, замените `langchain-openai` на `langchain-ollama` и настройте соответствующий провайдер. + +--- + +## Файлы проекта +| Файл | Описание | +|------|----------| +| `solution.py` | Основная реализация графа: состояние, узлы и запуск. | +| `README.md` | Текущий файл – инструкция по использованию. | + +--- + +## Установка зависимостей + +```bash +# Создайте виртуальное окружение (необязательно) +python -m venv .venv +source .venv/bin/activate # Windows: .venv\Scripts\activate + +# Установите зависимости +pip install langgraph langchain-openai +``` + +> **Важно**: для работы с OpenAI понадобится переменная окружения `OPENAI_API_KEY`. +> ```bash +> export OPENAI_API_KEY="sk-..." +> ``` + +--- + +## Запуск проекта + +### 1. Пример запуска из командной строки + +```bash +python solution.py "Объясни студенту разницу между tool и resource в MCP" +``` + +Вы увидите лог, где показаны: + +1. **Draft** – первоначальный ответ +2. **Critique** – замечания критика +3. **Verdict** – `ok` или `needs_revision` +4. При необходимости — **Rewrite** (доработанный ответ) + +### 2. Запуск в интерактивном режиме + +Если вы хотите задать вопрос вручную, просто запустите скрипт без аргументов: + +```bash +python solution.py +``` + +Скрипт запросит ввод вопроса через `input()`. + +--- + +## Пример использования (output) + +```text +Question: Объясни студенту разницу между tool и resource в MCP + +Draft: +Tool – это конкретный инструмент, который можно использовать для выполнения задачи. Он обычно имеет определённый набор функций и может быть применён к различным данным. Resource – это более общий термин, обозначающий любой материал или информацию, которые могут поддерживать работу с инструментом (например, документация, обучающие материалы, примеры). + +Critique: +- Не хватает конкретики: какие именно инструменты рассматриваются? +- Нет упоминания о том, как resource помогает использовать tool. +- В ответе присутствует лишняя информация о "данных". + +Verdict: needs_revision + +Rewrite: +Tool – это конкретный программный компонент (например, API или библиотека), который позволяет выполнять определённые операции. Resource – это любой материал, помогающий понять и эффективно использовать инструмент: документация, примеры кода, обучающие видео. Таким образом, tool предоставляет функциональность, а resource обеспечивает поддержку и обучение при работе с этим функционалом. + +Verdict: ok +``` + +--- + +## Как изменить параметры + +- **max_rounds** – максимальное количество итераций доработки (по умолчанию 2). + Вызовите скрипт так: + + ```bash + python solution.py "Вопрос" --max-rounds 3 + ``` + +- **model** – используемая модель LLM. По умолчанию `gpt-4o-mini`. + Изменить можно в функции `draft_answer` и `reflect`. + +--- + +## Что дальше + +- Добавьте более сложные критерии критика (например, оценку фактической точности). +- Интегрируйте с внешними инструментами для проверки фактов. +- Создайте веб‑интерфейс на FastAPI или Streamlit для интерактивного использования. + +--- + +## Лицензия + +MIT License – свободно используйте и модифицируйте код под свои нужды. \ No newline at end of file