Comunicação entre Agentes Inteligentes Ryan Leite Albuquerque Motivação : Ubiqüidade Ubiqüidade: O Do latim “ubiquu” que está em todo lugar a toda hora Ubiqüidade Computacional Os serviços.
Download
Report
Transcript Comunicação entre Agentes Inteligentes Ryan Leite Albuquerque Motivação : Ubiqüidade Ubiqüidade: O Do latim “ubiquu” que está em todo lugar a toda hora Ubiqüidade Computacional Os serviços.
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)