# Самокорректирующийся агент ## Описание проекта Проект реализует **LangGraph**‑агента, который: 1. Выполняет задачу через инструмент (или набор инструментов). 2. Проверяет результат с помощью LLM‑судьи (`LLM-as-judge`). 3. При неудаче повторяет попытку до тех пор, пока не получит `success` или не исчерпает заданный лимит `max_attempts`. Это демонстрация автоматической самопроверки и ретрая в стиле HITL (Human‑in‑the‑Loop) без участия человека. ## Стек технологий - Python 3.10+ - `langgraph` – библиотека для построения графов агентов. - `langchain-openai` или `langchain-ollama` – LLM‑интеграция (OpenAI API либо локальный Ollama). ## Установка зависимостей ```bash # Создайте виртуальное окружение (рекомендуется) python -m venv .venv source .venv/bin/activate # Windows: .venv\Scripts\activate # Установите зависимости pip install langgraph langchain-openai # или langchain-ollama ``` > **Важно** > Если вы используете `langchain-openai`, убедитесь, что переменная окружения `OPENAI_API_KEY` установлена: > ```bash > export OPENAI_API_KEY="sk-..." > ``` ## Запуск проекта ### 1. Основной скрипт `main.py` Скрипт запускает агент с заданной задачей и выводит результат. ```bash python main.py ``` Внутри `main.py` задаётся: - `task`: исходная задача (строка). - `max_attempts`: максимальное число попыток. - `unreliable_tool`: пример инструмента, который иногда генерирует ошибку. ### 2. Пример использования в интерактивном режиме ```python from main import run_agent result = run_agent( task="Напиши короткую историю о путешествии робота", max_attempts=5, ) print(result) # {"status": "success", "attempts": 3, ...} ``` > `run_agent` – публичная функция из `main.py`, которую можно импортировать в другие скрипты. ## Пример вывода ```text 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 (замените на актуальную)