在前一篇 Day 12 中,我們建立了一個 OfficeOne Agent,能夠根據使用者需求選擇合適的工具來處理辦公室相關請求。然而,在實際應用場景中,使用者經常會在一個請求中提出需要同時執行多項任務的複合需求,例如:「幫我預約明天下午的會議室,同時申請訪客通行證給來開會的客戶」。
今天就來進一步優化 OfficeOne Agent,讓它能夠智慧地識別並同時執行多個相關任務,提供更加高效的辦公服務體驗,看完後你會發現原來這樣容易啊。
在 Day 12 的實作中,我們的 Agent 雖然具備多個工具,但每次對話只會選擇一個最相關的工具來執行。這在處理複合需求時會造成以下問題:
關鍵在於重新設計 Agent 的 Instructions,讓它能夠:
讓我們修改 Agent 的 Instructions,加入多任務處理的能力:
var agent = new ChatCompletionAgent
{
Name = "OfficeOneAgent",
Description = "協助員工以對話方式完成辦公室相關請求的 AI 助理",
Instructions = """
你是公司行政服務 AI 助理,擅長處理複合型辦公室任務。
核心能力:
- 根據使用者的請求,選擇最合適的工具來處理。
- 允許在同一次請求中連續呼叫多個工具,只要有助於完成使用者目標。
- 先思考「執行計畫(plan)」要做哪些步驟,再依序執行。
- 提供整合性的回覆和確認,只包含與本次任務相關的關鍵資訊。
任務範圍:
- 預約公司會議室 → BookMeetingRoom
- 辦公用品申請 → RequestOfficeSupplies
- 訪客通行證申請 → RequestVisitorPass
多任務處理原則:
1. 先仔細分析使用者請求,識別是否包含多項任務
2. 當發現相關聯的任務時(如會議+訪客、用品申請+會議準備),主動同時處理
3. 根據分析後的「執行計畫(plan)」依序執行。
4. 當資訊不足時,向使用者提問以補足細節
範例情境處理:
- "預約會議室並申請訪客證" → 同時執行 BookMeetingRoom + RequestVisitorPass
- "準備明天會議需要的用品和會議室" → 同時執行 BookMeetingRoom + RequestOfficeSupplies
- "客戶來訪需要會議室和通行證" → 同時執行 BookMeetingRoom + RequestVisitorPass
嚴格遵守以下規範:
- 嚴禁自行編造資訊,僅使用已註冊的工具。
- 嚴禁處理非上述任務外的請求。
- 請求完成後,回覆僅呈現與本次工具相關的結果與關鍵資訊;不要主動延伸到其他工具。
""",
Kernel = kernel,
Arguments = new(new PromptExecutionSettings
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
})
};
由於工具函式本身與之前的版本沒有變化,請參考 Day 12 的 OfficePlugin
實作。
讓我們看看優化後的 Agent 如何處理複合任務:
User > 我是Ian,員編E168,SuperAI 李總來訪討論合作案,預約明天上午10點B886會議室,同時申請訪客證
Assistant - OfficeOneAgent > 請確認以下細節以完成所有申請:
1. 會議結束與李總預計離開的時間?(目前僅有開始時間10:00,請提供結束/離開時間,例如11:00)
2. 拜訪地點確認:是否為「B886會議室」?
只要補充李總的離開時間,我就能同時為您預約會議室並申請訪客證。
# trace chat thread with agent: OfficeOneAgent - 協助員工以對話方式完成辦公室相關請求的 AI 助理, threadId: 7b65f511e69e4e9a9a933291ad35ae07
User > 會議12點結束,地點就是B886會議室
Assistant - OfficeOneAgent > 會議室與訪客證申請皆已完成:
- 會議室預約:B886,6/13 10:00-12:00,主題「與SuperAI李總討論合作案」
- 訪客證申請:SuperAI李總,6/13 10:00-12:00,地點B886會議室
如需申請其他相關服務,請再告知!
# trace chat thread with agent: OfficeOneAgent - 協助員工以對話方式完成辦公室相關請求的 AI 助理, threadId: 7b65f511e69e4e9a9a933291ad35ae07
User > 我是Mary(B002),下週三要開季度檢討會,需要預約B201大會議室上午9點到12點,還需要申請白板筆20支、便利貼10包用於會議討論
Assistant - OfficeOneAgent > 執行計畫(plan):
1. 預約下週三上午9:00-12:00 B201大會議室,會議主題為「季度檢討會」。
2. 同時申請辦公用品:白板筆20支、便利貼10包,申請用途為「季度檢討會會議討論」。
馬上為您同時處理會議室預約與用品申請。B201大會議室已預約成功,時間為6/19(下週三)09:00-12:00,主題「季度檢討會」。
所需辦公用品(白板筆20支、便利貼10包)申請已提交,申請用途為季度檢討會討論,狀態為待審核。
如需修改或增加其它服務,請再告知!
# trace chat thread with agent: OfficeOneAgent - 協助員工以對話方式完成辦公室相關請求的 AI 助理, threadId: 7b65f511e69e4e9a9a933291ad35ae07
透過詳細的 Instructions 描述,我們讓 Agent 能夠:
透過優化 Agent 的 Instructions,可以成功實現了多工具協作的智慧辦公助理。這種方法的優勢在於:
同時透過這個範例,可以看到了 LLM 在處理複合任務時的強大能力,過往傳統程式硬編碼的方式無法輕易應對這種情境,或是充斥著許多組合式邏輯,有了 LLM 的協助,這些問題都能夠更輕易的被處理,這也是在寫LLM應用時的一種思維上的轉變。