Что такое ИИ-агенты? Как они работают: можно запустить простой цикл агента

  1. Главная
  2. Блог
  3. Искусственный интеллект

Искусственный интеллект

Что такое ИИ-агенты? Как они работают: можно запустить простой цикл агента

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

9 мин чтения
Что такое агенты ИИ? Как они работают: с помощью простого цикла агента, который вы можете запустить

Главное

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

Спросите чат-бота о позднем заказе, и он даст вам несколько советов. Спросите агента ИИ, и он сможет просмотреть заказ, проверить задержку, применить ваучер и сообщить об этом. Разница в том, что агент может действовать и реагировать на то, что происходит, вместо того, чтобы выдавать только один ответ.

В маркетинге этот термин растягивается, поэтому в этом руководстве основное внимание уделяется тому, как на самом деле работают эти системы. Чтобы прояснить ситуацию, мы создали небольшой цикл агента в Python 3.13 и запустили его, и результат этих запусков получен ниже. Наша «модель» — это скриптовая функция, а не реальная модель искусственного интеллекта, поэтому цикл может запустить и протестировать кто угодно. Это показывает структуру управления, а не интеллект. Новичок в основах? Сначала прочитайте что такое большая языковая модель.

Что такое ИИ-агент?

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

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

Чат-бот, рабочий процесс или агент?

Тип Кто определяет шаги? Может ли оно действовать? Пример
Чат-бот Пользователь управляет каждым поворотом Обычно нет Отвечает на вопросы из текста
Фиксированный рабочий процесс Застройщик заранее Да, по заданным маршрутам Обобщите каждый билет, а затем направьте его
ИИ-агент Модель во время выполнения Да, в пределах Расследует и разрешает заявку

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

Что внутри агента

Часть Роль
Модель Решает следующий шаг, исходя из цели и того, что произошло на данный момент.
Инструкции Цель, правила и ограничения, которым он должен следовать.
Инструменты Функции, которые он может запрашивать, например поиск или вызов API.
Память Что он знает из предыдущих шагов или прошлых сеансов
Контур управления Обычный код, который запускает инструменты и обеспечивает соблюдение ограничений.

Агентский цикл

  1. Решите. Модель смотрит на цель и историю и выбирает действие или решает, что оно завершено.
  2. Действуйте. Ваш код запускает запрошенный инструмент.
  3. Наблюдение. Результат добавляется в историю.
  4. Повторяйте, пока цель не будет достигнута или не будет достигнут предел.

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

Цикл, который вы можете запустить

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

ORDERS = {
    "A100": {"status": "delayed", "days_late": 6},
    "B200": {"status": "shipped", "days_late": 0},
}

def get_order(order_id):
    return ORDERS.get(order_id, {"error": "order not found"})

def issue_voucher(order_id, amount):
    return {"voucher": f"V-{order_id}", "amount": amount}

TOOLS = {"get_order": get_order, "issue_voucher": issue_voucher}
NEEDS_APPROVAL = {"issue_voucher"}

А вот и сама петля. Это обычный код, и все правила безопасности живут здесь, а не в модели:

def run_agent(goal, model, approve, max_steps=5):
    history = []
    for step in range(1, max_steps + 1):
        decision = model(goal, history)
        if "finish" in decision:
            return decision["finish"]

        name, args = decision["tool"], decision["args"]
        if name in NEEDS_APPROVAL and not approve(name, args):
            result = {"denied": True}
        else:
            result = TOOLS[name](**args)

        history.append({"tool": name, "result": result})
    return None   # stopped: step limit reached

Чтобы использовать реальную модель, вы должны заменить функцию model вызовом LLM API, передав ему цель, историю и описания ваших инструментов. Цикл остается почти таким же.

Что произошло в наших забегах

Мы опробовали пять ситуаций с помощью функции принятия решения по сценарию и протоколировали каждый шаг.

Отложенный заказ с одобренным ваучером

step 1: get_order({'order_id': 'A100'}) -> {'status': 'delayed', 'days_late': 6}
step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'voucher': 'V-A100', 'amount': 200}
step 3: finish -> Sorry for the delay. Voucher V-A100 issued.

Каждый шаг использовал результат предыдущего. Ваучер рассматривался только после подтверждения задержки.

