Agente de software - Software agent

Em ciência da computação , um agente de software é um programa de computador que atua para um usuário ou outro programa em uma relação de agência, que deriva do latim agere (fazer): um acordo para agir em seu nome. Tal "ação em nome de" implica na autoridade para decidir qual ação, se houver, é apropriada. Os agentes são coloquialmente conhecidos como bots , de robô . Eles podem ser incorporados, como quando a execução é emparelhada com um corpo de robô, ou como um software como um chatbot executando em um telefone (por exemplo, Siri ) ou outro dispositivo de computação. Os agentes de software podem ser autônomos ou trabalhar em conjunto com outros agentes ou pessoas. Os agentes de software que interagem com as pessoas (por exemplo , chatbots , ambientes de interação humano-robô ) podem possuir qualidades semelhantes às humanas, como compreensão da linguagem natural e fala, personalidade ou incorporar a forma humanóide (ver Asimo ).

Os conceitos relacionados e derivados incluem agentes inteligentes (em particular exibindo alguns aspectos da inteligência artificial , como raciocínio ), agentes autônomos (capazes de modificar os métodos para atingir seus objetivos), agentes distribuídos (sendo executados em computadores fisicamente distintos), multiagente sistemas (agentes distribuídos que trabalham juntos para atingir um objetivo que não poderia ser realizado por um único agente agindo sozinho) e agentes móveis (agentes que podem realocar sua execução em processadores diferentes).

Conceitos

Os atributos básicos de um agente de software autônomo são que os agentes

  • não são estritamente invocados para uma tarefa, mas se ativam,
  • pode residir em estado de espera em um host, percebendo o contexto,
  • pode obter o status de execução em um host nas condições iniciais,
  • não requerem interação do usuário,
  • pode invocar outras tarefas, incluindo comunicação.
Categoria Nwana de Agente de Software

O termo "agente" descreve uma abstração de software , uma ideia ou um conceito, semelhante aos termos OOP , como métodos, funções e objetos. O conceito de agente fornece uma maneira conveniente e poderosa de descrever uma entidade de software complexa que é capaz de agir com certo grau de autonomia para realizar tarefas em nome de seu hospedeiro. Mas, ao contrário dos objetos, que são definidos em termos de métodos e atributos , um agente é definido em termos de seu comportamento.

Vários autores propuseram diferentes definições de agentes, que comumente incluem conceitos como

  • persistência (o código não é executado sob demanda, mas é executado continuamente e decide por si mesmo quando deve realizar alguma atividade)
  • autonomia (os agentes têm capacidades de seleção de tarefas, priorização, comportamento direcionado a objetivos, tomada de decisão sem intervenção humana)
  • habilidade social (os agentes são capazes de envolver outros componentes por meio de algum tipo de comunicação e coordenação, eles podem colaborar em uma tarefa)
  • reatividade (os agentes percebem o contexto em que operam e reagem a ele de forma adequada).

Distinguir agentes de programas

Todos os agentes são programas, mas nem todos os programas são agentes. Comparar o termo com conceitos relacionados pode ajudar a esclarecer seu significado. Franklin & Graesser (1997) discutem quatro noções-chave que distinguem agentes de programas arbitrários: reação ao ambiente, autonomia, orientação para objetivos e persistência.

Agentes diferenciadores intuitivos de objetos

  • Agentes são mais autônomos do que objetos .
  • Os agentes têm comportamento flexível: reativo , pró-ativo , social.
  • Os agentes têm pelo menos um thread de controle, mas podem ter mais.

Distinguir agentes de sistemas especialistas

  • Os sistemas especialistas não estão acoplados ao seu ambiente.
  • Os sistemas especialistas não são projetados para comportamento reativo e proativo.
  • Os sistemas especialistas não consideram a habilidade social.

Distinguir agentes de software inteligentes de agentes inteligentes em IA

  • Agentes inteligentes (também conhecidos como agentes racionais ) não são apenas programas de computador: eles também podem ser máquinas, seres humanos, comunidades de seres humanos (como empresas ) ou qualquer coisa que seja capaz de um comportamento direcionado a um objetivo.
( Russell & Norvig 2003 )

Impacto dos agentes de software

Os agentes de software podem oferecer vários benefícios aos usuários finais, automatizando tarefas complexas ou repetitivas. No entanto, existem impactos organizacionais e culturais dessa tecnologia que precisam ser considerados antes da implementação de agentes de software.

