• Nenhum resultado encontrado

2 Sistema Tutores Inteligentes e Agentes

2.7 A Linguagem de Comunicação entre Agentes KQML e o Protocolo de Interação Mecanismo

2.7.2 A Linguagem de Comunicação entre Agentes KQML

Em meados da década de 90 foi fundada o Knowledge Sharing Effort (KSE) um consórcio entre empresas, universidades e centros de pesquisa com o propósito de prover uma padronização para a troca do conhecimento representado entre sistemas de informação autônomos [FIN1992], definindo uma linguagem de representação de conhecimento universal que pudesse servir como uma linguagem intermediária entre textos de diferentes linguagens e também prover a interação em tempo real entre sistemas para a troca de conteúdo. Assim, o KSE gerou dois protocolos, descritos a seguir:

Knowledge Interchange Format (KIF): é uma linguagem desenvolvida para servir como

uma CL, para realizar a representação do conhecimento sobre um modelo de domínio em particular. Considerado como um padrão para o intercâmbio de conhecimento entre diferentes sistemas. É utilizado como representação da parte do conteúdo de uma mensagem KQML.

Knowledge Query and Manipulation Language (KQML): é uma linguagem desenvolvida

como uma ACL para a comunicação entre agentes que possui um formato de mensagem, e contém um protocolo de gerenciamento de mensagens, baseado na teoria dos atos da fala.

Sua linguagem é composta por performativas3 que regem as interações entre os agentes,

considerado um dos protocolos de comunicação entre agentes mais difundidos no mundo dos SMA [FIN1992], [FIN1994a] e [FIN1994b].

A estrutura básica de uma mensagem KQML, representada pela Figura 7, é composta respectivamente pela performativa, o nome do agente remetente, o nome do agente destinatário, a linguagem empregada de comunicação, a sua ontologia e finalmente o conteúdo da informação na íntegra.

Figura 7 - Estrutura básica de uma mensagem KQML, extraído de [HUB2003].

Hübner [HUB2004] e Wooldridge [WOO1999] relatam as principais performativas da linguagem KQML agrupadas por categorias. Na descrição abaixo são representados dois agentes: S um agente que envia a mensagem (sender) e R um agente que recebe a mensagem (receiver).

Performativas de Informação

• tell: S informa a R que a natureza do conteúdo da mensagem enviada é verdadeira, ou seja, o conteúdo está na base de conhecimento de S.

• deny: S informa a R que a natureza do conteúdo da mensagem enviada não é verdadeira.

• untell: o conteúdo enviado não está na base de conhecimento de S.

Performativas de Consulta

• ask-if: S quer saber se o conteúdo desta mensagem é verdadeiro para R.

3

Performativas: referem-se à locução que indica uma determinada intenção. Neste contexto, trata-se da intenção de se comunicar do agente.

• ask-all: S deseja todas as instâncias da mensagem que são verdadeiras para S.

Respostas Básicas

• error: S indica a R que não recebeu a mensagem enviada anteriormente.

• sorry: S diz a R que compreende a sua mensagem, no entanto, não pode prover uma resposta satisfatória.

Performativas de Bases de Dados

• insert: S pede a R para acrescentar o conteúdo da mensagem na base de conhecimento de R.

• delete: S pede e R para remover o conteúdo da mensagem da base de conhecimento de R.

Definição de Capacidades

• advertise: S anuncia a R (facilitador) para que saiba que S pode e processará mensagens que está no conteúdo desta.

Performativas de Efetuação

• achieve: solicita que o conteúdo a ser processado da mensagem deve ser um valor verdadeiro.

• unachieve: requisição de reversão de um achieve enviado previamente.

Performativas de Rede

• register: S anuncia para R (facilitador) sua existência mediado pelo nome simbólico associado com seu endereço físico.

• unregister: requisita o cancelamento do register feito anteriormente. • transport-address: anuncia um novo endereço físico na rede.

• forward: comando de encaminhamento de uma mensagem para um outro agente através do campo “:to”.

• broadcast: S solicita a R enviar a mensagem a todos os agentes conhecidos de uma sociedade.

Performativas de Facilitação

• broker-one: S pede a R para executar o conteúdo desta mensagem, quando o conteúdo se tratar de uma expressão.

• recommend-one: S requisita a R (facilitador) para indicar um agente que possa processar o conteúdo da mensagem.

Ilustração de uso do protocolo KQML

Uma melhor compreensão sobre o uso do protocolo KQML pode ser obtida através do exemplo abaixo. O presente exemplo, ilustrado pela Figura 8, enfatiza as funções de anúncio de uma habilidade, envio e recebimento de mensagens KQML entre agentes. O exemplo emprega uma sociedade com três agentes que desempenham os seguintes papéis:

• Agente A (sender): anuncia uma habilidade ao facilitador.

• Agente B (facilitador): realiza o papel de facilitador da sociedade. • Agente C (receiver): requisita uma determinada tarefa à sociedade.

Figura 8 - Exemplo de uso do protocolo KQML.

Anúncio de uma habilidade ao agente B (Facilitador)

O agente A (sender) envia uma mensagem ao agente B (receiver), suposto facilitador, anunciando que pode processar mensagens do tipo especificado (somar), representado pelo

passo 1 da Figura 8. O conteúdo apresentado da mensagem refere-se a uma outra mensagem em KQML. Esta mensagem possui uma identificação para ser utilizada como tratamento da resposta, através do termo: reply-with id1, conforme apresentado abaixo.

(advertise :sender A :receiver B :reply-with id1 :language KQML :ontology kqml-ontology :content (ask-if :sender B :receiver A :language algebra :ontology matematica :content "somar(X,Y)"))

Consulta ao facilitador sobre um agente que possa atender à requisição

No trecho KQML em questão, o agente C requisita ao facilitador qual agente pode atender a sua requisição, passo 2 da Figura 8. Abaixo é apresentada a mensagem KQML enviada ao agente facilitador.

(recommend-one :sender C :receiver B :in-reply id2 :in-reply-to id1 :language algebra :ontology matematica :content "somar(X,Y)")

O facilitador (agente B) responde ao agente requisitante (agente C) enviando uma mensagem cujo conteúdo é a identificação do agente que pode atender a sua requisição, neste caso o agente A, passo 3 da Figura 8.

(tell :sender B :receiver C

:in-reply id3 :in-reply-to id2 :language algebra :ontology matematica :content "A")

Finalmente ocorre a interação entre os agentes C e A, passo 4 da Figura 8. O agente C envia uma mensagem que tem como conteúdo uma expressão matemática, ilustrado pela mensagem KQML abaixo. (tell :sender C :receiver A :in-reply id1000 :in-reply-to id1001 :language algebra :ontology matematica :content "somar(100,600)")

Efetivamente o agente A responde ao agente C enviando uma mensagem tendo como conteúdo o resultado do processamento, fim do ciclo de comunicação entre os agentes, passo 5. Apresentado abaixo.

(tell :sender A :receiver C :in-reply id1001 :language algebra :ontology matematica :content "700")

2.8 O Protocolo de Interação entre Agentes – Mecanismo de Contrato