Như đã trình bày trên, Agent có những ưu điểm nổi trội hơn hẳn những đối tượng hay component thường, đó là khả năng tự trị, độc lập, đặc biệt là khả năng lưu động(di động). Song điểm mạnh nhất của phương pháp lập trình hướng Agent không phải ở khả năng của các cá thể Agent riêng lẻ, người ta thường chú ý đến khả năng giao tiếp, liên kết và phối hợp giữa các cá thể Agent. Nhiều Agent có khả năng giao tiếp qua lại sẽ tạo ra một hệ thống Agent mềm dẻo, có khả năng hỗ trợ lẫn nhau thực hiện các công việc lớn mà một Agent đơn lẻ khó có thể thực hiện. Hệ thống này được gọi là hệ đa Agent, MAS (MutilAgent System).
Mục tiêu xõy dựng hệ BKAS thành một framework cho hệ đa agent phần mềm, một cộng đồng agent. Trong công đồng agent này, mỗi Agent có thể được phát triển trên các ngôn ngữ, công cụ khác nhau, nhưng chúng được cung cấp khả năng giao tiếp qua lại. í tưởng cơ bản của BKAS là đưa ra phương pháp kết nối các ứng dụng (các hệ thống) dựa agent hoạt động độc lập trên một hệ phõn tán. Dưới đõy chúng tôi xin trình bày một số mục đích của mô hình BKAS dưới hai góc độ: liên kết và hợp tác, giao tiếp với người xử
dụng.
1.5.1 Liên kết và hợp tác
Liên kêt thể hiện khả năng của các thành phần phần mềm (hay Agent) phõn tán có giao tiếp qua lại với nhau. Tại nhiều framework cần phải cung cấp cơ chế liên kết giữa các lớp, các mức khác nhau. Trong framework hướng Agent, việc liên kết giữa các Agent trong cộng đồng được coi là một vấn đề quan trọng và phức tạp. Mỗi Agent đều có khả năng tự trị và đặc trưng riêng mang tớnh chất cá thể, nên cần sự liên kết mềm dẻo trong các cộng đồng agent. Hợp tác nói đến một cơ chế mà trên cơ sở đó các agent giao tiếp với nhau, cùng làm việc để thực hiện một công việc (một số công việc). Trong khớa cạnh này, framework BKAS có khả năng:
Cung cấp khả năng kết hợp linh hoạt, mềm dẻo giữa các cộng đồng thành phần cấp dịch vụ (ở đõy là các Agents) độc lập trong cả quá trình xõy dựng ứng dụng cũng như khi triển khai thực tế. Các Agents khi đã dựa trên một ngôn ngữ giao tiếp và một nền tảng ontology cần thiết cho một giao tiếp hiệu quả, thì có khả năng tham gia vào một cộng đồng agent, trong các hoạt động phối hợp khác nhau, mà không đòi hỏi quá nhiều tri thức về tớnh chất đặc điểm của các agent khác. Các agent cùng với bản sao của chúng hoặc các agent có khả năng tương đương có thể cùng tồn tại trong một cộng đồng, như vậy có thể tạo ra đa liên kết giữa các cộng đồng trong cùng một hệ thống.
Cung cấp cấu trúc liên kết hợp tác mềm dẻo giữa các thành viên trong một cộng đồng agent. Framework này cho phép xõy dựng những tương tác mẫu đa dạng giữa các agent với chi phí nhỏ, không phụ thuộc vào độ phức tạp cũng như cấu trúc của từng agent trong tương tác. Như vậy việc cung cấp dịch vụ độc lập với cấu hình của các agent trong hệ thống.
Có một số yêu cầu trong cấu trúc của các cá thể agent. Các hướng tiếp cận khác xõy dựng hệ đa agent đòi hỏi các cá thể agent phải đáp ứng một số yêu cầu khác nhau. Ví dụ, KQML (Knowledge Query and Manipulation Language) là ngôn ngữ giao tiếp gần với ngôn
ngữ tự nhiên, thể hiện trong nội dung của thông điệp, nên chỉ cần một số yêu cầu kiến trúc từng agent cá thể. Mặt khác, mô hình kiến trúc agent có khả năng suy luận BDI (Belief – Desire – Intention) lại yêu cầu nhiều hơn các đòi hỏi khắt khe, bởi vì nó chỉ xõy dựng một hệ ngôn ngữ giả tự nhiên. BKAS nằm trong khoảng giữa hai giới hạn trên, mục tiêu của chúng tôi là cung cấp một tập các hành động liên kết và tương tác đa dạng, mà không có hạn chế với bất kỳ công nghệ nào đã được định nghĩa ở mức dưới.
1.5.2 Giao tiếp với người sử dụng
Hệ thống gộp bởi nhiều thành phần phõn tán, cùng với cấu hình của các thành phần, yêu cầu việc thao tác trên giao diện người dùng phải được:
Cung cấp các cơ sở khái niệm hoá giao tiếp với các thành phần phõn tán dựa trên ngôn ngữ tự nhiên. Hệ thống có thể thực thi các tác vụ phức tạp thông qua một tập các agent, song người sử dụng không cần biết điều này, họ cần có khả năng mô tả yêu cầu mà không cần hiểu chi tiết về các agent trong hệ thống. Với các công nghệ nhận dạng tiếng nói, chữ viết cũng như ngôn ngữ tự nhiờn đang được hoàn thiện dần, một kiến trúc agent cần phải được chuẩn bị cho các mẫu nhập yêu cầu này đóng vai trò lớn hơn trong việc sử lý tác vụ của cộng đồng agent.
Coi người sử dụng như thành viên đặc biệt trong công đồng agent. Bằng việc cung cấp đặc tả tác vụ trong agent phần mềm, và khả năng tái sử dụng các chuyển đổi giữa mức đặc tả tác vụ và yêu cầu người dùng, nó có thể tạo ra các liên kết kết hợp chặt chẽ giữa agent và người sử dụng(được coi như một dạng agent của cộng đồng agent).
Hỗ trợ việc cộng tác giữa agent và người sử dụng( thực hiện đồng thời trên hệ thống dữ liệu chia sẻ và các xử lý tài nguyên chung)
1.6 Khái niệm - cấu trúc mô hình BKAS
1.6.1 Khái niệm
BKAS viết tắt từ cụm Bach Khoa Agent System, là một mô hình kiến
trúc, một framework mang tớnh mở cho hệ liên (hay đa) Agent mà trên đó một cộng đồng các Agent phõn mềm (Software Agent) được phát triển trên nhiều ngôn ngữ, nhiều công cụ khác nhau, chạy trên các máy phõn tán có thể cộng tác với nhau theo các nhiệm vụ đã được xác định cụ thể cho từng Agent
Ý tưởng cơ bản và bao trùm của BKAS là sự uỷ quyền (delegated). Sự uỷ quyền được thể hiện ở điểm là thay vì các agent trong hệ thống phải khai
báo và mã hoá một cách cứng nhắc (hard-code) các khả năng của mình cũng như các tương tác với các agent khác trong hệ thống, các agent có thể mô tả các khả năng, các tương tác của mình và khai báo nó với một agent đặc biệt trong hệ thống là Facilitator agent. Facilitator sẽ phối hợp cộng đồng agent để thực hiện các công việc, cung cấp các dịch vụ như cơ chế song song, xử lý lỗi và phát hiện xung đột mà mỗi client agent không phải tự lo về những thứ đó.
1.6.2 Mô hình
Hình 9: Mô hình cấu trúc của BKAS.
Trên đây là mô hình cơ bản của framework BKAS, bao gồm một số agent thiết yếu nhất cho một hệ thống đa agent: agent giao diện người sử dụng (Interface agent), agent xử lý ontology (Ontology agent), một số agent ứng dụng (Application agent) và siêu agent (meta-agent). Các agent trên có vai trò
Application Agent Modalty Agents User Interface Agent API Application Ontology Agent Meta Agent Ontology Base
Ngôn ngữ giao tiếp giữa các Agents
Facilitator Agent Điều khiển Tìm đường Lập kế hoạch Cơ sở tri thức Dữ liệu về agent Siêu dữ liệu
ngang nhau trong hệ thống, chúng được tổ chức như một cộng đồng thông qua mối quan hệ chung với một agent điều phối (Faccilitator agent).
1.7 So sánh BKAS với các công nghệ tính toán phân tán
Một đặc điểm rất quan trọng mà phân biệt BKAS với các mô hình tính toán phân tán khác là mô hình tính toán ủy quyền (delegated computing) của nó, cho phép người dùng và các agent phần mềm mô tả những yêu cầu bằng những cái cần được làm mà không cần những đặc tả về ai sẽ làm công việc đó và cách thức mà công việc đó được thực hiện, chẳng hạn: “Khi một thông điệp dành cho tôi tới về vấn đề an ninh, hóy bỏo cho tôi ngay lập tức”. Requester sẽ giao quyền điều khiển để đáp ứng một mục tiêu (goal) cho facilitator agent – một server agent được chuyên môn hóa trong BKAS mà phối hợp hoạt động của cộng đồng agent nhằm thực hiện những mục tiêu giải quyết các vấn đề phức tạp ở mức cao.
Trong BKAS, sự điều khiển cách thức mà tương tác và truyền thông xảy ra giữa các agent là sản phẩm của sự phối hợp của bốn nguồn tri thức khác nhau:
1. Requester chỉ ra một mục tiêu cho facilitator và cung cấp lời chỉ dẫn về việc mục tiêu đú nờn được đáp ứng như thế nào.
2. Các provider đăng ký các khả năng của chúng với facilitator, biết những dịch vụ nào mà chúng có thể cung cấp và giới hạn của những khả năng của chúng.
3. Facilitator bảo trì một danh sách các provider agent đang sẵn sàng và một tập các chiến lược chung để đáp ứng các mục tiêu.
4. Các meta-agent lưu giữ những tri thức và chiến lược cụ thể đối với một phạm vi (domain) hay mục tiêu (goal), được sử dụng như là một sự trợ giúp cho facilitator.
Những tri thức này được sử dụng để làm thuận lợi hơn sự phối hợp giữa giữa một tập các BKAS agent. Facilitator khớp (match) một yêu cầu với một hoặc nhiều agent mà cung cấp dịch vụ để đáp ứng yêu cầu đó, giao nhiệm vụ cho chúng, kết hợp các kết quả của chúng, và gửi kết quả lại cho requester. Cách phối hợp giữa các agent như thế này có thể được áp dụng để
thực hiện cả hai loại công việc đơn giản và phức tạp, nhiều bước. Để bổ sung cho sự ủy quyền, BKAS cũng cung cấp khả năng tạo ra những cuộc gọi trực tiếp đến một agent cụ thể, và broadcast các yêu cầu.
1.8 Các agent chính trong mô hình
Facilitator agent: được đặc tả như một agent server có khả năng hồi đáp tới việc truyền thông giữa các agent cùng hoạt động và việc giải quyết các vấn đề chung. Trong nhiều hệ thống, facilitator cũng được sử dụng để cung cấp một kho dữ liệu chung cho tất cả các agent của nó, cho phép chúng ghi nhận theo kiểu bảng đen của tương tác. Một hệ thống không có giới hạn về số lượng facilitator agent.Một hệ thống lớn có thể là sự kết hợp của nhiều nhúm facilitator agent và agent thành phần, và mỗi nhúm như vậy đều có cấu trúc như hình 1. Một facilitator duy trì một cơ sở tri thức là các bản ghi năng lực về một tập hợp các agent, và việc sử dụng tri thức đó để thực hiện các yêu cầu và cung cấp các dịch vụ trong việc thực thi các liên hệ. Điểm cơ bản trong chức năng của facilitator agent là sự uỷ quyền “trong suốt” (transparent delegation). Điều này có nghĩa là, khi một agent thành viên phát sinh một yêu cầu, và facilitator agent có thể quản lý những đáp ứng yêu cầu đó, agent yêu cầu không cần bất cứ tri thức nào để nhận dạng hay định vị agent thực thi yêu cầu này. Nhiệm vụ của facilitator agent là kết nối giữa yêu cầu và thực thi yêu cầu. Sự uỷ quyền trong suốt này là khả thi vì các khả năng của từng agent trong hệ thống đều được đặc tả dưới dạng các dịch vụ, sự trong suốt ở đõy có nghĩa là các agent yêu cầu và thực thi yêu cầu không hề “biết” nhau, chúng chi cần đặc tả yêu cầu và đặc tả khả năng của chúng với facilitator agent.
Facilitator agent là agent quan trọng nhất trong mô hình, vai trò và cơ chế hoaạt động của nó cũn được nhắc đến trong phần sau của báo cáo.
Agent khác (Client Agent): các agent của trong mô hình, trừ facilitator agent, đều được coi là các agent khách (client agent). Facilitator agent cung cấp cơ chế giao tiếp, và các dịch vụ thiết yếu cho các agent khách. Khi được kích hoạt, agent khách tạo kết nối đến facilitator agent, là facilitator agent mức cha của agent khách đó, để đăng ký những dịch vụ mà nó có thể cung cấp. Khi có yêu cầu về một trong các dịch vụ đó, facilitator agent sẽ gửi yêu cầu đến cho agent khách này thông qua ngôn ngữ truyền thông giữa các agent – ICL (sẽ được trình bày trong phần sau). Agent khách sẽ phõn tích yêu cầu này, thực thi nó, và gửi kết quả hoặc báo cáo đến cho facilitator agent. Trong quá trình thực thi một yêu cầu, agent kỏhch này có thể sử dụng các dịch vụ khác mà hệ thống agents cung cấp.
Agent ứng dụng (Application Agent): cung cấp một tập các service (dịch vụ) cơ bản về một nhu cầu cụ thể nào đó. Trên thực tế chúng có thể là các ứng dụng cụ thể. Điều đáng quan tâm là các ứng dụng có thể là các ứng dụng có công nghệ độc lập (Ví dụ như các ứng dụng xử lý tiếng nói. email hay các ứng dụng cụ thể nào đó như các ứng dụng về bài toán lập kế hoạch du lịch).
Siêu agent (Meta-agent): là agent đóng vai trò trợ giúp cho Facilitator trong việc phối hợp các hoạt động của các agent khác. Meta-agent có thể giúp cho Facilitator agent trong việc hỗ trợ giao tiếp giữa các agent ở các miền (lĩnh vực) nhiệm vụ độc lập cũng như được xây dựng trờn cỏc công nghệ độc lập. Meta-agent có thể tăng nên khi việc sử dụng các miền (lĩnh vực) nhiệm vụ tăng lên cũng như các tri thức xác định về các miền nhiệm vụ như các luật (rule), thuật toán lớn.
Agent giao diện người dùng (User Interface Agent): đóng vai trũ khỏ quan trọng và thú vị trong nhiều hệ BKAS. Trong một số hệ, Interface Agent được thực hiện bởi một tập các agent khác được gọi là các “Micro-agent”, trong đó mỗi “Micro-agent“ đóng vai trò
giám sát một kiểu đầu vào khác nhau của hệ thống (Point-and-click, các tín hiệu từ bút, giọng núi,…) và cộng tác để có thể đưa ra các diễn giải tốt nhất trợ giúp cho hệ thống giao diện người dùng (User Interface).
Agent thao tác với ontology (Ontology agent): là agent quan trọng trong hệ thống đa agent có sử dụng nền tảng ontology. Agent này đảm nhiệm các thao tác trên hệ ontology, cung cấp tri thức về lĩnh vực cho các agent yêu cầu. Hiện nay, việc sử dụng ontology mã hoá tri thức về một lĩnh vực, tạo ra một lưới ngữ nghĩa(web semantic) trở lên rất phổ biến, nên việc sử dụng agent thao tác với ontology giúp phõn tách hệ thống với tri thức về lĩnh vực mà hệ thống thao tác.
Cơ sở hạ tầng chung để xõy dựng lên những agent trên được cung cấp bới một thư viện hỗ trợ, đặc trưng cho các ngôn ngữ lập trình khác nhau. Những thư viện này được thiết kế để giảm thiểu các yêu cầu phức tạp khi xõy dựng một hệ thống mới và tăng cường khả năng kế thừa của hệ thống. Framework Jade cung cấp một thư viện như vậy.
Như vậy, trong một hệ BKAS, các agent khách hoàn toàn độc lập với nhau, chúng chỉ biết duy nhất một facilitator agent mức cha của chúng. Điều này tạo ra khả năng linh hoạt trong việc mở rộng hệ thống, đăng ký và cung cấp các dịch vụ của hệ thống.
1.9 Đăng ký dịch vụ trong hệ thống dựa mô hình BKAS
Mỗi agent trong hệ thống xõy dựng trên mô hình BKAS đều định nghĩa và công bố một tập các khả năng, mô tả các dịch vụ mà nó cung cấp. Những công bố này thiết lập một giao diện mức cao cho agent này. Giao diện này được facilitator agent sử dung trong giao tiếp với agent đó, và đặc biệt quan trọng trong việc uỷ quyền đáp ứng các yêu cầu (hoặc một phần của yêu cầu)
cho agent. Chúng ta có thể coi những công bố các khả năng của agent như các đáp ứng.
Có hai loại đáp ứng chớnh: đáp ứng chức năng và đáp ứng về dữ liệu. Một đáp ứng thủ tục thực hiện một công việc hay một hành động, trong khi đáp ứng dữ liệu phục vụ việc truy cập vào một tõp dữ liệu. Ví dụ, trong việc tạo một agent cho một ứng dụng mail, đáp ứng chức năng có thể được định nghĩa cho hành động gửi thông điệp đến cho một người, kiểm tra việc nhận các mail vào trong hàng đợi, hay việc trình bày từng tin trên màn hình. Cũn agent phụ trách dữ liệu, chúng định nghĩa một đáp ứng dữ liệu với mỗi một quan hệ được mô tả trong cơ sở dữ liệu. Thông thường, một đáp ứng dữ liệu được sử dụng để cung cấp một kho dữ liệu chia sẻ, mà không chỉ được truy vấn, mà cũn được cập nhật bởi các agent khác có yêu cầu.
Hình 10: Đăng ký dịch vụ với facilitator agent.