前言
Semantic Kernel 允許載入許多 Plugin,當啟用Function calling(ToolCallBehavior = ToolCallBehavior.AutoInvokeKernelFunctions
)後,
會讓 LLM 將解析用戶的問題,看看是否需要呼叫Plugin來完成用戶的問題。
例如要 onboard 一位新員工時,需要 1.建立員工帳號(MIS), 2.購買筆電(MIS), 3.申請識別證(HR), 4.寄送歡迎信件(HR) …等工作,
如果在一個 Agent 的狀況下,我們需要將這些工作全都轉成 Function 來讓 LLM 排出要完成的計劃(組合各個 Function)。
或是建立多個 Agent (ChatCompletionAgent
)來協同完成用戶的問題。
之前探索 Semantic Kernel 在客服 ChatBot 中的應用(我的客服 Bot 除了會說,還會做)中已說明一個 Agent 的方式,
接下來,就來實作多個 Agent 一起來完成企業中的問題。
實作
1.加入套件(套件使用 1.15.1-alpha)
1 | Microsoft.SemanticKernel.Agents.Abstractions |
2.建立 MIS, HR 及 MIS 的 Plugin,如下,
1 |
|
- 註: 主要會依 KMPlugin 的 Search Function 來找出要執行的 Guidelines 來讓 LLM 幫我們編排工作
- 註: Guidelines 中有各 Agent 要做的 Tasks
3.建立 Agetns (MIS, HR, AgentsManager, Manager)
AgentsManager: 依用戶的問題呼叫負責任的 Agent 去找出要執行的 Guidelines ,解析 Guidelines 指定給負責任的 Agent 執行
MIS, HR: 透過 KernelBuilder 來載入各別的 Plugin(BuildHRKernel
,BuildMISKernel
),並負責執行 AgentsManager 指派的工作
Manager: 負責判斷所有工作是否完成,如果完成就回覆approve,做為結束的依據
最後建立AgentGroupChat
,並加入上述 Agents, 並設定結束的策略為Manager
發出approve
就結束
1 | //使用 AOAI |
4.將用戶問題發送到 AgentGroupChat 中,並執行InvokeAsync
來取得結果,如下,
1 | Console.WriteLine("Please input question:"); |
輸入i want to onboard a new employee. ther email is rm@gss.com.tw
,如果如下,
1 | Please input question: |
Search 來取出 Guidelines 1.建帳號, 2.訂筆電, 3.寄 Welcom email, 4.申請識別證
知道要執行的 Agents ,執行的順序與加入 AgentGroupChat 順序有關
輸入i forgot password. ther email is rm@gss.com.tw
,如果如下,
1 | Please input question: |
Guidelines 要執行 1.重設密碼, 2.寄送重設密碼連結的 Email
參考資源
Step by Step guide to develop AI Multi-Agent system using Microsoft Semantic Kernel and GPT-4o
Business-in-a-box: Applying AutoGen and multi-agent systems to an enterprise context
探索 Semantic Kernel 在客服 ChatBot 中的應用(我的客服 Bot 除了會說,還會做)
一條大路十二彎,這頭不彎那頭彎: 喻同一件事,同一個道理,有各種不同的看法,和不同的發展。