Files

4.3 KiB
Raw Permalink Blame History

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

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

Проект реализует LangGraph‑агента, который:

  1. Выполняет задачу через инструмент (или набор инструментов).
  2. Проверяет результат с помощью LLM‑судьи (LLM-as-judge).
  3. При неудаче повторяет попытку до тех пор, пока не получит success или не исчерпает заданный лимит max_attempts.

Это демонстрация автоматической самопроверки и ретрая в стиле HITL (HumanintheLoop) без участия человека.

Стек технологий

  • Python 3.10+
  • langgraph – библиотека для построения графов агентов.
  • langchain-openai или langchain-ollama – LLM‑интеграция (OpenAI API либо локальный Ollama).

Установка зависимостей

# Создайте виртуальное окружение (рекомендуется)
python -m venv .venv
source .venv/bin/activate   # Windows: .venv\Scripts\activate

# Установите зависимости
pip install langgraph langchain-openai  # или langchain-ollama

Важно
Если вы используете langchain-openai, убедитесь, что переменная окружения OPENAI_API_KEY установлена:

export OPENAI_API_KEY="sk-..."

Запуск проекта

1. Основной скрипт main.py

Скрипт запускает агент с заданной задачей и выводит результат.

python main.py

Внутри main.py задаётся:

  • task: исходная задача (строка).
  • max_attempts: максимальное число попыток.
  • unreliable_tool: пример инструмента, который иногда генерирует ошибку.

2. Пример использования в интерактивном режиме

from main import run_agent

result = run_agent(
    task="Напиши короткую историю о путешествии робота",
    max_attempts=5,
)
print(result)   # {"status": "success", "attempts": 3, ...}

run_agent – публичная функция из main.py, которую можно импортировать в другие скрипты.

Пример вывода

Attempt 1: Выполнение задачи...
Result: "Робот отправился в космос..."
Проверка результата... Неудача. Ошибка: Недостаточно деталей.
Повторяем попытку...

Attempt 2: Выполнение задачи...
Result: "Робот отправился в космос, но забыл зарядку..."
Проверка результата... Успех!

Как это работает

  1. execute_task вызывает unreliable_tool (или любой другой инструмент) и сохраняет результат.
  2. verify_result – LLM оценивает строку результата как success или failed.
  3. Если failed и попыток осталось, handle_error увеличивает счётчик и переходит к execute_task снова.
  4. После достижения max_attempts агент завершается со статусом max_attempts.

Расширение проекта

  • Добавьте свои инструменты в список tools.
  • Настройте более сложные правила проверки результата, используя собственный шаблон LLM‑судьи.
  • Интегрируйте с другими LLM (Claude, Gemini) через langchain-openai/langchain-google-genai.

Лицензия

MIT License – свободно используйте и модифицируйте этот код для своих проектов.


Ссылка на репозиторий: https://github.com/your-username/self-correcting-agent (замените на актуальную)