Основы ИИ-агентов. Часть 4

Оговорка: данный лекционный материал разработан прежде всего для магистрантов и аспирантов нетехнических направлений, внедряющих технологии ИИ в свою учебную, научную и профессиональную деятельность. Контент носит вводный характер и предполагает определенные упрощения. Тем не менее, публикация может быть полезна широкому кругу пользователей нейросетей. Буду благодарен за конструктивную критику и идеи по доработке.

Цикл «Фундаментальный минимум» (из 4 частей):

Фундаментальный минимум. Часть 1: Принципы работы больших языковых моделей;

Фундаментальный минимум. Часть 2: Искусство промпт-инжиниринга;

Фундаментальный минимум. Часть 3: Архитектура RAG-систем;

Фундаментальный минимум. Часть 4: Эволюция ИИ-агентов (текущий раздел).

«Что такое воля, как не мысль, переходящая в дело?» — Александр Александрович Бестужев-Марлинский

Оглавление

Трансформация RAG в интеллектуальных агентов

Метод RAG эффективно справляется с нехваткой актуальных сведений у модели, однако он остается лишь пассивным механизмом доставки контекста. В стандартном исполнении такая система лишена субъектности: она не выстраивает стратегию, не верифицирует собственные результаты и не умеет извлекать уроки из ошибок. Если поисковый алгоритм выдаст неверные фрагменты, модель просто интерпретирует их «как есть», не пытаясь перепроверить данные.

На практике задачи редко бывают линейными. Часто требуется комплексный подход: агрегация данных из множества каналов, их сопоставление, итеративное уточнение вопроса и критический анализ промежуточных итогов.

8.drawio.png

В таких условиях требуется не просто справочник, а автономная система управления — агентный подход. Он подразумевает выбор оптимальной стратегии и последовательное выполнение действий до полного решения задачи.

Согласно определению Google Cloud, ИИ-агент (AI agent) представляет собой интеллектуальную систему, способную выполнять комплексные поручения от лица пользователя. Он самостоятельно декомпозирует задачу, формирует план, подбирает нужные инструменты и проходит путь от запроса к финалу через цепочку осознанных действий.

Агент наделен способностью взаимодействовать с внешней средой: он может исполнять программный код, оперировать файловой системой, обращаться к API сторонних сервисов или манипулировать данными в БД. Его роль не ограничивается генерацией текста — он активно трансформирует окружение.

13.drawio.png

Критически важная черта агента — механизм самокоррекции. Если система обнаруживает дефицит информации или логическую ошибку, она инициирует повторный поиск, пересчитывает значения или уточняет вводные.

Современные реализации позволяют агентам предлагать дальнейшие шаги и выполнять их либо в полностью автоматическом режиме, либо под контролем пользователя при проведении критических операций.

Такая архитектура делает агентов незаменимыми для нетривиальных сценариев: глубокого анализа документации, автоматизированной разработки софта или подготовки мультимедийного контента.

Анатомия ИИ-агента: основные модули

Для обеспечения автономности агенту требуется слаженная работа нескольких фундаментальных компонентов.

14.drawio.png

Ядром системы остается LLM (языковая модель). Она выступает в роли «мозгового центра»: формулирует распоряжения, делает промежуточные выводы, генерирует код и управляет вызовами функций.

Связь с реальностью обеспечивают инструменты. К ним относятся поисковые алгоритмы, интерфейсы взаимодействия с API, интерпретаторы кода и любые внешние программные модули.

Следующий элемент — память. Краткосрочная фиксирует текущую историю диалога и статус выполнения подзадач. Долгосрочная (реализуемая через векторные хранилища) позволяет системе аккумулировать опыт и оперировать обширными базами корпоративных знаний.

Для реализации многоэтапных сценариев необходим планировщик. Он декомпозирует глобальную цель на атомарные шаги, распределяет ресурсы и предотвращает циклическое повторение ошибок.

Не менее важен модуль валидации и контроля. Агент критически оценивает свои действия, сопоставляет факты и предпринимает новые попытки при обнаружении сбоев. Завершает структуру среда (окружение) — все доступные агенту внешние ресурсы и системы.

Концепция ReAct: мышление через действие

Одной из наиболее эффективных стратегий агентного поведения является паттерн ReAct. Его суть заключается в строгой последовательности когнитивных и практических итераций.

15.drawio (1).png

Модель сначала анализирует ситуацию (рассуждает), затем инициирует конкретное действие через доступный инструмент, после чего фиксирует результат и переходит к планированию следующего шага. Этот цикл описывается как «Рассуждение (reason) — Действие (act) — Наблюдение (observe)».

