Comunicação em SMA
Ryan Albuquerque e Patricia Tedesco
Introdução
Conceitos Básicos
KQML
FIPA ACL
Exemplo
1
Motivação : Ubiqüidade
Ubiqüidade: Do latim “ubiquu”
Ubiqüidade Computacional
O que está em todo lugar a toda hora
Os serviços computacionais poderão ser usados
em toda parte e a qualquer hora
“Jetsons”, “Matrix”, “Minority Report”.
Cenário
SeDi = Secretário Digital
Júlia é Engenheira de Tráfego
2
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
3
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
4
Motivação : Agentes
Reflexão
Como implementar?
Cenário dinâmico
Integração de diversas mídias e dispositivos
Sugestão: usar Agentes Inteligentes
Agentes
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
5
Motivação : Agentes
Iteração
Solução compartilhada de problemas
Requisito básico
Mecanismo de Comunicação
Linguagem comum
Infra-estrutura
Mas como implementar?
6
Conceitos Básicos
7
Comunicação...
Relação dinâmica mediada por sinais, que
quando interpretados, afetam os
agentes envolvidos.
Possibilita... Cooperação e Coordenação
8
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
9
Atos da Fala
Categorização das expressões humanas qto a
Existem aproximadamente 4600 atos de fala!
Intenção do locutor
Impacto do ato comunicativo no receptor
Não é esse o objetivo de uma LCA
Ajuda a decidir as primitivas das LCAs
Todo primitiva de uma LCA é um ato de fala
10
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)
11
Atos da Fala : Categorias
Representativos
Expressam um Pedido ou
Comando
Ex: “Cale-se!”
Comissivos
Expressam Promessa ou
Ameaça
Ex: “Eu prometo doar
Expressivos
amanhã?”
Diretivos
Expressam uma Proposta
Ex: “Vamos jogar boliche
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.”
R$1.000,00.”
12
Atos da Fala
Ato Locucionário
Efeito Ilocucionário
O que o locutor entende por algo
“Ele me pediu para fazer café”
Efeito Perlocucionário
Emissão da mensagem
“Você poderia fazer um café?”
O real efeito do ato comunicativo no receptor
“Ele me fez fazer café”
Ideal
Efeito perlocucionário previsível
Para um dado Ato Locucionário,
Efeito Ilocucionário = Efeito Perlocucionário.
Ou seja, prever a reação do receptor!
13
Linguagens de Comunicação
Baseadas na Teoria dos Atos da Fala (Searle, Austin)
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
14
Ontologias
Definição
Vocabulário cujos termos são relacionados a um
certo domínio e precisamente definidos.
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
15
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
16
Exemplo de uma Mensagem
KIF
(=(temperatura m1) (scalar 40
Celsius))
(defrelation solteiro (?x) :=
(and (man ?x)
(not(casado ?x))))
17
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
18
KQML
Knowledge Query and Manipulation
Language
19
KQML
Objetivo
Interoperabilidade entre agentes de software
em aplicações distribuídas e/ou heterogêneas
Pioneira ( KSE – 1994 )
Aplicações
eCommerce (negociação)
Jogos
BDs distribuídos e/ou heterogêneos
Integração de tecnologias
...
20
KQML : Características
Principais características da linguagem:
Independente de Linguagem Interna
Independente de Ontologia
Independente de Protocolos de Transporte de
Comunicação baseada nos atos da fala
Rede
Performativas
Sugere o uso de Agentes Facilitadores
Camadas:
Comunicação, Conteúdo e Mensagem
21
KQML : Sintaxe
( performativa
)
:sender
:receiver
:reply-with
:in-reply-to
:language
:ontology
:content
<word>
Camada de Comunicação
<word>
<word>
<word>
Camada de Mensagem
<word>
<word>
Camada de Conteúdo
<expression>
22
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, …
23
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)”))
24
Exemplo
A2 pergunta então a A1 ...
( ask-if
:sender
:receiver
:in-reply-to
:reply-with
:language
:ontology
:content
)
A2
A1
id1
id2
Prolog
CIn
“Professor(X, ‘Agentes’)”
25
Exemplo
A1 responde ao agente A2 ...
( tell
:sender
:receiver
:in-reply-to
:reply-with
:language
:ontology
:content
A1
A2
id2
id3
Prolog
CIn
“X = Geber, X = Flávia,
X = Jacques...”
)
26
KQML : Problemas
Ambigüidade e Termos Vagos
Performativas com nomes inadequados
O significado de performativas é pouco claro.
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
27
FIPA
Foundation for Intelligent Physical Agents
www.fipa.org
28
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
29
FIPA
FIPA x KQML
Ao contrário do KQML, as especificações FIPA
têm uma grande preocupação com a modelagem
semântica
Linguagem de Comunicação de Agentes
FIPA ACL
Linguagens Internas
FIPA Content Language Library (FIPA-CLL)
FIPA-SL, FIPA-RDF, FIPA-CCL, FIPA-KIF, …
Mas também é independente de LI
30
FIPA ACL
Sintaxe
Praticamente igual ao KQML
Conjunto de performativas menor
accept-proposal, agree, cancel, cfp, confirm,
disconfirm, failure, inform, inform-if, inform-ref, notunderstood, propose, query-if, query-ref, refuse,
reject-proposal, request, request-when, requestwhenever, subscribe
E só estes!
Semântica
Definida precisamente
31
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
32
FIPA ACL x KQML
Diferenças (situação fictícia)
Em KQML
Mensagem de A para B: achieve goal X
Usa todo o vocabulário da LCA (performativa
“achieve”)
Conteúdo
Em FIPA ACL
Mensagem de A para B: inform ( achieve goal X )
A LCA não entende! A LI sim!
Elimina a necessidade da performativa achieve na LCA
33
Exemplo
A1 envia a seguinte mensagem para A2 ...
( inform
:sender
:receiver
:reply-with
:language
:content
A1
A2
id1
...
:ontology
...
((= available-service A1)
(set(provide Professor(X,Y))))”
34
Exemplo
A2 pergunta então a A1 ...
( query-ref
:sender
:receiver
:in-reply-to
:reply-with
:language
:ontology
:content
)
A2
A1
id1
id2
Prolog
CIn
“Professor(X, ‘Agentes’)”
35
Exemplo
A1 responde ao agente A2 ...
( inform
:sender
:receiver
:in-reply-to
:reply-with
:language
:ontology
:content
A1
A2
id2
id3
Prolog
CIn
“X = Geber, X = Flávia,
X = Jacques...”
)
36
Exemplo
A simple one...
37
Agente Somador
Linguagens
Java
KQML
Ferramentas
SACI (Simple Agent Communication
Infrastructure)
38
Agente Somador
(1) Advertise
(4) Ask One
(5) Forward
Facilitador
Agente Servidor
(2) Get Possible Servers
(3) Forward
(6) Tell
Agente Cliente
Sociedade
39
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
}
}
40
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"); }
}
}
41
Plus Client
public static void main(String[] args) {
PlusClient a = new PlusClient();
if (a.enterSoc("AClient")) {
a.run(args[0]);
}
}
42
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();
43
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/techreports/9807-comparing-ACLs.html
44
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., PatelSchneider Peter F. ., Don Mckay, Finnin, Tim.,
Gruber, Thomas and Neches Robert. The DARPA
45
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)
46