Некоторое время назад я писал про ИИ-агентов. И надо признаться, тогда я отнесся к ним равнодушно. Пулл задач, решаемые агентами, не произвели впечатление какой-то сложной системы. Сложность системы оценивалась "крутостью" LLM.
Но время не стоит на месте, и недавно я изучил статью (перевод на хабре), где описываются компоненты ИИ-агента в общем виде:
🔹 Для начала агенту в промпт зашивается цель, например, «помогай пользователю подбирать отели». Как я понял, это определяет формат общения с пользователем, тон, сленг и т. п.
🔹 Далее описаны внешние инструменты такие, как интернет-запрос, запрос к SQL базе или базе для RAG. В зависимости от входного запроса, LLM будет либо выдавать ответ «из себя», либо выдавать инструкцию использования внешнего инструмента. А уже программная среда будет делать запрос. Про это я рассказывал тут.
🔹 Описываются ограничения этические и функциональные. Чтоб LLM не выходила за рамки своей работы, отвечала только в рамках своей задачи и не «спугнула» пользователя.
🔹 Логика обработки ошибок. Например, если внешний инструмент недоступен, должны быть инструкции, что ответить пользователю. Не отдать же ему
Internal Server Error.🔹 Память необходима, чтобы использовать предыдущий опыт. Это может делаться как автоматически, так и по запросу пользователя. Например, «добавь этот отель в избранное».
🤯 Уже такие вещи делают систему действительно комплексной и интересной, поскольку нужно учитывать правильность работу каждого компонента и того, как они взаимодействуют друг с другом.
Мне еще нравится, что механизм может работать циклически, если запрос поэтапный. Например, «Найди отели в городе не ниже 4-х звезд». В этом случае нужно разбить запрос на 2 шага.
1) Сначала сделать инструкцию к API для получения текущей геопозиции.
2) Затем следующим шагом сформировать новую инструкцию к получению отелей текущего города по заданному фильтру.
И после чего агрегировать все предыдущие шаги и отдать пользователю красивый ответ. А пользователь в свою очередь может оставить комментарий (фидбек), и это отдается снова в LLM с учетом предыдущего вывода.
Кстати, по моим наблюдениям в Алисе возможность разбиения запроса на несколько этапов появилась недавно. Раньше я пробовал говорить «Алиса, включи подсветку и телевизор». Она не слушалась. Сейчас это работает, я доволен ❤️