Mobile Agent
通信語(yǔ)言研究
***
(**大學(xué)網(wǎng)絡(luò)**實(shí)驗(yàn)室,**
)
摘要:
作為
Agent
間通信的關(guān)鍵,
Agent
通信語(yǔ)言(
Agent Communication Language
,
ACL
)已經(jīng)得到學(xué)術(shù)界和企業(yè)界的廣泛研究。本文分析了
ACL
的一些共同特征,并重點(diǎn)對(duì)
KQML
(
Knowledge Query and Management Language
)進(jìn)行了分析。
關(guān)鍵詞:
移動(dòng)
Agent
,互操作性,
ACL
,
KQML
1 引言
目前,多 Agent 系統(tǒng) (Multi-agent Systems, MAS) 廣泛應(yīng)用在如并行設(shè)計(jì)與制造、電子商務(wù)、語(yǔ)音識(shí)別、機(jī)器人控制、生產(chǎn)計(jì)劃與調(diào)度等不同領(lǐng)域中。多 Agent 系統(tǒng)內(nèi)部( intra-MAS )或不同多 Agent 系統(tǒng)之間( inter-MASs )的各個(gè)異構(gòu) Agent 必須通過(guò)通信,實(shí)現(xiàn)知識(shí)與信息共享,才能進(jìn)行交互和協(xié)商,進(jìn)而分工合作解決復(fù)雜的異構(gòu)性問(wèn)題。因此, Agent 之間的互操作性 (interoperability) 是多 Agent 系統(tǒng)的核心,而 Agent 通信語(yǔ)言( Agent Communication Language, ACL )是實(shí)現(xiàn) Agent 之間互操作性的基礎(chǔ)和關(guān)鍵。本文分析了 ACL 的一些共同特征,并重點(diǎn)分析了 KQML 。
2 相關(guān)理論或技術(shù)基礎(chǔ)
2.1
言語(yǔ)行為理論(Speech-act Theory)[1]
? 大部分 ACL 都基于言語(yǔ)行為理論。言語(yǔ)行為理論是關(guān)于人類通信交流的一種形式化 模型,其基本原理是關(guān)于人類通信交流的一種形式化模型,其基本原理是:說(shuō)話者所說(shuō)的話語(yǔ)不僅僅陳述一個(gè)事實(shí),而且是說(shuō)話者做出的帶有某種意圖的動(dòng)作。一個(gè)言語(yǔ)行為( Speech act )有三類相關(guān)的動(dòng)作:表達(dá)方式( Locution ):語(yǔ)法上慣用的話語(yǔ);表達(dá)意圖( Illocution ):說(shuō)話者傳遞給聽(tīng)者的言語(yǔ)表達(dá)行為,包括語(yǔ)內(nèi)行為力( illocutionary )和命題( proposition );表達(dá)效果( Per locution ):作為表達(dá)意圖的結(jié)果產(chǎn)生的效果。例如,“你不要打開(kāi)機(jī)器”是個(gè)表達(dá)方式,傳達(dá)的“不要打開(kāi)機(jī)器”是表達(dá)意圖,聽(tīng)者接收到后不打開(kāi)機(jī)器就是表達(dá)效果。一般地,一個(gè)言語(yǔ)行為代表一個(gè) ACL 中所用到的消息類型( message type )。 Searle 根據(jù)語(yǔ)內(nèi)行為力把消息類型分成五個(gè)部分:
斷定語(yǔ)( Assertives ):提供確定某件事情的信息(例如:機(jī)器開(kāi)著);
指示語(yǔ)( Directives ):發(fā)送者發(fā)送導(dǎo)向性的消息給接收者(例如:打開(kāi)機(jī)器);
承諾語(yǔ)( Commissives ):發(fā)送者表明將來(lái)完成某種動(dòng)作(例如:我將打開(kāi)機(jī)器);
許可語(yǔ)( Permissives ):允許接收者執(zhí)行某種動(dòng)作(例如:你可以開(kāi)機(jī)器);
禁止語(yǔ)( Prohibitives ):禁止某些動(dòng)作的執(zhí)行(例如:你不能打開(kāi)機(jī)器);
Singh 提出的社會(huì)代理思想中,補(bǔ)充增加了兩類消息類型,即:宣稱語(yǔ)( Declaratives ) - 說(shuō)明某個(gè)事件,如,這臺(tái)機(jī)器命名為 A ;和表述語(yǔ)( Expressives ) - 表達(dá)感情和評(píng)價(jià),如,我希望這臺(tái)機(jī)器是開(kāi)著的。
消息類型的分類提供了一個(gè)能夠定義通信交流模式的結(jié)構(gòu),這樣, ACL 才能在此基礎(chǔ)上發(fā)展起來(lái)。 ACL 的通信原語(yǔ)( Primitive )是消息的核心,一般是類似“ tell ”,“ ask ”等的動(dòng)詞。通信原語(yǔ)是 Agent 通信不可再分的“基本單元”。
3 Agent Communication Language
3.1 ACL
的基本框架
作為一種 Agent 通信語(yǔ)言,有其一定的規(guī)范框架,如圖 1 。兩個(gè) Agent 進(jìn)行交互通信時(shí),需要傳輸層的傳輸協(xié)議(如 TCP/IP,HTTP,IIOP,SMTP )支持; ACL 本身位于邏輯層上,定義各個(gè) Agent 能夠理解交流的消息類型和意思。
圖 1? ACL 的基本框架
一般的 ACL 規(guī)范框架包括消息的類型,消息格式,語(yǔ)義描述和內(nèi)容語(yǔ)言等幾個(gè)部分,以及支持的共享本體和采用的交互協(xié)議。
消息類型:第一部分所述,目前認(rèn)為 ACL 的消息類型有 7 種。 FIPA? ACL 和 KQML 的消息類型只屬于斷定語(yǔ)或者指示語(yǔ)。一般一個(gè)通信原語(yǔ)屬于一種消息類型。
消息格式:定義通信原語(yǔ)和消息參數(shù)(如發(fā)送者,接收者,消息 ID ,協(xié)議和內(nèi)容語(yǔ)言等)。通信原語(yǔ)和消息參數(shù)的定義采用既定的語(yǔ)法,以此來(lái)表示消息是如何構(gòu)架的。
語(yǔ)義描述:語(yǔ)義使 Agent 消息具有精確意思的基礎(chǔ)。
內(nèi)容語(yǔ)言:內(nèi)容語(yǔ)言是表達(dá)給定領(lǐng)域事實(shí)的語(yǔ)言工具,是理解 Agent 通信語(yǔ)言的概念框架,用來(lái)表述多個(gè) Agent 用 ACL 進(jìn)行交互過(guò)程中雙方能共同理解的信念、期望和意圖。
共享本體:共享本體定義一個(gè)對(duì)話領(lǐng)域的概念(通常用詞匯表示)和概念之間相互關(guān)系的規(guī)范。兩個(gè) Agent 只有存在共享本體,才能解釋交互通信。共享本題是 Agent 通信語(yǔ)言的支撐。
交互協(xié)議:用來(lái)方便 Agent 通信的交互模式。
解碼器 / 編碼器:由于網(wǎng)絡(luò)阻塞, ACL 消息對(duì)象可能不能發(fā)送到遠(yuǎn)處的平臺(tái),這樣在通信的兩端可能需要解碼器 / 編碼器把 ACL 消息轉(zhuǎn)換成兩邊都能相互理解的字符串或者其他形式。
3.2 KQML?????????????????????????
3.2.1
KQML
的結(jié)構(gòu)
[3]
KQML 語(yǔ)言可以定義為一種層次結(jié)構(gòu)型的語(yǔ)言。 KQML 可以分為 3 個(gè)層次(如圖 2 所示),從里到外依次為內(nèi)容層、消息層、通信層。內(nèi)容層描述的是 agent 傳遞消息的真正內(nèi)容,這些內(nèi)容可以用實(shí)現(xiàn) agent 的編程語(yǔ)言來(lái)表示。 KQML 可以采用任何形式的語(yǔ)言(無(wú)論是 ASCII 字符串還是二進(jìn)制流)來(lái)描述,使得 KQML 的語(yǔ)言實(shí)現(xiàn)形式與內(nèi)容層的含義無(wú)關(guān),增強(qiáng)了異構(gòu) Agent 之間的交互性。
消息層是 KQML 結(jié)構(gòu)中最為重要的部分,它確定 Agent 傳遞消息所使用的協(xié)議以及提供消息內(nèi)涵所對(duì)應(yīng)的行為原語(yǔ),消息內(nèi)涵對(duì)于 KQML 是完全透明的,因此消息層還包括對(duì)消息內(nèi)涵的語(yǔ)言、采用的 ontology 的屬性的描述。
通訊層包括了一系列消息特征,描述了通訊底層參數(shù),包括消息接收者和發(fā)送者的標(biāo)識(shí)以及通訊相連的標(biāo)識(shí)。
圖 2 KQML 的三個(gè)層次
3.2.2
KQML
的語(yǔ)法
KQML 的消息語(yǔ)法,采用類似 LISP 的語(yǔ)法描述,用一個(gè)通信原語(yǔ)開(kāi)頭,緊跟參數(shù)名稱( parameter name )和參數(shù)值( parameter value )。如圖 3 所示是一般的 KQML 消息語(yǔ)法,圓括號(hào)的起始處為行為原語(yǔ)名稱,其余以冒號(hào)開(kāi)頭的是 KQML 的保留關(guān)鍵字。
圖 3 KQML 的消息語(yǔ)法表述
每一條 KQML 消息被稱為一種行為原語(yǔ)( performative ),接收到 KQML 消息的 Agent 根據(jù)消息的類型產(chǎn)生不同的動(dòng)作。但是 KQML 語(yǔ)言規(guī)范中并沒(méi)有對(duì)每一種語(yǔ)言表述都進(jìn)行了嚴(yán)格的定義,因此這種語(yǔ)言規(guī)范仍需要不斷地?cái)U(kuò)充。而且由于 Agent 所應(yīng)用的環(huán)境不同,它的語(yǔ)言表述的范圍也會(huì)根據(jù)環(huán)境的不同而有許多變化。原始的規(guī)范并不能滿足所有用戶的需求,因此可以根據(jù)實(shí)際需要建立一種擴(kuò)展的 KQML 語(yǔ)言 [4] 。
3.2.3
KQML
的預(yù)留原語(yǔ)
常用的預(yù)留的行為原語(yǔ)通??梢员环譃橐韵聨最?/span> [4] :
1 )基本詢問(wèn)原語(yǔ)(如 evaluate, ask-if, ask-in, ask-one, ask-all, ask-about )
2 )簡(jiǎn)單詢問(wèn)回答原語(yǔ)(如 reply, sorry )
3 )多重詢問(wèn)回答原語(yǔ)(如 stream-in, stream-all )
4 )通信信息原語(yǔ)(如 tell, achieve, cancel, untell, unachieve )
5 )發(fā)生器原語(yǔ)(如 standby, ready, next, rest, discard, generator )
6 )能力定義原語(yǔ)(如 advertise, subscribe, monitor, import, export )
7 )網(wǎng)絡(luò)原語(yǔ)(如 register, unregister, forward, broadcast, route )
3.2.4
KQML
的語(yǔ)義
[3]
一個(gè)正確的語(yǔ)義有助于確切地定義該語(yǔ)言及其合適的用途。 T.Fini 采用 Speech Act 理論簡(jiǎn)單地給出了 KQML 語(yǔ)義的形式化描述。 KQML 行為原語(yǔ)的語(yǔ)義通常包括如下六個(gè)部分:
1.?????? 行為原語(yǔ)直覺(jué)意義上的自然語(yǔ)言描述;
2.?????? 用于描述意會(huì)行為的邏輯表達(dá)式。實(shí)際上,這是自然語(yǔ)言的形式化表示;
3.?????? 用于表示 Agent 發(fā)送、接收和處理行為原語(yǔ)的必須狀態(tài)的前置條件;
4.?????? 用于表示發(fā)出行為原語(yǔ)后或收到行為原語(yǔ)后,還未回答的狀態(tài)的后置條件;
5.?????? 用于表示發(fā)送者的最終狀態(tài)(發(fā)送行為原語(yǔ)的意圖得到滿足)的完成條件;
6.?????? 任何有利于對(duì)行為原語(yǔ)理解的自然語(yǔ)言評(píng)論。
如果接收者有非空的前置條件,表明對(duì)此行為原語(yǔ)的響應(yīng)是對(duì)建立其前置條件的行為原語(yǔ)的某種響應(yīng)。但對(duì)收到發(fā)起對(duì)話的行為原語(yǔ)的接受者來(lái)說(shuō),前置條件是不需要的。在一次對(duì)話中,發(fā)送者的后置條件應(yīng)該是消息接收者的前置條件的一個(gè)子集。當(dāng)一條行為原語(yǔ)發(fā)出時(shí),完成條件是其后置條件的一個(gè)子集,此類行為原語(yǔ)只要成功發(fā)出并被對(duì)方處理就完成了。
為了描述行為原語(yǔ)、前置條件、后置條件和完成條件,首先定義 Agent 的認(rèn)知狀態(tài)(采用一階謂詞邏輯)如下:
1.?????? Bel Bel(A, P) 表示對(duì) A 來(lái)說(shuō) P 為真,其中 P 是用 A 應(yīng)用的語(yǔ)言寫(xiě)成的表達(dá)式。也可以說(shuō) P 存在于 Agent A 的知識(shí)庫(kù)或虛擬知識(shí)庫(kù) VKB 內(nèi)。
2.?????? Know Know(A, P) 表示 A 認(rèn)可 P 的知識(shí)狀態(tài)。
3.?????? Want Want(A, P) 表示 Agent A 期望用 P 描述的事件或狀態(tài)發(fā)生。
4.?????? Intent Intent(A, P) 表示 A 愿意做 P 。
例如行為原語(yǔ) Ask-if(A, B, X) ,按上述介紹,其語(yǔ)義形式化描述如下:
1.?????? A 希望知道 B 關(guān)于 X 的真值狀態(tài)。
2.?????? Want(A, Know(A, Y)) 。其中 Y 可能是: Bel(B, Y), Bel(B, NOT(X)) 或 NOT(bel(B, X)) 。因此 Pre(A) 表示為 want(A, Know(A, bel(B, X))) 或 want(A, know(A, bel(B, NOT(X)))) 或 want(A, Know(A, NOT(bel(B, X)))) 。
3.?????? Pre(A) : want(A, know(A, Y)) 。 ( 也可包含條件 NOT(know(A,Y))) 。 Pre(B) :無(wú)。
4.?????? Post(A):intend(A, know(A, Y)) 。
5.?????? Completion(A) : Know(A, Y) 。
6.?????? NOT(bel(A, Y)) 與 bel(A, NOT(Y)) 是兩個(gè)不同的概念。(在某些特定的系統(tǒng)中是一樣的。)
4 結(jié)論及未來(lái)工作
每一條 KQML 消息被稱為一種表述,接收到 KQML 消息的 Agent 根據(jù)消息的類型產(chǎn)生不同的動(dòng)作。但是 KQML 語(yǔ)言規(guī)范中并沒(méi)有對(duì)每一種語(yǔ)義表述都進(jìn)行了嚴(yán)格的定義,這種語(yǔ)言規(guī)范仍可以被不斷擴(kuò)充。而且由于 Agent 所應(yīng)用的環(huán)境不同,它的語(yǔ)言表述的范圍也會(huì)根據(jù)環(huán)境的不同而有許多變化。原始的規(guī)范比不能滿足所有用戶的需求,可以結(jié)合實(shí)際進(jìn)行擴(kuò)展。
前段時(shí)間由于把研究的重點(diǎn)放在移動(dòng) Agent 平臺(tái)之間的互操作方面,后來(lái)發(fā)現(xiàn)需要對(duì) ACL 有個(gè)理解。在接下來(lái)的兩周里,將著重對(duì) KQML 、 FIPA-ACL 兩種主流通信語(yǔ)言,進(jìn)行更深一步的研究,并閱讀相應(yīng)的規(guī)范原文。
參考文獻(xiàn)
[1]??????????
王世進(jìn),周炳海,陶麗華,悉立峰
Agent
通信語(yǔ)言綜述。
[2]??????????
林和平,余元輝
基于
KQML
的移動(dòng)
Agent
通信機(jī)制的分析。
[3]??????????
董紅梅
基于
XML
的
Agent
交互機(jī)制研究。
[4]??????????
羅健,王成良
基于
KQML
的
Agent
通信體系結(jié)構(gòu)設(shè)計(jì)