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)
Download

comunic