Главный плюс ReAct — прозрачность: пользователь может отследить всю логическую цепочку и понять, на каком этапе возникли трудности. Именно этот паттерн лежит в основе большинства современных ИИ-решений.

Коллективный интеллект: мультиагентные структуры

Логическим продолжением идеи является разделение ответственности между группой узкоспециализированных ИИ. Мультиагентная система (MAS, Multi-Agent System) — это конгломерат агентов, координирующих свои усилия для достижения общей цели. Это напоминает работу проектной команды, где у каждого своя роль: один планирует, второй ищет информацию, третий пишет код, а четвертый проверяет качество.

Преимущества очевидны. Во-первых, это параллелизация процессов: подзадачи решаются одновременно. Во-вторых, повышение надежности за счет перекрестной проверки результатов. В-третьих, гибкое масштабирование при работе с огромными массивами данных и сложным инструментарием.

Управление такой структурой обычно берет на себя агент-координатор (оркестратор). Он распределяет нагрузку и собирает разрозненные результаты в единый ответ. Это может быть как простой линейный конвейер, так и динамическая сеть, где агенты свободно взаимодействуют друг с другом.

6.drawio (2).png

Однако у MAS есть и свои вызовы: усложнение логистики взаимодействий, риск возникновения противоречий в выводах, а также рост вычислительных затрат (времени и токенов). Кроме того, расширяется поле рисков в сфере безопасности при работе с внешними ресурсами.

Интеграция агентов в современные ИТ-продукты

Технологические гиганты активно внедряют агентные функции в свои сервисы. В ChatGPT развиваются режимы Agent Mode и специализированный инструментарий вроде Codex. Решение GitHub Copilot эволюционирует в полноценного напарника, который интегрируется в среду разработки (IDE), анализирует контекст проекта, генерирует тесты и предлагает архитектурные правки.

Корпорация Microsoft представила экосистему Microsoft 365 Copilot, которая глубоко встроена в офисный пакет (Word, Excel, PowerPoint, Teams). Система способна автоматизировать обработку почты, создавать отчеты на базе таблиц и резюмировать итоги встреч. Рынок развивается стремительно, и новые агентные решения появляются практически еженедельно.

Кейс: разработка базового ИИ-помощника

При подготовке практической части я стремился создать максимально наглядный пример, лишенный избыточной сложности, но при этом демонстрирующий реальную автономность системы.

