En informática , un agente de software es un programa de computadora que actúa para un usuario u otro programa en una relación de agencia.
El término agente se deriva del latín agere (hacer): un acuerdo para actuar en nombre de uno. Tal "acción en nombre de" implica la autoridad para decidir qué acción, si alguna, es apropiada. [1] [2] Algunos agentes se conocen coloquialmente como bots , de robot . Pueden estar encarnados, como cuando la ejecución se empareja con un cuerpo de robot, o como software como un chatbot que se ejecuta en una computadora , como un dispositivo móvil , p. ej. Siri . Los agentes de software pueden ser autónomos o trabajar junto con otros agentes o personas. Los agentes de software que interactúan con personas (p. ej. chatbots , entornos de interacción humano-robot ) pueden poseer cualidades similares a las humanas, como comprensión del lenguaje natural y el habla, personalidad o encarnar una forma humanoide (ver Asimo ).
Los conceptos relacionados y derivados incluyen agentes inteligentes (en particular aquellos que exhiben algunos aspectos de inteligencia artificial , como el razonamiento ), agentes autónomos (capaces de modificar los métodos para lograr sus objetivos), agentes distribuidos (que se ejecutan en computadoras físicamente distintas), sistemas multiagente (agentes distribuidos que trabajan juntos para lograr un objetivo que no podría lograrse con un solo agente actuando solo) y agentes móviles (agentes que pueden reubicar su ejecución en diferentes procesadores).
Los atributos básicos de un agente de software autónomo son que los agentes:
El concepto de agente proporciona una forma conveniente y poderosa de describir una entidad de software compleja que es capaz de actuar con un cierto grado de autonomía para realizar tareas en nombre de su anfitrión. Pero a diferencia de los objetos, que se definen en términos de métodos y atributos , un agente se define en términos de su comportamiento. [3]
Diversos autores han propuesto diferentes definiciones de agentes, estas comúnmente incluyen conceptos como:
Todos los agentes son programas, pero no todos los programas son agentes. Contrastar el término con conceptos relacionados puede ayudar a aclarar su significado. Franklin y Graesser (1997) [4] analizan cuatro nociones clave que distinguen a los agentes de los programas arbitrarios: reacción al entorno, autonomía, orientación a objetivos y persistencia .
Los agentes de software pueden ofrecer diversos beneficios a sus usuarios finales al automatizar tareas complejas o repetitivas. [6] Sin embargo, existen impactos organizacionales y culturales de esta tecnología que deben considerarse antes de implementar agentes de software.
A las personas les gusta realizar tareas sencillas que les proporcionen una sensación de éxito, a menos que la repetición de tareas sencillas afecte al resultado general. En general, la implementación de agentes de software para realizar tareas administrativas proporciona un aumento sustancial en la satisfacción laboral, ya que administrar su propio trabajo nunca satisface al trabajador. El esfuerzo liberado sirve para un mayor grado de compromiso en las tareas sustanciales del trabajo individual. Por lo tanto, los agentes de software pueden proporcionar los elementos básicos para implementar un trabajo autocontrolado, liberado de controles jerárquicos e interferencias. [7] Estas condiciones se pueden garantizar mediante la aplicación de agentes de software para el soporte formal requerido.
Los efectos culturales de la implementación de agentes de software incluyen pérdida de confianza, erosión de habilidades, pérdida de privacidad y distanciamiento social. Algunos usuarios pueden no sentirse del todo cómodos delegando tareas importantes en aplicaciones de software. Aquellos que comiencen a depender únicamente de agentes inteligentes pueden perder habilidades importantes, por ejemplo, relacionadas con la alfabetización informática. Para actuar en nombre de un usuario, un agente de software debe tener un conocimiento completo del perfil de un usuario, incluidas sus preferencias personales. Esto, a su vez, puede conducir a problemas de privacidad impredecibles. Cuando los usuarios comienzan a confiar más en sus agentes de software, especialmente para actividades de comunicación, pueden perder contacto con otros usuarios humanos y mirar el mundo con los ojos de sus agentes. Estas consecuencias son las que los investigadores de agentes y los usuarios deben considerar al tratar con tecnologías de agentes inteligentes. [8]
El concepto de agente se remonta al Modelo de Actor de Hewitt (Hewitt, 1977): "Un objeto autónomo, interactivo y de ejecución simultánea, que posee un estado interno y capacidad de comunicación". [ cita requerida ]
Para ser más académicos, los sistemas de agentes de software son una evolución directa de los sistemas multiagente (MAS). Los MAS evolucionaron a partir de la inteligencia artificial distribuida (DAI), la resolución de problemas distribuida (DPS) y la inteligencia artificial paralela (PAI), heredando así todas las características (buenas y malas) de la DAI y la IA .
El vídeo " Knowledge Navigator " de John Sculley de 1987 retrataba una imagen de la relación entre los usuarios finales y los agentes. Al ser un primer paso ideal, este campo experimentó una serie de implementaciones de arriba hacia abajo sin éxito, en lugar de un enfoque pieza por pieza y de abajo hacia arriba. La gama de tipos de agentes es ahora (a partir de 1990) amplia: WWW, motores de búsqueda, etc.
Los agentes de compra [9] viajan por una red (por ejemplo, Internet) recuperando información sobre bienes y servicios. Estos agentes, también conocidos como "bots de compra", funcionan de manera muy eficiente para productos básicos como CD, libros, componentes electrónicos y otros productos de talla única. Los agentes de compra suelen estar optimizados para permitir los servicios de pago digitales utilizados en el comercio electrónico y en las empresas tradicionales. [10]
Los agentes de usuario, o agentes personales, son agentes inteligentes que realizan acciones en su nombre. En esta categoría se encuentran aquellos agentes inteligentes que ya realizan, o realizarán en breve, las siguientes tareas:
Los agentes de control y vigilancia se utilizan para observar y generar informes sobre equipos, generalmente sistemas informáticos. Los agentes pueden realizar un seguimiento de los niveles de inventario de la empresa, observar los precios de los competidores y transmitirlos a la empresa, observar la manipulación de las acciones mediante información privilegiada y rumores, etc.
Por ejemplo, el Laboratorio de Propulsión a Chorro de la NASA tiene un agente que supervisa el inventario, la planificación, programa los pedidos de equipos para mantener bajos los costos y administra las instalaciones de almacenamiento de alimentos. Estos agentes generalmente monitorean redes informáticas complejas que pueden realizar un seguimiento de la configuración de cada computadora conectada a la red.
Un caso especial de agentes de Monitoreo y Vigilancia son las organizaciones de agentes que se utilizan para emular el proceso de Toma de Decisiones Humanas durante las operaciones tácticas. Los agentes monitorean el estado de los activos (municiones, armas disponibles, plataformas para el transporte, etc.) y reciben Objetivos (Misiones) de agentes de nivel superior. Los Agentes luego persiguen los Objetivos con los Activos a mano, minimizando el gasto de los Activos mientras maximizan el Logro de los Objetivos. (Véase Popplewell, "Agentes y Aplicabilidad")
Este agente utiliza tecnología de la información para encontrar tendencias y patrones en una gran cantidad de información proveniente de muchas fuentes diferentes. El usuario puede ordenar esta información para encontrar la información que busca.
Un agente de minería de datos opera en un almacén de datos y descubre información. Un "almacén de datos" reúne información de muchas fuentes diferentes. La "minería de datos" es el proceso de buscar en el almacén de datos información que se pueda utilizar para tomar medidas, como formas de aumentar las ventas o conservar a los clientes que están considerando abandonar el servicio.
La "clasificación" es uno de los tipos más comunes de minería de datos, que encuentra patrones en la información y los clasifica en diferentes clases. Los agentes de minería de datos también pueden detectar cambios importantes en las tendencias o en un indicador clave y pueden detectar la presencia de nueva información y alertarlo al respecto. Por ejemplo, el agente puede detectar una caída en la industria de la construcción de una economía; en función de esta información transmitida, las empresas de construcción podrán tomar decisiones inteligentes con respecto a la contratación o despido de empleados o la compra o arrendamiento de equipos para que se adapten mejor a su empresa.
Otros ejemplos de agentes inteligentes actuales incluyen algunos filtros de spam , bots de juegos y herramientas de monitoreo de servidores. Los bots de indexación de motores de búsqueda también califican como agentes inteligentes.
Los bots de software están adquiriendo importancia en la ingeniería de software. [12]
Los agentes también se utilizan en aplicaciones de seguridad de software para interceptar, examinar y actuar sobre diversos tipos de contenido. Algunos ejemplos son:
Las cuestiones a tener en cuenta en el desarrollo de sistemas basados en agentes incluyen:
Para que los agentes de software trabajen juntos de manera eficiente, deben compartir la semántica de sus elementos de datos. Esto se puede lograr haciendo que los sistemas informáticos publiquen sus metadatos .
La definición de procesamiento de agentes puede abordarse desde dos direcciones interrelacionadas:
Los sistemas de agentes se utilizan para modelar sistemas del mundo real con concurrencia o procesamiento paralelo.
El agente utiliza sus métodos de acceso para acceder a bases de datos locales y remotas en busca de contenido. Estos métodos de acceso pueden incluir la configuración de la entrega de noticias al agente, la recuperación de información desde tablones de anuncios o el uso de una araña para recorrer la Web. El contenido que se recupera de esta manera probablemente ya esté parcialmente filtrado (por la selección de la fuente de noticias o las bases de datos que se buscan). A continuación, el agente puede utilizar su maquinaria de búsqueda detallada o procesamiento del lenguaje para extraer palabras clave o firmas del cuerpo del contenido que se ha recibido o recuperado. Este contenido (o evento) abstraído se pasa a continuación a la maquinaria de razonamiento o inferencia del agente para decidir qué hacer con el nuevo contenido. Este proceso combina el contenido del evento con el contenido basado en reglas o de conocimiento proporcionado por el usuario. Si este proceso encuentra una coincidencia en el nuevo contenido, el agente puede utilizar otra parte de su maquinaria para realizar una búsqueda más detallada del contenido. Finalmente, el agente puede decidir realizar una acción en función del nuevo contenido; por ejemplo, notificar al usuario que se ha producido un evento importante. Esta acción es verificada por una función de seguridad y luego se le otorga la autoridad al usuario. El agente utiliza un método de acceso de usuario para entregarle ese mensaje. Si el usuario confirma que el evento es importante al actuar rápidamente ante la notificación, el agente también puede emplear su mecanismo de aprendizaje para aumentar su ponderación para este tipo de evento.
Los bots pueden actuar en nombre de sus creadores para hacer el bien y el mal. Hay algunas formas de crear bots para demostrar que están diseñados con la mejor intención y no están diseñados para hacer daño. Esto se hace primero haciendo que un bot se identifique en el encabezado HTTP del agente de usuario cuando se comunica con un sitio. La dirección IP de origen también debe validarse para establecerse como legítima. A continuación, el bot también debe respetar siempre el archivo robots.txt de un sitio, ya que se ha convertido en el estándar en la mayor parte de la web. Y al igual que con el archivo robots.txt, los bots deben evitar ser demasiado agresivos y respetar cualquier instrucción de retraso de rastreo. [14]
{{cite journal}}
: Requiere citar revista |journal=
( ayuda ){{cite journal}}
: Requiere citar revista |journal=
( ayuda )