Impacto organizacional

Impacto de contentamento no trabalho e satisfação no trabalho

As pessoas gostam de realizar tarefas fáceis, proporcionando a sensação de sucesso, a menos que a repetição de uma tarefa simples esteja afetando o resultado geral. Em geral, a implementação de agentes de software para executar requisitos administrativos fornece um aumento substancial na satisfação no trabalho, já que administrar seu próprio trabalho nunca agrada o trabalhador. O esforço liberado serve para um maior grau de engajamento nas tarefas substanciais do trabalho individual. Conseqüentemente, os agentes de software podem fornecer o básico para implementar o trabalho autocontrolado, livre de controles hierárquicos e interferências. Tais condições podem ser garantidas pela aplicação de agentes de software para suporte formal necessário.

Impacto cultural

Os efeitos culturais da implementação de agentes de software incluem aflição de confiança, erosão de habilidades, desgaste de privacidade e distanciamento social. Alguns usuários podem não se sentir totalmente confortáveis ​​delegando totalmente tarefas importantes para aplicativos de software. Aqueles que passam a depender apenas de agentes inteligentes podem perder habilidades importantes, por exemplo, relacionadas à alfabetização informacional. Para agir em nome de um usuário, um agente de software precisa ter um entendimento completo do perfil do usuário, incluindo suas preferências pessoais. Isso, por sua vez, pode levar a problemas de privacidade imprevisíveis. Quando os usuários passam a depender mais de seus agentes de software, especialmente para atividades de comunicação, eles podem perder o contato com outros usuários humanos e olhar para o mundo com os olhos de seus agentes. Essas consequências são o que os pesquisadores e usuários de agentes devem considerar ao lidar com tecnologias de agentes inteligentes.

História

O conceito de agente pode ser rastreado até o modelo de ator de Hewitt (Hewitt, 1977) - "Um objeto autocontido, interativo e de execução simultânea, possuindo estado interno e capacidade de comunicação."

Para ser mais acadêmico, os sistemas de agente de software são uma evolução direta dos Sistemas Multi-Agente (MAS). O MAS evoluiu da Inteligência Artificial Distribuída (DAI), Resolução de Problemas Distribuídos (DPS) e AI Paralela (PAI), herdando assim todas as características (boas e más) da DAI e AI .

O vídeo " Knowledge Navigator " de John Sculley , de 1987, retratou a imagem de um relacionamento entre usuários finais e agentes. Sendo o primeiro ideal, este campo experimentou uma série de implementações de cima para baixo malsucedidas, em vez de uma abordagem peça por peça, de baixo para cima. A gama de tipos de agentes é agora (desde 1990) ampla: WWW, mecanismos de pesquisa, etc.

Exemplos de agentes de software inteligentes

Agentes compradores (bots de compras)

Os agentes compradores viajam por uma rede (por exemplo, a Internet) recuperando informações sobre bens e serviços. Esses agentes, também conhecidos como 'bots de compras', trabalham com muita eficiência para produtos de commodities, como CDs, livros, componentes eletrônicos e outros produtos de tamanho único. Os agentes compradores são normalmente otimizados para permitir serviços de pagamento digital usados ​​em comércio eletrônico e negócios tradicionais.

Agentes de usuário (agentes pessoais)

Os agentes do usuário, ou agentes pessoais, são agentes inteligentes que agem em seu nome. A esta categoria pertencem os agentes inteligentes que já realizam, ou irão realizar em breve, as seguintes tarefas:

  • Verifique seu e-mail, classifique-o de acordo com a ordem de preferência do usuário e avise-o quando chegarem e-mails importantes.
  • Jogue no computador como seu oponente ou patrulhe as áreas de jogo para você.
  • Reúna notícias personalizadas para você. Existem várias versões destes, incluindo CNN.
  • Encontre informações para você sobre o assunto de sua escolha.
  • Preencha formulários na Web automaticamente para você, armazenando suas informações para referência futura
  • Digitalize páginas da web procurando e destacando o texto que constitui a parte "importante" das informações nelas
  • Discuta com você tópicos que vão desde seus medos mais profundos até esportes
  • Facilite as tarefas de busca de empregos online digitalizando quadros de empregos conhecidos e enviando o currículo para oportunidades que atendam aos critérios desejados
  • Sincronização de perfil em redes sociais heterogêneas

Agentes de monitoramento e vigilância (preditivos)

