Files
task-6a1d75d1-povtornyy-ekz…/README.md
T

126 lines
6.1 KiB
Markdown
Raw Blame History

This file contains invisible Unicode characters
This file contains invisible Unicode characters that are indistinguishable to humans but may be processed differently by a computer. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
This file contains Unicode characters that might be confused with other characters. If you think that this is intentional, you can safely ignore this warning. Use the Escape button to reveal them.
# Повторный экзамен: Граф с рефлексией и доработкой
## Описание проекта
В этом проекте реализован **LangGraph**‑агент, который сам проверяет свой ответ на заданный вопрос.
1. Агент генерирует *черновик* ответа (`draft_answer`).
2. Затем отдельный узел‑критик оценивает качество черновика и выдаёт вердикт `ok` или `needs_revision`, а также список замечаний (`critique`).
3. Если критик требует доработки, агент вносит изменения в ответ через узел `rewrite`. Процесс повторяется не более `max_rounds` раз (по умолчанию 2).
Таким образом реализуется «самопроверка» без использования случайных инструментов и с акцентом на рефлексию LLM.
---
## Стек технологий
- Python3.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 – свободно используйте и модифицируйте код под свои нужды.