Самокорректирующийся агент

Описание проекта

В этом проекте реализован LangGraph‑агент, который:

  1. Выполняет задачу через заданный инструмент.
  2. Проверяет результат с помощью LLM (LLMasjudge).
  3. При неудаче повторяет попытку до тех пор, пока результат не будет признан успешным или пока не исчерпается лимит 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

Как использовать

  1. Измените задачу в main.py найдите строку
    task = "Напиши короткую историю о путешествии робота."
    
    и замените её на свою.
  2. Настройте LLM – при необходимости поменяйте провайдера (OpenAI, Ollama и т.д.) в ChatOpenAI(...).
  3. Установите лимит попыток – задайте нужное значение max_attempts в состоянии графа.

Тестовый инструмент

В примере используется unreliable_tool, который случайно генерирует ошибку 30 % времени, чтобы продемонстрировать работу ретрая. Вы можете заменить его на любой реальный инструмент из LangChain.


Автор: [Ваше имя]
Дата: 20260528

S
Description
Решения домашних заданий
Readme 37 KiB
Languages
Python 100%