Результатом стал прототип туристического ассистента со следующими навыками:

  • Мониторинг метеоусловий в различных локациях;

  • Поиск культурно-массовых мероприятий;

  • Google Colab для самостоятельного тестирования. Ниже представлены ключевые фрагменты реализации.

    Настройка языковой модели

    В проекте задействована современная модель Qwen 3.5 (9B), развернутая локально в среде Colab с помощью платформы Ollama.

    from langchain_openai import ChatOpenAI
    

    llm = ChatOpenAI( model="qwen3.5:9b", base_url="http://localhost:11434/v1", api_key="ollama", temperature=0.3, )

    Данная модель оптимальна по соотношению производительности и требований к ресурсам, что позволяет запускать её на стандартных мощностях без потери качества логических рассуждений.

    Арсенал инструментов агента

    Агенту доступны три функции: get_weather, get_events и send_email. Система может самостоятельно комбинировать их, чтобы составить план досуга и дать рекомендации по выбору одежды.

    Хотя пример носит учебный характер, он наглядно показывает, как модель принимает решения о необходимости активации того или иного инструмента.

    Рассмотрим реализацию функции get_weather в качестве примера.

    @tool
    def get_weather(city: str) -> str:
    """Запрашивает актуальные метеоданные для указанного города.
    Аргумент: название города (на русском или английском)."""
    try:
    geo = requests.get(
    "https://geocoding-api.open-meteo.com/v1/search",
    params={"name": city, "count": 1, "language": "ru"},
    timeout=10,
    ).json()
    except Exception:
    return "Ошибка доступа к геосервису."

    if not geo.get("results"):
        return f"Локация '{city}' не обнаружена."
    
    r = geo["results"][0]
    lat, lon, name = r["latitude"], r["longitude"], r["name"]
    
    try:
        weather = requests.get(
            "https://api.open-meteo.com/v1/forecast",
            params={
                "latitude": lat,
                "longitude": lon,
                "current": "temperature_2m,wind_speed_10m,weathercode",
                "timezone": "auto",
            },
            timeout=10,
        ).json()["current"]
    except Exception:
        return "Ошибка при получении данных о погоде."
    
    codes = {
        0: "ясно", 1: "преимущественно ясно", 2: "облачно с прояснениями",
        3: "сплошная облачность", 45: "туман", 48: "изморозь",
        51: "слабая морось", 53: "морось", 55: "интенсивная морось",
        61: "небольшой дождь", 63: "умеренный дождь", 65: "ливневый дождь",
        71: "слабый снег", 73: "снегопад", 75: "сильный снегопад",
        77: "снежные зерна", 80: "кратковременные ливни", 85: "метель",
        95: "гроза", 99: "сильная гроза с градом",
    }
    desc = codes.get(weather["weathercode"], f"код {weather['weathercode']}")
    
    return (
        f"{name}: {weather['temperature_2m']}°C, {desc}, "
        f"скорость ветра {weather['wind_speed_10m']} км/ч"
    )</code><div class="code-explainer"><a href="https://sourcecraft.dev/" class="tm-button code-explainer__link" style="visibility: hidden;"><img style="width:14px;height:14px;object-fit:cover;object-position:left;"></a></div></pre><p>Использование декоратора <code>@tool</code> из библиотеки <code>langchain_core.tools</code> превращает стандартную функцию в интеллектуальный модуль. Модель анализирует описание (docstring) и параметры, понимая, в каких случаях вызов функции будет полезен.</p><p>В профессиональных разработках часто применяется протокол MCP (например, через библиотеку <a href="https://gofastmcp.com/getting-started/welcome" rel="noopener noreferrer nofollow">fastmcp</a>) для выноса инструментов в независимые микросервисы, но для учебных целей достаточно базового подхода.</p><a class="anchor" name="agent-prompt" id="agent-prompt"></a><h4>Системные инструкции и профиль пользователя</h4><p>В этом блоке задаются поведенческие паттерны агента и передаются персонализированные данные о пользователе.</p><pre><code class="python">USER_CONTEXT = (
    "Данные пользователя:\n"
    "- Имя: Павел\n"
    "- Возраст: 27 лет\n"
    "- Почта: pavel@mail.com\n"
    "- Хобби: IT-технологии, кроссфит, исторические исследования\n"

    )

    SYSTEM = SystemMessage(content=(
    f"Текущая дата: {today}.\n"
    "Ты — персональный ассистент по путешествиям. Язык общения — русский.\n\n"

    f"{USER_CONTEXT}\n"
    
    "## Функционал инструментов\n"
    "- get_weather(city) — метеосводка.\n"
    "- get_events(city, count) — поиск событий. Используй точное название города.\n"
    "- send_email(to, subject, body) — отправка почты (только по прямому запросу).\n\n"
    
    "## Алгоритм действий\n"
    "1. Вызывай инструменты последовательно.\n"
    "2. Базируй ответы только на фактических данных из инструментов.\n"
    "3. При отсутствии точного времени проведения — сообщай об этом прямо.\n"
    "4. Исключи технический синтаксис (JSON) из диалога.\n"
    "5. Рекомендуй стиль одежды согласно текущим метеоусловиям.\n"
    "6. Подбирай мероприятия, релевантные интересам Павла.\n"
    "7. Придерживайся делового и лаконичного стиля.\n"

    ))

    tools = [get_weather, get_events, send_email] agent = create_agent(llm, tools)

    Именно связка модели, системного промпта и набора инструментов (через create_agent) превращает статичную LLM в динамичного агента.

    Алгоритм функционирования

    Ниже представлена реализация цикла обратной связи с пользователем.

    while True:
    query = input("Вы: ").strip()
    if not query or query.lower() in {"exit", "выход", "quit"}:
    break

    history.append(HumanMessage(content=query))
    history = history[-10:] # Ограничение глубины памяти
    
    result = agent.invoke({"messages": [SYSTEM] + history})
    
    for msg in result["messages"]:
        if isinstance(msg, AIMessage) and msg.tool_calls:
            for tc in msg.tool_calls:
                print(f"  [логирование действия] {tc['name']}({tc['args']})")
        elif isinstance(msg, ToolMessage):
            preview = msg.content[:300] + ("..." if len(msg.content) > 300 else "")
            print(f"  [получен результат] {preview}")
    
    final = next(
        (m for m in reversed(result["messages"])
         if isinstance(m, AIMessage) and not m.tool_calls),
        None,
    )
    
    if final:
        print(f"\nАгент: {final.content}\n")
        history.append(final)</code><div class="code-explainer"><a class="tm-button code-explainer__link" style="visibility: hidden;"><img style="width:14px;height:14px;object-fit:cover;object-position:left;"></a></div></pre><p>Процесс интуитивно понятен: ввод пользователя обогащает историю беседы и передается агенту. Вся сложная логика планирования и вызовов скрыта внутри метода <code>agent.invoke</code>. Для наглядности мы выводим промежуточные шаги работы системы в консоль.</p><a class="anchor" name="example-dialog" id="example-dialog"></a><h4>Демонстрация работы</h4><p>Пример реального взаимодействия (вывод инструментов сокращен для удобства чтения):</p><pre><code>Вы: Привет я в Красноярске пару дней и хочу вечером сходить куда то сегодня скажи куда можно и как по погоде одеться
    [логирование действия] get_weather({'city': 'Красноярск'})
    [логирование действия] get_events({'city': 'Красноярск', 'count': 10})

    [получен результат] Красноярск: 3.5C, облачно, ветер 18 км/ч
    [получен результат] Список мероприятий в Красноярске: ...

    Агент: Приветствую, Павел! В Красноярске сейчас около +3.5°C, небо затянуто облаками...
    ...
    3. Выставка «Николай Константинович Ауэрбах: ученый-археолог» — Красноярский краеведческий музей. Учитывая твой интерес к истории, это отличный выбор.

    К сожалению, точные часы начала в текущей сводке отсутствуют. Рекомендую уточнить график работы музея перед посещением.

    Также обрати внимание на экспозицию «Искусство XX века» в музее имени Сурикова. Вечер будет прохладным и ветреным, поэтому советую выбрать теплую куртку и непродуваемую одежду.

    Что из этого тебя заинтересовало?

    Агент проявил инициативу: запросил погоду и афишу, проанализировал профиль пользователя и выдал персонализированные рекомендации с учетом метеоусловий.

    Продолжение диалога:

    Вы: Хочу на Искусство XX века. Скинь мне адрес на почту
    Файл создан: /content/email_061623.txt
    [логирование действия] send_email({'to': 'pavel@mail.com', 'subject': 'Детали выставки «Искусство XX века»', 'body': 'Павел, добрый день!\n\nАдрес интересующей вас выставки:\nКрасноярский художественный музей им. Сурикова\nпр. Мира, 12. Желаю приятного вечера!'})
    [получен результат] Письмо успешно сформировано для pavel@mail.com.

    Агент: Павел, информация по выставке (пр. Мира, 12) уже на твоей почте pavel@mail.com. Приятного отдыха!

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

    Адресат: pavel@mail.com
    Тема: Детали выставки «Искусство XX века»

    Павел, добрый день!

    Адрес интересующей вас выставки: Красноярский художественный музей им. Сурикова пр. Мира, 12. Желаю приятного вечера!

    Заключение

    В рамках данного цикла мы проследили эволюцию от концепции языковых моделей до создания сложных прикладных систем. Мы увидели, как RAG обогащает ответы фактами, агенты наделяют ИИ способностью действовать, а промпт-инжиниринг служит мостом для эффективного управления этими процессами.

    Разумеется, технология не лишена недостатков: риск галлюцинаций, зависимость от точности формулировок, лимиты контекста и вопросы информационной безопасности остаются актуальными вызовами.

    Список рекомендуемых источников:

    1. Wang X. et al. A Survey on Large Language Model based Autonomous Agents // arXiv. 2024. [Электронный ресурс]. URL: https://arxiv.org/abs/2401.14554;

    2. Yao S. et al. ReAct: Synergizing Reasoning and Acting in Language Models // arXiv. 2022. [Электронный ресурс]. URL: https://arxiv.org/abs/2210.03629;

    3. Интеллектуальные агенты: от чат-ботов к автономным помощникам // Yandex Cloud Blog. 2025. URL: https://yandex.cloud/ru/blog/ai-agents;

    4. Принципы работы и возможности AI-агентов // Skillfactory Blog. 2025. URL: https://blog.skillfactory.ru/chto-takoe-ai-agenty-i-chto-oni-umeyut/;

    5. Архитектура и внедрение ИИ-агентов // Sber Developers Knowledge Base. 2025. URL: https://developers.sber.ru/help/gigachat-api/ai-agents;

    6. Основы многоагентных систем // Рувики. URL: https://ru.ruwiki.ru/wiki/Многоагентная_система;

    7. Преимущества мультиагентных систем на базе LLM // Cloud.ru Blog. 2025. URL: https://cloud.ru/blog/multiagentnyye-sistemy-na-osnove-llm.

     

    Источник

Читайте также