Тот же приказ, в одобрении отказано

step 2: issue_voucher({'order_id': 'A100', 'amount': 200}) -> {'denied': True}
step 3: finish -> Your order is late. A person will review compensation.

Человек сказал «нет», инструмент так и не запустился, и агент адаптировал свой ответ.

Неизвестный заказ

step 1: get_order({'order_id': 'Z999'}) -> {'error': 'order not found'}
step 2: finish -> I could not find that order.

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

Модель, которая застряла

Мы также заменили ошибочную функцию принятия решения, которая постоянно повторяла одно и то же действие:

step 1: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 2: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
step 3: get_order({'order_id': 'B200'}) -> {'status': 'shipped', 'days_late': 0}
stopped: step limit reached

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

Как работают инструменты

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

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

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

Память

Тип держит Пример
Краткосрочный История текущей задачи Список history в нашем цикле
Долгосрочный Факты сохраняются между сессиями Предпочтения пользователя в базе данных
Знания Документы, которые извлекаются при необходимости RAG с использованием вложений

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

Мультиагентные системы

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

Риски и ограничения

  • Неправильные действия. Ошибка чат-бота — плохой приговор. Ошибкой агента может быть отправленное электронное письмо или удаленная запись.
  • Быстрое внедрение. Веб-страница или электронное письмо, которые читает агент, могут содержать скрытые инструкции. Рассматривайте все выходные данные инструмента как ненадежные данные, а не как команды.
  • Комплексные ошибки. Небольшая ошибка на раннем этапе может направить каждый последующий шаг в неправильном направлении.
  • Стоимость и задержка. Каждый шаг может быть вызовом другой модели, поэтому задача может быть намного медленнее и дороже, чем одно приглашение.
  • Непоследовательность. Одна и та же цель может идти по разному пути при каждом запуске, что усложняет тестирование.
  • Подотчетность. Люди по-прежнему несут ответственность за то, что делает система, поэтому ведите записи.

Ограждения, которые имеют значение

  1. Минимум привилегий. Предоставляйте каждому агенту только те инструменты и доступ, которые ему необходимы.
  2. Человеческое одобрение для всего дорогостоящего, необратимого или внешнего, как это происходит в нашей демо-версии.
  3. Жесткие ограничения на шаги, время и расходы.
  4. Проверяйте входные данные инструмента в коде и не полагайтесь на инструкции модели.
  5. Записывайте каждый шаг, чтобы можно было понять, почему что-то произошло. См. мониторинг и наблюдаемость.
  6. Протестируйте реальные сценарии, включая сбои. Проверьте окончательные результаты, а также отдельные ответы. Наше руководство по лучшим практикам работы с агентами искусственного интеллекта идет дальше по вопросам развертывания.

Когда использовать агента

Используйте агента, когда Используйте что-нибудь попроще, когда
Шаги не могут быть известны заранее Шаги всегда одни и те же
Для задачи необходимо несколько инструментов Одна подсказка может сделать всю работу
Результаты меняют то, что произойдет дальше Фиксированный рабочий процесс будет работать
Ошибки дешевы или подлежат пересмотру Ошибки обходятся дорого, и их трудно исправить.

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

Итоги

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

Часто задаваемые вопросы

Что такое ИИ-агент простыми словами?

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

В чем разница между чат-ботом и ИИ-агентом?

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

Нужна ли ИИ-агентам большая языковая модель?

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

Безопасны ли агенты ИИ?

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

Может ли ИИ-агент заменить разработчика или тестировщика?

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

Продолжайте учиться

Работайте с Stack Quora

Нужна помощь с тестированием, WordPress или SEO?

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

Продолжайте читать

Больше руководств по тестирование, искусственный интеллект и современные разработки

Понравилась эта статья? Выберите тему и сразу приступайте к нашим новейшим руководствам.

Искусственный интеллект

Объяснение галлюцинаций искусственного интеллекта: почему языковые модели все выдумывают и как их уменьшить

Галлюцинации ИИ объяснили: что это такое, почему языковые модели их создают, распространенные типы, как уменьшить их с помощью заземления и подсказо…

Читать статью →
DevOps

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

