Программный агент
Программный агент — это компьютерная программа, выполняющая действия от имени пользователя или другой программы в рамках отношения представительства. Термин «агент» происходит от латинского agere — «делать», что подразумевает соглашение действовать от имени другого лица или системы, а также право самостоятельно выбирать целесообразное действие[1].[2] Программные агенты также называются ботами и могут быть воплощены как в физических устройствах (роботах), так и в форме программного обеспечения (например, чат-боты на компьютерах и мобильных устройствах, такие как Siri). Программные агенты могут быть автономными либо работать совместно с другими агентами или людьми. Агенты, взаимодействующие с людьми (например, чат-боты, системы человеко-роботного взаимодействия), могут обладать человекоподобными чертами, такими как понимание естественного языка, речь, индивидуальность или антропоморфная внешность (Asimo)
Аналоги
К смежным и производным понятиям относятся интеллектуальный агент, обладающий признаками искусственного интеллекта (например, средствами автоматизированного рассуждения), автономный агент (способный изменять способы достижения целей), распределённые агенты (работающие на различных физических вычислителях), мультиагентная система (группа распределённых агентов, совместно реализующих задачи, недоступные одному агенту), а также мобильный агент (способный переносить выполнение между процессорами).
Понятия
Основными характеристиками автономного программного агента являются:
- активация по собственной инициативе, а не только по вызову для выполнения задания;
- возможность ожидания на хосте с анализом контекста;
- переход в активный режим при наступлении определённых условий;
- отсутствие необходимости прямого взаимодействия с пользователем;
- способность инициировать другие задачи, включая коммуникацию.
Понятие агента удобно и гибко описывает сложную программную сущность, действующую с определённой степенью автономии в интересах пользователя или системы. В отличие от объектов, определяемых набором методов и атрибутов, агент определяется своими поведенческими характеристиками[3].
Различные авторы предлагают собственные определения, которые часто включают следующие концепции:
- постоянство (persistence): код работает непрерывно, самостоятельно выбирая момент активности;
- автономность: способность к выбору задач, их приоритизации, целенаправленному поведению и принятию решений без вмешательства человека;
- социальные способности: взаимодействие с другими компонентами посредством коммуникации и координации (коллаборация);
- реактивность: восприятие окружающего контекста и адекватное реагирование на изменения.
Все агенты — это программы, но не все программы являются агентами. Критерии различия с близкими понятиями обозначены у Фрэнклина и Грессер (1997):[4] реакция на среду, автономность, целенаправленность и постоянство.
- Агенты более автономны, чем объекты.
- Агентам свойственно гибкое поведение: реактивное, проактивное, социальное.
- У агентов всегда есть хотя бы один поток управления (иногда несколько)[5].
- Экспертная система не связана напрямую с окружающей средой.
- Экспертные системы не ориентированы на реактивное или проактивное поведение.
- В экспертных системах отсутствует социальное взаимодействие[5].
- Интеллектуальный агент (рациональный агент) — это не только компьютерная программа, но и любая система, способная к целенаправленному поведению: машина, человек, коллектив (например, фирма).
Влияние программных агентов
Программные агенты способны приносить различные выгоды конечным пользователям за счёт автоматизации сложных или повторяющихся операций[6]. Однако внедрение этой технологии сопровождается также организационными и культурными эффектами.
Люди склонны выполнять простые задачи для ощущения успеха, если только избыточная повторяемость таких действий не снижает общую производительность. Обычно передача рутинных административных задач программным агентам приводит к росту удовлетворения работой, так как самостоятельное администрирование редко приносит удовольствие сотруднику. Сэкономленные усилия могут быть направлены на более значимые задания. Таким образом, агенты способствуют введению самоуправляемого труда с минимальным вмешательством иерархических структур[7]. Формализованная поддержка может быть обеспечена через применение программных агентов.
К культурным эффектам внедрения программных агентов относят формирование доверия к ним, потерю навыков, угрозу приватности и социальную изоляцию. Пользователи не всегда готовы полностью передавать важные функции программам. Опора только на интеллектуальных агентов приводит к утрате ряда компетенций (например, работы с информацией). Для эффективной работы агент должен знать профиль пользователя, включая личные предпочтения, что порождает вопросы приватности. При передаче части коммуникационных функций агентам снижается объём прямых связей между людьми, и мир воспринимается «глазами агента». Эти аспекты необходимо учитывать при работе с интеллектуальными агентами[8].
Понятие агента восходит к модели акторов Хьюитта (1977): «Самодостаточный, интерактивный и параллельно исполняющийся объект с внутренним состоянием и возможностью коммуникации».
Развитие программных агентных систем связано с эволюцией мультиагентных систем (МАС), выросших из области распределённого искусственного интеллекта (DAI), распределённого решения задач (DPS) и параллельного ИИ (PAI), и унаследовавших ключевые черты DAI.
Наиболее яркое раннее образное представление «пользователь — агент» было показано в видео Джона Скалли «Навигатор знаний» (1987). После ряда неудачных попыток реализации сверху вниз в 1990-х мультиагентные системы стали охватывать широкий спектр применений: WWW, поисковые системы и пр.
Примеры интеллектуальных программных агентов
Покупательские агенты[9] перемещаются по сетям (например, Интернету), собирая данные о товарах и услугах. Эти агенты, или шопинг-боты, эффективны прежде всего для стандартных товаров — книг, компакт-дисков, электроники. Покупательские агенты часто интегрируются с платёжными сервисами для электронной коммерции[10].
Пользовательские или персональные агенты — интеллектуальные агенты, совершающие действия в интересах пользователя. К этой категории относятся системы, выполняющие (или способные выполнять) следующие функции:
- проверка электронной почты, сортировка по предпочтениям пользователя, оповещение о важных письмах;
- игра в компьютерные игры в роли соперника или патрулирование игровых зон;
- автоматическая подборка новостей и формирование индивидуальных лент (пример — сервис CNN);
- поиск информации по инициализированным темам;
- автоматическое заполнение веб-форм с сохранением данных;
- анализ и выделение ключевого текста на посещаемых страницах;
- ведение диалогов по широкому спектру тем;
- помощь в поиске работы путём сканирования вакансий и рассылки резюме;
- синхронизация профилей пользователя в разных социальных сетях.
Агенты мониторинга и наблюдения используют для слежения за состоянием оборудования (например, компьютерных систем). Они могут фиксировать уровни запасов предприятия, анализировать цены конкурентов, мониторить инсайдерскую торговлю акциями, слухи и пр.
Например, в Лаборатории реактивного движения НАСА используется агент для управления запасами, планирования поставок, заказа оборудования и управления пищевыми запасами. Такие агенты часто внедряются для мониторинга сложных компьютерных сетей.
Особый случай — группы агентов для автоматизации принятия решений в тактике: распределение ресурсов (боеприпасы, транспорт, вооружение) для достижения поставленных целей при минимизации расходов.
Агенты поиска данных используют ИТ для выявления трендов и закономерностей в больших массивах информации из разных источников. Пользователь может с их помощью находить нужные данные в дата-центрах.
Например, такой агент работает в хранилище данных, выявляя значимые сведения. «Интеллектуальный анализ данных» — процесс поиска в хранилище ценных парадигм для принятия управленческих решений (например, повышения продаж или удержания клиентов).
Наиболее распространённый тип — классификатор, выделяющий структуры в информации и раскладывающий их по категориям. Агенты обнаруживают смещения тенденций или появления новых данных — например, сокращение объёма строительства сигнализирует строительным компаниям о необходимости пересмотра кадровой политики либо обновлении оборудования.
К современным интеллектуальным агентам относятся:
- фильтры спама,
- игровые боты,
- инструменты мониторинга серверов,
- поисковые роботы (боты индексирования).
Примеры:
- Пользовательский агент (user agent) для веб-сёрфинга;
- Агент передачи почты для работы с электронной почтой, например Microsoft Outlook (общается с сервером по протоколу POP3 и фильтрует письма по правилам пользователя);
- агенты SNMP;
- сервер Apache HTTP Server (HTTP-демон, реализующий протокол HTTP в основе WWW);
- Агенты управления сетью для администрирования телеком-оборудования;
- Моделирование толпы в задачах безопасности или 3D-графики;
- беспроводной «маячковый агент» для «электронных поводков» и управления электронными замками совместно с другими агентами;
- автономные агенты с зашумлённым поведением для координации коллективов онлайн[11].
Программные боты приобретают всё большее значение в области разработки ПО[12].
Агенты также применяются в задачах информационной безопасности:
- Агенты предотвращения потерь данных (Data Loss Prevention, DLP)[13] — анализируют действия пользователей и сетевой трафик, сопоставляют их с политиками безопасности и в случае необходимости блокируют, разрешают либо уведомляют. Расширенные DLP-агенты иногда выполняют функции EDR.
- Агенты EDR — мониторят все действия на конечной точке (endpoint), чтобы выявлять и пресекать злонамеренную активность.
- Агенты Cloud Access Security Broker (CASB) — осуществляют проверку трафика в облачные приложения по аналогии с DLP.
Вопросы проектирования
При создании агентных систем учитывают:
- способы планирования и синхронизации действий агентов;
- выбор приоритетов для выполняемых задач;
- методы коллаборации и привлечения ресурсов;
- вопросы мобильности агентов (перенос состояния и активация в новых средах);
- способы анализа состояния среды и изменение поведения при изменениях среды;
- механизмы коммуникации и обмена сообщениями;
- организацию иерархий агентов (например, агенты исполнения задач, агенты планирования, поставщики ресурсов).
Для эффективного совместного функционирования агенты должны использовать общие семантики для данных, что достигается публикацией метаданных.
Выделяют два аспекта обработки данных агентами:
- внутренние механизмы — хранение состояния и онтологии для представления знаний;
- протоколы взаимодействия — стандарты описания обмена заданиями и данными.
Агентные системы часто применяются для моделирования реальных систем с поддержкой параллелизма.
- Агентная машина — движки различного типа, реализующие заданный уровень «интеллекта»;
- Содержимое агента — данные, используемые при рассуждениях и обучении;
- Доступ агента — методы получения информации и осуществления действий;
- Безопасность агента — задачи общей компьютерной безопасности плюс специфические вопросы распределённых агентных систем.
Агент через механизмы доступа извлекает данные локально либо из удалённых БД, получает новостные ленты, мониторит форумы, вилки и т. п. Полученный контент может фильтроваться по источникам, затем подвергаться анализу для выделения сигнатур или ключевых слов. Извлечённое знание обрабатывается механизмами вывода для принятия решения. В случае совпадения (совпадение событий с правилами пользователя), агент проводит дополнительный поиск по найденному; далее может следовать активное действие — например, уведомление пользователя о важном событии. Это действие подтверждается безопасностью, после чего отправляется пользователю. В случае быстрой отклика агент корректирует весовую значимость данного класса событий.
Боты могут использоваться как на благо, так и во вред. Для отделения легитимных ботов рекомендуется использовать идентификацию — задавать специальный user-agent в HTTP-заголовке, валидировать исходный IP, следовать правилам сайта в robots.txt и учитывать ограничения по скорости обхода[14].
- DAML — язык разметки агентов от DARPA
- 3APL — язык программирования искусственных автономных агентов
- GOAL agent programming language
- Открытая агентная архитектура (Open Agent Architecture, OAA)
- Web Ontology Language (OWL)
- демоны в UNIX-подобных системах
- Java Agent Template (JAT)
- Java Agent Development Framework (JADE)
- SARL — язык программирования агентов
Примечания
Литература
- Nwana, H. S. (1996). “Software Agents: An Overview”. Knowledge Engineering Review. 21 (3): 205—244. DOI:10.1017/s026988890000789x. S2CID 7839197.
- Schermer, B. W. Software agents, surveillance, and the right to privacy: A legislative framework for agent-enabled surveillance. — Leiden University Press, 2007. — Vol. 21. — P. 140, 205–244. — ISBN 978-0-596-00712-6.
- Franklin, S. Is it an Agent, or just a Program?: A Taxonomy for Autonomous Agents // Intelligent Agents III Agent Theories, Architectures, and Languages / S. Franklin, A. Graesser. — University of Memphis, Institute for Intelligent Systems, 1996. — Vol. 1193. — P. 21–35. — ISBN 978-3-540-62507-0. — doi:10.1007/BFb0013570.
Ссылки
- Обзор программных агентов Software Agents: An Overview (англ.). agents.umbc.edu. Дата обращения: 20 июня 2024. Архивировано 17 июля 2011 года.
- The Foundation for Intelligent Physical Agents (FIPA)
- JADE — Java Agent Developing Framework, фреймворк с открытым кодом
- Европейский центр исследований программных агентов European Software-Agent Research Center (англ.). software-agent.eu. Дата обращения: 20 июня 2024. Архивировано 14 сентября 2017 года.
- JAFIMA — Java-фреймворк агентов
- SemanticAgent — платформа разработки агентов SWRL на базе JADE
- Mobile-C — мультиагентная платформа для C/C++
- HLL — проект High-Level Logic (HLL) с открытым кодом
- KATO — инструмент для PHP и Java-разработчиков агентов