89 lines
3.7 KiB
Markdown
89 lines
3.7 KiB
Markdown
# Самокорректирующийся агент
|
||
|
||
## Описание проекта
|
||
В этом проекте реализован **LangGraph**‑агент, который:
|
||
1. Выполняет задачу через заданный инструмент.
|
||
2. Проверяет результат с помощью LLM (LLM‑as‑judge).
|
||
3. При неудаче повторяет попытку до тех пор, пока результат не будет признан успешным
|
||
или пока не исчерпается лимит `max_attempts`.
|
||
|
||
Это демонстрация автоматической самопроверки и ретрая без участия человека.
|
||
|
||
## Стек технологий
|
||
|
||
- Python 3.10+
|
||
- `langgraph` – библиотека для построения графов агентов.
|
||
- `langchain-openai` (или `langchain-ollama`) – подключение к LLM.
|
||
|
||
```bash
|
||
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?`.
|
||
|
||
## Установка зависимостей
|
||
|
||
```bash
|
||
# Создайте виртуальное окружение (рекомендовано)
|
||
python -m venv .venv
|
||
source .venv/bin/activate # Windows: .venv\Scripts\activate
|
||
|
||
# Установите зависимости
|
||
pip install langgraph langchain-openai
|
||
```
|
||
|
||
## Запуск проекта
|
||
|
||
```bash
|
||
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` найдите строку
|
||
```python
|
||
task = "Напиши короткую историю о путешествии робота."
|
||
```
|
||
и замените её на свою.
|
||
2. **Настройте LLM** – при необходимости поменяйте провайдера (OpenAI, Ollama и т.д.) в `ChatOpenAI(...)`.
|
||
3. **Установите лимит попыток** – задайте нужное значение `max_attempts` в состоянии графа.
|
||
|
||
## Тестовый инструмент
|
||
|
||
В примере используется `unreliable_tool`, который случайно генерирует ошибку 30 % времени, чтобы продемонстрировать работу ретрая. Вы можете заменить его на любой реальный инструмент из LangChain.
|
||
|
||
---
|
||
|
||
**Автор:** [Ваше имя]
|
||
**Дата:** 2026‑05‑28 |