Os Agentes de Monitoramento e Vigilância são usados ​​para observar e relatar os equipamentos, geralmente sistemas de computador. Os agentes podem acompanhar os níveis de estoque da empresa, observar os preços dos concorrentes e retransmiti-los para a empresa, observar a manipulação de ações por informações privilegiadas e rumores, etc.

monitoramento de serviço

Por exemplo, o Jet Propulsion Laboratory da NASA tem um agente que monitora o estoque, o planejamento, programa pedidos de equipamentos para manter os custos baixos e gerencia as instalações de armazenamento de alimentos. Esses agentes geralmente monitoram redes de computadores complexas que podem rastrear a configuração de cada computador conectado à rede.

Um caso especial de agentes de Monitoramento e Vigilância são organizações de agentes usados ​​para emular o processo de Tomada de Decisão Humana durante as operações táticas. Os agentes monitoram o status dos ativos (munições, armas disponíveis, plataformas para transporte, etc.) e recebem Metas (Missões) de agentes de nível superior. Os Agentes, então, buscam as Metas com os Ativos em mãos, minimizando as despesas dos Ativos e, ao mesmo tempo, maximizando o Alcance das Metas. (Consulte Popplewell, "Agentes e aplicabilidade")

Agentes de mineração de dados

Este agente usa tecnologia da informação para encontrar tendências e padrões em uma abundância de informações de muitas fontes diferentes. O usuário pode classificar essas informações para encontrar qualquer informação que esteja procurando.

Um agente de mineração de dados opera em um data warehouse descobrindo informações. Um 'data warehouse' reúne informações de muitas fontes diferentes. "Data mining" é o processo de examinar o data warehouse para encontrar informações que você possa usar para agir, como maneiras de aumentar as vendas ou manter os clientes que estão pensando em desertar.

'Classificação' é um dos tipos mais comuns de mineração de dados, que encontra padrões nas informações e os categoriza em diferentes classes. Os agentes de mineração de dados também podem detectar grandes mudanças nas tendências ou um indicador-chave e podem detectar a presença de novas informações e alertá-lo sobre isso. Por exemplo, o agente pode detectar um declínio na indústria da construção para uma economia; com base nesta informação retransmitida, as construtoras poderão tomar decisões inteligentes quanto à contratação / demissão de funcionários ou à compra / locação de equipamentos de forma a melhor se adequar à sua empresa.

Agentes de rede e comunicação

Alguns outros exemplos de agentes inteligentes atuais incluem alguns filtros de spam , bots de jogos e ferramentas de monitoramento de servidor. Os bots de indexação de mecanismos de pesquisa também se qualificam como agentes inteligentes.

  • Agente de usuário - para navegar na World Wide Web
  • Agente de transferência de correio - Para servir e-mail, como o Microsoft Outlook . Porque? Ele se comunica com o servidor de correio POP3, sem que os usuários tenham que entender os protocolos de comando POP3 . Ele ainda tem conjuntos de regras que filtram e-mails para o usuário, poupando-o do trabalho de ter que fazer isso sozinho.
  • Agente SNMP
  • Em servidores de rede estilo Unix, httpd é um daemon HTTP que implementa o protocolo de transferência de hipertexto na raiz da World Wide Web
  • Agentes de gerenciamento usados ​​para gerenciar dispositivos de telecomunicações
  • Simulação de multidão para planejamento de segurança ou computação gráfica 3D ,
  • O agente de beaconing sem fio é um processo simples hospedado entidade de tarefa única para a implementação de bloqueio sem fio ou leash eletrônico em conjunto com agentes de software mais complexos hospedados, por exemplo, em receptores sem fio.
  • Uso de agentes autônomos (deliberadamente equipados com ruído) para otimizar a coordenação em grupos online.

Agentes de desenvolvimento de software (também conhecidos como bots de software)

Os bots de software estão se tornando importantes na engenharia de software. Um exemplo de bot de software é um bot que repara automaticamente falhas de construção de integração contínua.

Agentes de segurança

Os agentes também são usados ​​em aplicativos de segurança de software para interceptar, examinar e agir em vários tipos de conteúdo. Os exemplos incluem:

  • Agentes de prevenção de perda de dados (DLP) - examinam as operações do usuário em um computador ou rede, compare com as políticas que especificam as ações permitidas e tome as medidas adequadas (por exemplo, permitir, alertar, bloquear). Os agentes DLP mais abrangentes também podem ser usados ​​para executar funções EDR.
  • Agentes de detecção e resposta de endpoint (EDR) - monitoram todas as atividades em um computador endpoint para detectar e responder a atividades maliciosas
  • Agentes do agente de segurança de acesso à nuvem (CASB) - semelhantes aos agentes DLP, mas examinando o tráfego que vai para os aplicativos da nuvem

