1b5a4860149aeeb5e5598fcded822b8bf677935e
Самокорректирующийся агент
Описание проекта
В этом проекте реализован LangGraph‑агент, который:
- Выполняет задачу через заданный инструмент.
- Проверяет результат с помощью LLM (LLM‑as‑judge).
- При неудаче повторяет попытку до тех пор, пока результат не будет признан успешным
или пока не исчерпается лимит
max_attempts.
Это демонстрация автоматической самопроверки и ретрая без участия человека.
Стек технологий
- Python 3.10+
langgraph– библиотека для построения графов агентов.langchain-openai(илиlangchain-ollama) – подключение к LLM.
pip install langgraph langchain-openai
Структура проекта
├── main.py # точка входа, содержит всю логику агента
└── README.md # это файл
Файл main.py
- AgentState – тип состояния графа.
- execute_task – узел, который вызывает инструмент (в примере используется
unreliable_tool). - verify_result – LLM‑ас‑джюри, оценивает результат как
successилиfailed. - handle_error – увеличивает счётчик попыток и готовит повторную попытку.
- Цикл:
START → execute_task → verify_result → (success|failed) → handle_error?.
Установка зависимостей
# Создайте виртуальное окружение (рекомендовано)
python -m venv .venv
source .venv/bin/activate # Windows: .venv\Scripts\activate
# Установите зависимости
pip install langgraph langchain-openai
Запуск проекта
python main.py
При запуске агент выполнит задачу, проверит результат и при необходимости повторит попытку. В консоли будет выводить статус каждой итерации.
Пример вывода
Attempt 1: Task executed successfully.
Verification result: failed
Retrying... (attempt 2)
Attempt 2: Tool raised an error.
Error: Simulated tool failure.
Retrying... (attempt 3)
Attempt 3: Task executed successfully.
Verification result: success
Agent finished with status: success
Как использовать
- Измените задачу – в
main.pyнайдите строкуи замените её на свою.task = "Напиши короткую историю о путешествии робота." - Настройте LLM – при необходимости поменяйте провайдера (OpenAI, Ollama и т.д.) в
ChatOpenAI(...). - Установите лимит попыток – задайте нужное значение
max_attemptsв состоянии графа.
Тестовый инструмент
В примере используется unreliable_tool, который случайно генерирует ошибку 30 % времени, чтобы продемонстрировать работу ретрая. Вы можете заменить его на любой реальный инструмент из LangChain.
Автор: [Ваше имя]
Дата: 2026‑05‑28
Description
Languages
Python
100%