Переменные среды объясняются на примерах Python, которые мы запускали: их чтение и установка, почему каждое значение является строкой, файлы .env, н…

Читать статью →
Разработка ПО

Объяснение ограничения скорости API: алгоритмы, заголовки и обработка ошибок 429

Ограничение скорости API объясняется с помощью проведенного нами моделирования: сегмент токенов, фиксированное окно, скользящее окно, 429 ответов, з…

Читать статью →
Автоматизация тестирования

Издевательство в Python: unittest.mock, патч и ошибки, из-за которых тесты лгут

Издевательство на Python с помощью unittest.mock, протестировано: Mock и return_value, Side_effect, исправление использования имени, спецификация и …

Читать статью →
Тестирование ПО

Объяснение покрытия кода: покрытие линий или ветвей и что на самом деле означает 100%

Покрытие кода объяснено с помощью реального запуска покрытия.py: покрытие строк, ветвей и условий, чтение отчета, почему 100%-ное покрытие все еще м…

Читать статью →
Базы данных и SQL

DELETE, TRUNCATE и DROP в SQL: различия, откат и когда использовать каждый из них

Объяснение DELETE, TRUNCATE и DROP на примере протестированного SQL: что каждый из них удаляет, откат, триггеры, сброс идентификаторов, скорость и ч…

Читать статью →
Базы данных и SQL

Объяснение представлений SQL: создавайте, используйте и избегайте ловушек, с примерами

Представления SQL, объясненные с помощью запросов, которые мы выполняли: создание представления, результаты в реальном времени, скрытие столбцов, пр…

Читать статью →
Разработка ПО

Интерфейс TypeScript и тип: реальные различия, протестированные с помощью компилятора

Интерфейс TypeScript против типа, проверенный реальным компилятором: что могут делать оба, что может делать только один, слияние объявлений, расшире…

Читать статью →
Разработка ПО

Объяснение Python *args и **kwargs: гибкие функции с понятными примерами

Python *args и **kwargs, объясненные с помощью кода, который мы запускали: упаковка и распаковка, порядок параметров, аргументы только по ключевым с…

Читать статью →
Разработка ПО

Лямбда-функции Python: синтаксис, реальное использование и когда их не следует использовать

Лямбда-функции Python, объясненные с помощью кода, который мы запускали: синтаксис, сортировка с помощью ключа, карты и фильтра, замыкания, ловушка …

Читать статью →
Искусственный интеллект

Что такое ИИ-агенты? Как они работают: можно запустить простой цикл агента

Что такое агенты ИИ? Простое руководство по циклу агента, инструментам, памяти и ограничениям, с небольшим циклом Python, который мы запустили, реал…

Читать статью →
DevOps

Мониторинг и наблюдаемость: реальная разница с журналами, метриками и трассировками

Объяснение мониторинга и наблюдаемости: известные и неизвестные сбои, журналы, метрики и трассировки, пошаговое руководство по инцидентам при оформл…

Читать статью →
DevOps

Docker Volumes против Bind Mounts: правильное сохранение данных контейнера

Объяснение томов Docker и монтирования привязки: почему исчезают данные контейнера, именованные тома, монтирование привязки, tmpfs, примеры создания…

Читать статью →
Автоматизация тестирования

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

TDD и BDD объясняются с помощью одной функции скидки, созданной в обоих направлениях: красно-зеленый рефакторинг с кодом, который мы запускали, сцен…

Читать статью →
Разработка ПО

Git merge vs rebase: отличия, примеры и когда что использовать

Git merge vs rebase с реальным выводом log, сравнительной таблицей, золотым правилом rebase и безопасным рабочим процессом для команды.

Читать статью →
Разработка ПО

Генераторы списков в Python: синтаксис, примеры и когда их избегать

Генераторы списков в Python: синтаксис, фильтры, if-else, вложенные циклы, измеренное время и случаи, когда обычный цикл for лучше.

Читать статью →
Базы данных и SQL

SQL JOIN: объяснение с примерами (Inner, Left, Right, Full)

Разберите SQL JOIN шаг за шагом на примерах таблиц и запросов: INNER, LEFT, RIGHT, FULL, CROSS и SELF, а также частые ошибки и советы по производите…

Читать статью →