Problemas de design

Questões a serem consideradas no desenvolvimento de sistemas baseados em agentes incluem

  • como as tarefas são agendadas e como a sincronização das tarefas é alcançada
  • como as tarefas são priorizadas pelos agentes
  • como os agentes podem colaborar ou recrutar recursos,
  • como os agentes podem ser reinstanciados em ambientes diferentes e como seu estado interno pode ser armazenado,
  • como o ambiente será sondado e como uma mudança de ambiente leva a mudanças comportamentais dos agentes
  • como mensagens e comunicação podem ser alcançadas,
  • quais hierarquias de agentes são úteis (por exemplo, agentes de execução de tarefas, agentes de agendamento, provedores de recursos ...).

Para que os agentes de software trabalhem juntos de forma eficiente, eles devem compartilhar a semântica de seus elementos de dados. Isso pode ser feito fazendo com que os sistemas de computador publiquem seus metadados .

A definição do processamento do agente pode ser abordada a partir de duas direções inter-relacionadas:

  • processamento de estado interno e ontologias para representar o conhecimento
  • protocolos de interação - padrões para especificar a comunicação de tarefas

Os sistemas de agente são usados ​​para modelar sistemas do mundo real com simultaneidade ou processamento paralelo.

  • Agente de máquinas - motores de vários tipos, que suportam os vários graus de inteligência
  • Conteúdo do Agente - Dados empregados pela máquina de Raciocínio e Aprendizagem
  • Acesso do Agente - Métodos para permitir que a máquina perceba o conteúdo e execute ações como resultados do Raciocínio
  • Segurança do Agente - Preocupações relacionadas à computação distribuída, aumentadas por algumas preocupações especiais relacionadas aos agentes

O agente usa seus métodos de acesso para ir a bancos de dados locais e remotos para buscar conteúdo. Esses métodos de acesso podem incluir a configuração de entrega de fluxo de notícias para o agente, ou recuperação de quadros de avisos, ou usando um spider para navegar na web. O conteúdo recuperado dessa forma provavelmente já está parcialmente filtrado - pela seleção do feed de notícias ou dos bancos de dados pesquisados. O próximo agente pode usar sua pesquisa detalhada ou maquinário de processamento de linguagem para extrair palavras-chave ou assinaturas do corpo do conteúdo que foi recebido ou recuperado. Esse conteúdo abstraído (ou evento) é então passado ao mecanismo de raciocínio ou inferência do agente para decidir o que fazer com o novo conteúdo. Este processo combina o conteúdo do evento com o conteúdo baseado em regras ou de conhecimento fornecido pelo usuário. Se esse processo encontrar um bom acerto ou correspondência no novo conteúdo, o agente pode usar outra peça de seu mecanismo para fazer uma pesquisa mais detalhada no conteúdo. Finalmente, o agente pode decidir realizar uma ação com base no novo conteúdo; por exemplo, para notificar o usuário de que ocorreu um evento importante. Esta ação é verificada por uma função de segurança e então dada a autoridade do usuário. O agente usa um método de acesso do usuário para entregar essa mensagem ao usuário. Caso o usuário confirme que o evento é importante agindo rapidamente na notificação, o agente também pode empregar seu maquinário de aprendizagem para aumentar sua ponderação para este tipo de evento.

Os bots podem agir em nome de seus criadores para fazer o bem ou o mal. Existem algumas maneiras pelas quais os bots podem ser criados para demonstrar que são projetados com a melhor intenção e não são feitos para causar danos. Isso é feito primeiro fazendo com que um bot se identifique no cabeçalho HTTP do agente do usuário ao se comunicar com um site. O endereço IP de origem também deve ser validado para se estabelecer como legítimo. Em seguida, o bot também deve sempre respeitar o arquivo robots.txt de um site, já que ele se tornou o padrão na maior parte da web. E assim como respeitar o arquivo robots.txt, os bots devem evitar ser muito agressivos e respeitar as instruções de atraso do rastreamento.

Noções e estruturas para agentes

Veja também

Referências

links externos