Comunicação entre Agentes Inteligentes Ryan Leite Albuquerque < [email protected] > Motivação : Ubiqüidade Ubiqüidade: O Do latim “ubiquu” que está em todo lugar a toda hora Ubiqüidade Computacional Os serviços computacionais poderão ser usados em toda parte e a qualquer hora “Jetsons”, “Sexto Dia”, “Matrix”. Algo familiar ? Cenário SeDi = Secretário Digital Júlia é Engenheira de Tráfego Motivação : Cenário de um SeDi Chegada ao Aeroporto Visto de entrada Caminho até o ponto de ônibus (óculos) A Caminho do Hotel Deficiente visual ajudado pelo SeDi e o SeDi do ônibus Compras Localização e comparação das lojas que vendem o produto Conferência Nível de ansiedade (monitoramento) Reprodução do CD da Enia Demonstrações online Animações holográficas Conexão com as câmeras online nas avenidas Motivação : Cenário de um SeDi Comemoração Ninguém tem que combinar nada Pagamento Os SeDis decidem onde ir baseados nos perfis Automático. Sem estresse. Da melhor forma para Júlia. Voltando pra casa... Putz! E as compras? O presente já está sendo entregue Chegando em casa Suprimentos Curriculum Motivação : Agentes Reflexão Como implemnetar? Cenário altamente dinâmico Integração de diversas mídias e dispositivos Sugestão: usar Agentes Inteligentes Agentes Conjunto de metáforas, técnicas e ferramentas Ideal para aplicações autônomas, móveis e inseridas em uma sociedade Naturalmente capazes de: Reagir de forma autônoma e reativa Raciocinar de forma pró-ativa Adaptar-se ao ambiente onde estão inseridos Iteragir com outras entidades Motivação : Agentes Iteração Solução compartilhada de problemas Requisito básico Mecanismo de Comunicação Linguagem comum Infra-estrutura Mas como implementar? Roteiro Conceitos Básicos Tipos de Comunicação Atos da Fala Linguagens de Comunicação Linguagens de Conteúdo Ontologias KQML FIPA ACL Exemplo Ferramentas Conceitos Básicos Tipos de comunicação Telepatia Acesso direto à uma Knowledge Base (KB) Problemas Lendo a mente... Cada um com sua KB KB compartilhada Podem usar o mesmo símbolo para denotar coisas diferentes Podem usar símbolos diferentes para denotar a mesma coisa Linguagem de Comunicação de Agentes (LCA) Comum Atos da Fala Categorização das expressões humanas qto a Intenção do locutor Impacto ou reação do ato comunicativo causado no estado mental do receptor Existem aproximadamente 4600 atos de fala! Não é esse o objetivo de uma ACL Ajuda a decidir as primitivas das ACLs Todo primitiva de uma ACL é um ato de fala Atos da Fala Linguagem Humana Atos comunicativos são interpretados a partir da mensagem e do contexto Nem sempre esta interpretação é óbvia Dificuldades “Cale-se !” (Comando) “Por favor, você pode se calar ?” (Pedido) “Você vai se calar ou não ?” (Pergunta) “Eu gostaria que você se calasse.” (Informação) Atos da Fala : Categorias Representativos Expressam uma Proposta Ex: “Vamos jogar boliche amanhã?” Diretivos Expressam Promessa ou Ameaça Ex: “Eu prometo doar R$1.000,00.” Expressivos Expressam um Pedido ou Comando Ex: “Cale-se!” Comissivos Declarativos Expressam Desculpas ou Agradecimentos Ex: “Desculpe pelo atraso?” Mudam o Estado do Mundo Ex: “Eu os declaro marido e mulher!” Veredictos Expressam um Julgamento Ex: “West é criminoso.” Atos da Fala Ato Locucionário Efeito Ilocucionário O que o locutor entende por algo Efeito Perlocucionário Emissão da mensagem O real efeito do ato comunicativo no receptor Ideal Efeito perlocucionário previsível Para um dado Ato Locucionário, Efeito Ilocucionário = Efeito Perlocucionário. Em miúdos, prever a reação do receptor! Linguagens de Comunicação Baseadas na Teoria dos Atos da Fala Objetiva a troca de informações entre agentes Transporte de mensagens na rede através de protocolos de baixo nível SMTP, TCP/IP, IIOP ou HTTP Esse transporte é transparente para o usuário Para o KSE, uma LCA é dividida em: Ontologia Linguagem interna (lógica) Codificação do conteúdo Linguagem externa Ato Locucionário (Performativa) Encapsulamento de infomações para o roteamento Ontologias Definição É um vocabulário cujos termos são relacionados a um certo domínio e precisamente definidos por textos como entradas de dicionário ou de enciclopédias Os relacionamentos entre esses termos também são especificadas usando técnicas de modelagem formal Uma vez especificada… Pode-se construir uma KB relacionadas ao domínio coberto pela ontologia Esta KB pode ser compartilhada com outros agentes interessados em conhecimentos sobre este domínio Linguagem Interna (LI) O que é? Linguagem em que deve ser codificado o conhecimento que se deseja compartilhar com o destinatário da mensagem Exemplos KIF ( Knowledge Interchange Format ) Versão prefixada (“LISP like”) da lógica clássica de primeira ordem Não está totalmente implementada para uso comercial Produzida pelo KSE Linguagem natural Prolog, SQL, LISP Mensagem RDF (Resource Description Framework) XML Ato Comunicativo Conteúdo Linguagem Externa ( LE ) O que é ? Linguagem que encapsula: O ato comunicativo = ato locucionário = performativa Informações para o roteamento Agente receptor Ontologia Linguagem interna Conteúdo … Exemplos KQML FIPA ACL KQML Knowledge Query and Manipulation Language KQML Objetivo Interoperabilidade entre agentes de software em aplicações distribuídas e/ou heterogênea Pioneira ( KSE – 1994 ) Aplicações eCommerce (negociação) Jogos BDs distribuídos e/ou heterogêneos Integração de tecnologias ... KQML : Características Principais características da linguagem: Independente de Linguagem Interna Independente de Ontologia Independente de Protocolos de Transporte de Rede Comunicação baseada nos atos da fala Performativas Sugere o uso de Agentes Facilitadores Camadas: Comunicação, Conteúdo e Mensagem KQML : Sintaxe ( performativa ) :sender <word> :receiver <word> :reply-with <word> :in-reply-to <word> :language <word> :ontology <word> :content <expression> Camada de Comunicação Camada de Mensagem Camada de Conteúdo KQML : Performativas Performativas Típicas tell : informa que o conteúdo da mensagem está na KB do locutor ask-if : o locutor quer saber se o conteúdo de sua mensagem é verdadeiro para o receptor advertise : o locutor quer que o receptor saiba que ele pode processar mensagens no modelo do seu conteúdo insert : o locutor “pede” ao receptor que adicione o conteúdo da mensagem à sua KB Outras Performativas achieve, ask-about, ask-all, ask-one, break, broadcast, broker-all, broker-one, deny, delete, delete-all, delete-one, discard, eos, error, evaluate, forward, generator, monitor, … Exemplo A1 envia a seguinte mensagem para A2 ... ( advertise :sender :receiver :reply-with :language :ontology :content A1 A2 id1 KQML kqml-ontology ( ask-if :sender A2 :receiver A1 :in-reply-to id1 :language Prolog :ontology CIn :content “Professor(X,Y)”)) Exemplo A2 pergunta então a A1 ... ( ask-if ) :sender A2 :receiver A1 :in-reply-to id1 :reply-with id2 :language Prolog :ontology CIn :content “Professor(X, ‘Agentes’)” Exemplo A1 responde ao agente A2 ... ( tell ) :sender A1 :receiver A2 :in-reply-to id2 :reply-with id3 :language Prolog :ontology CIn :content “X = Geber, X = Flávia, X = Jacques...” KQML : Problemas Ambigüidade e Termos Vagos Performativas com nomes inadequados O significado de performativas reservadas é pouco claro. Normalmente estão associadas à intuição e ao domínio da linguagem natural do intérprete Algumas performativas têm nomes que não correspondem diretamente ao ato comunicativo a ela associado Ex: “tell” Ausência de performativas Alguns atos comunicativos não estão representados entre as performativas disponíveis FIPA Foundation for Intelligent Physical Agents FIPA : Histórico FIPA é uma associação sem fins lucrativos fundada em 1996 e localizada em Genebra na Suíça Objetiva promover o sucesso das aplicações, serviços e equipamentos baseados em agentes Provê especificações para maximizar a interoperabilidade entre aplicações, serviços e equipamentos baseados em agentes FIPA FIPA x KQML Linguagem de Comunicação de Agentes Ao contrário do KQML, as especificações FIPA têm uma grande preocupação com a modelagem semântica FIPA ACL Linguagens Interna FIPA Content Language Library (FIPA-CLL) FIPA-SL, FIPA-RDF, FIPA-CCL, FIPA-KIF, … Mas também é independente de LI FIPA ACL Sintaxe Praticamente igual ao KQML Conjunto de performativas menor accept-proposal, agree, cancel, cfp, confirm, disconfirm, failure, inform, inform-if, inform-ref, not-understood, propose, query-if, query-ref, refuse, reject-proposal, request, request-when, request-whenever, subscribe E só estes! Semântica Definida precisamente FIPA ACL x KQML Igualdades Independência de IL e de ontologias Sintaxe idêntica Diferenças Visível principalmente na semântica Performativas são diferentes Os agentes de FIPA ACL são proibido de manipular diretamente a KB de outros agentes Tratamento diferente do gerenciamento dos agentes e das primitivas de administração Em FIPA ACL register, unregister, ..., são tratados por um módulo a parte FIPA ACL x KQML Diferenças (situação Em fictícia) KQML Mensagem de A para B: achieve goal X Usa todo o vocabulário da LCA (performativa “achieve”) Em FIPA ACL Conteúdo Mensagem de A para B: tell ( achieve goal X ) A LCA não entende! A LI sim! Elimina a necessidade da performativa achieve na LCA Questão ainda em aberto! Exemplo A simple one... Agente Somador Linguagens Java KQML Ferramentas SACI (Simple Agent Communication Infrastructure) Agente Somador (1) Advertise (4) Ask One (5) Forward Facilitador Agente Servidor (2) Get Possible Servers (3) Forward (6) Tell Agente Cliente Sociedade Plus Server public static void main(String[] args) { Agent a = new PlusServer(); if (a.enterSoc("APlusServer")) { mbox.advertise("ask-one", "algebra", "matematica", "X+Y"); a.run(); // Fica lendo o Mailbox } } Plus Server public void run() { while (running) { Message m = mbox.polling(); if (m.get("performative").equals("forward")) { m = new Message(m.get("content").toString()); } if (m.get("performative").equals("ask-one")) { Message r = new Message("(tell)"); r.put("receiver", m.get("sender")); r.put("in-reply-to", m.get("reply-with")); r.put("content", calcula( (String)m.get("content") ) ); mbox.forward(r); } else { System.out.println("ignorando a mensagem"); } } } Plus Client public static void main(String[] args) { PlusClient a = new PlusClient(); if (a.enterSoc("AClient")) { a.run(args[0]); } } Plus Client public void run(String exp) { String ag = mbox.consultYP("ask-one", "algebra", "matematica", "X+Y"); Message m = new Message("(ask-one :content \""+ exp + "\")"); m.put("receiver", ag); m.put("reply-with", "rSoma"); mbox.forward(m); Message resposta = mbox.polling(); if (resposta.get("performative").equals("forward")) { resposta = new Message(resposta.get("content").toString()); } if ( ((String)resposta.get("in-reply-to")).equals("rSoma")) { System.out.println("\n\n>>>>>>>>> Resposta de “ + resposta.get("sender") + " foi “ + resposta.get("content")); } mbox.disconnect(); } Ferramentas de Auxílio Análise Critérios Ferramentas escritas Com download disponível Manuais O em Java de instalação e configuração mínimo necessário Divisão Ambientes Completos Bibliotecas de Classes Java (API) Nome Vs Ano Mec. Transp. ACL Onto. Facil. Documet. Tipo OBS AgentBuilder Lite 1.3 1999 RMI, TCP/IP KQML Sim Não Excelente! Ambiente Completo - Bond - 1998 Shadow KQML Não Não Razoável Biblioteca - JACK 2.1 2000 UDP/IP - Sim Sim Excelente! Ambiente Completo - JACKAL 3.1 1999 TCP/IP KQML Não Não Razoável Biblioteca - JADE 2.01 - RMI FIPA Sim Não Boa Biblioteca Suporte a JSP e JESS JATLite 0.4b - TCP/IP KQML Não Sim Razoável Biblioteca - JKQML 5.1a - KTP, ATP, OTP KQML Sim Sim Boa Biblioteca - Madkit 2.0.1 2000 ??? KQML Não Não Boa Biblioteca Ambiente de Execução SACI RC3 2000 RMI KQML Não Sim Boa Biblioteca - FIPA OS 1.3.2 2000 RMI, CORBA FIPA Não Não Ruim Biblioteca - ZEUS 1.05 2000 TCP/IP FIPA Sim Sim Excelente! Ambiente Completo - Referências KQML FIPA http://www.fipa.org/ SACI http://www.cs.umbc.edu/kqml/ http://www.lti.pcs.usp.br/saci/ FIPA x KQML http://www.objs.com/agility/tech-reports/9807-comparingACLs.html Referências Finin, Tim and Labrou, Yannis. A Proposal for a new KQML Specification; Finin, Tim., Labrou, Yannis and Mayfield, James. KQML as na communication language. Finin, Tim and Fritzon, Rich. KQML - A language and Protocol for Knowledge and Information Exchange. Finin, Tim and Labrou, Yannis. Semantics and Conversations for na Agent Communication Language Patil, Ramesh S., Fikes Richard E., Patel-Schneider Peter F. ., Don Mckay, Finnin, Tim., Gruber, Thomas and Neches Robert. The DARPA Knowledge Sharing Effort : Progress Report Referências Hübner, Jomi and Sichman, Jaime, "SACI: Uma Ferramenta para Implementação e Monitoração da Comunicação entre Agentes", IBERAMIA'2000, SBIA'2000, Atibaia-SP, novembro de 2000 (http://www.lti.pcs.usp.br/saci/) Andrew C. Huang, Benjamin C. Ling, Shankar Ponnekanti, Armando Fox. “Pervasive Computing: What Is It Good For?. In proceedings of the Workshop on Mobile Data Management (MobiDE) in conjunction with ACM MobiCom '99, Seattle, WA, September 1999 (forthcoming)