Files

93 lines
4.3 KiB
Markdown
Raw Permalink Blame History

This file contains ambiguous Unicode characters
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. Выполняет задачу через инструмент (или набор инструментов).
2. Проверяет результат с помощью LLM‑судьи (`LLM-as-judge`).
3. При неудаче повторяет попытку до тех пор, пока не получит `success`
или не исчерпает заданный лимит `max_attempts`.
Это демонстрация автоматической самопроверки и ретрая в стиле HITL (HumanintheLoop) без участия человека.
## Стек технологий
- 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 (замените на актуальную)