iT邦幫忙

2025 iThome 鐵人賽

DAY 17
0
生成式 AI

當 .NET 遇見 AI Agents:用 Semantic Kernel × MCP 打造智慧協作應用系列 第 17

Day 17: Semantic Kernel Multi-Agent 實戰 - 群組討論 Agent 協作

  • 分享至 

  • xImage
  •  

今天要來看另一種多 Agent 的應用場景:群組討論。這種情境下,會有多個 Agent,每個 Agent 可能扮演不同的角色,進行群組討論,並且需要協同工作來完成任務。

什麼是群組討論 Agent 協作?

群組討論 Agent 協作是指多個 Agent 在一個討論環境中,根據各自的角色和專長,進行互動和協作,達成共同目標。這種方式可以模擬人類團隊合作的情境,讓不同的 Agent 貢獻各自的知識和觀點,然後產生更豐富和多元的結果。

為什麼要使用群組討論 Agent 協作?

使用群組討論 Agent 協作有以下幾個好處:

  1. 多樣性:不同的 Agent 可以帶來不同的觀點和知識,讓討論更全面。
  2. 專業化:每個 Agent 可以專注於自己的領域,提高討論的深度和品質。
  3. 協同工作:Agent 可以互相補充和協助,達成更複雜的任務。
  4. 模擬真實情境:這種方式可以模擬真實世界中的團隊合作,讓系統更具人性化。

範例:新品宣傳文案產生

在這個範例中,我們將使用群組討論 Agent 協作來產生一則新品宣傳文案。假設我們有三個不同角色的 Agent:創意 Agent、批判 Agent 和文案總編 Agent。這些 Agent 將協同工作,產出一份廣告文案。

1. 定義 Agent 角色

首先,我們需要定義每個 Agent 的角色和職責:

  • 創意 Agent:負責提出創意點子和概念。
// 正方:創意派
var creative = new ChatCompletionAgent
{
    Kernel = kernel,
    Name = "CreativeAgent",
    Description = "創意派",
    Instructions =
    """
    你是行銷創意總監,負責提出情感強烈、吸引人的廣告文案。
    目標:讓消費者立刻被打動想要購買。
    """
};
  • 批判 Agent:負責評估創意的可行性和潛在問題,避免誇大不實的宣傳。
// 反方:批判派
var critical = new ChatCompletionAgent
{
    Kernel = kernel,
    Name = "CriticalAgent",
    Description = "批判派",
    Instructions =
    """
    你是法務與品牌把關者,負責檢視文案是否誇大不實或不符合品牌價值。
    任務:挑出過度浮誇或不符事實的句子,並給出更中肯的建議。
    """
};
  • 文案總編 Agent:負責整合創意和批判的意見,撰寫最終的文案。
// 整合者:編輯
var editor = new ChatCompletionAgent
{
    Kernel = kernel,
    Name = "EditorAgent",
    Description = "文案總編者",
    Instructions =
    """
    你是編輯,負責收斂 Creative 與 Critical 的意見,
    輸出一份最終文案:要吸引人,但要真實可信,適合放到 FB 廣告。
    請直接輸出一段最終文案,不要長篇分析。
    """
};

2. 設定討論流程

接下來,需要設定討論的回合,讓 Agent 依序進行互動,以避免無限迴圈。

// Orchestration 設定:輪流發言,最多 4 輪
var manager = new RoundRobinGroupChatManager { MaximumInvocationCount = 4 };
var orchestration = new GroupChatOrchestration(manager, creative, critical, editor);

Step 3: 建立協作流程物件

再次提醒,所有變數都必須是在 InProcessRuntime 啟動後建立。

// 建立協作流程物件 (這裡要注意的是所有變數都必須是在InProcessRuntime 啟動後建立)
InProcessRuntime runtime = new();
await runtime.StartAsync();

Step 4: 執行協作流程

模擬執行一份產品內容來測試群組討論 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 貢獻各自的專長,最終產出一份宣傳文案。這種多代理的做法需要注意一點的是必須給予討論回合數,以避免陷入無限迴圈。許多應用場景都可以試試看這種方式,例如產品設計、行銷策略制定等。


上一篇
Day 16: Semantic Kernel Multi-Agent 實戰 - SequentialOrchestration 實現合約內容的多代理人協同審查
下一篇
Day 18 - Semantic Kernel Multi-Agent 實戰 - Magentic Agent 重塑公關危機應對
系列文
當 .NET 遇見 AI Agents:用 Semantic Kernel × MCP 打造智慧協作應用20
圖片
  熱門推薦
圖片
{{ item.channelVendor }} | {{ item.webinarstarted }} |
{{ formatDate(item.duration) }}
直播中

尚未有邦友留言

立即登入留言