今天要來看另一種多 Agent 的應用場景:群組討論。這種情境下,會有多個 Agent,每個 Agent 可能扮演不同的角色,進行群組討論,並且需要協同工作來完成任務。
群組討論 Agent 協作是指多個 Agent 在一個討論環境中,根據各自的角色和專長,進行互動和協作,達成共同目標。這種方式可以模擬人類團隊合作的情境,讓不同的 Agent 貢獻各自的知識和觀點,然後產生更豐富和多元的結果。
使用群組討論 Agent 協作有以下幾個好處:
在這個範例中,我們將使用群組討論 Agent 協作來產生一則新品宣傳文案。假設我們有三個不同角色的 Agent:創意 Agent、批判 Agent 和文案總編 Agent。這些 Agent 將協同工作,產出一份廣告文案。
首先,我們需要定義每個 Agent 的角色和職責:
// 正方:創意派
var creative = new ChatCompletionAgent
{
Kernel = kernel,
Name = "CreativeAgent",
Description = "創意派",
Instructions =
"""
你是行銷創意總監,負責提出情感強烈、吸引人的廣告文案。
目標:讓消費者立刻被打動想要購買。
"""
};
// 反方:批判派
var critical = new ChatCompletionAgent
{
Kernel = kernel,
Name = "CriticalAgent",
Description = "批判派",
Instructions =
"""
你是法務與品牌把關者,負責檢視文案是否誇大不實或不符合品牌價值。
任務:挑出過度浮誇或不符事實的句子,並給出更中肯的建議。
"""
};
// 整合者:編輯
var editor = new ChatCompletionAgent
{
Kernel = kernel,
Name = "EditorAgent",
Description = "文案總編者",
Instructions =
"""
你是編輯,負責收斂 Creative 與 Critical 的意見,
輸出一份最終文案:要吸引人,但要真實可信,適合放到 FB 廣告。
請直接輸出一段最終文案,不要長篇分析。
"""
};
接下來,需要設定討論的回合,讓 Agent 依序進行互動,以避免無限迴圈。
// Orchestration 設定:輪流發言,最多 4 輪
var manager = new RoundRobinGroupChatManager { MaximumInvocationCount = 4 };
var orchestration = new GroupChatOrchestration(manager, creative, critical, editor);
再次提醒,所有變數都必須是在 InProcessRuntime 啟動後建立。
// 建立協作流程物件 (這裡要注意的是所有變數都必須是在InProcessRuntime 啟動後建立)
InProcessRuntime runtime = new();
await runtime.StartAsync();
模擬執行一份產品內容來測試群組討論 Agent 協作。
var task =
"""
請針對新品『環保水瓶』,產出一則 FB 廣告文案。
## 產品資訊
產品名稱:EcoFlow 環保水瓶
目標客群:20–35 歲,關注環保、健康、喜歡戶外活動的年輕族群
### 功能特色:
可重複使用,減少一次性塑膠瓶浪費
具備保冷 24 小時、保溫 12 小時功能
採用 100% 可回收不鏽鋼材質
### 價格定位:NT$ 699,屬於「平價環保精品」路線
""";
var result = await orchestration.InvokeAsync(task, runtime);
Console.WriteLine(await result.GetValueAsync());
await runtime.RunUntilIdleAsync();
🌿 你的每一口水,都在守護地球 🌏
EcoFlow 環保水瓶
不只是瓶子,是你的態度。
100%可回收不鏽鋼,24小時保冷、12小時保溫,從健身房到山林野外,時刻純淨隨行。
用NT$699,成就你的環保Style, 讓生活升級,也為世界更美好。
現在就加入 EcoFlow 行列 —— 為愛自己、也愛地球而喝!
#EcoFlow #環保新日常 #年輕就要有改變
透過這個範例,可以看到群組討論 Agent 協作如何模擬真實世界中的團隊合作,讓不同角色的 Agent 貢獻各自的專長,最終產出一份宣傳文案。這種多代理的做法需要注意一點的是必須給予討論回合數,以避免陷入無限迴圈。許多應用場景都可以試試看這種方式,例如產品設計、行銷策略制定等。