Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Ini adalah panduan migrasi untuk pengembang yang telah menggunakan AgentGroupChat di Kernel Semantik dan ingin beralih ke yang baru GroupChatOrchestration. Kelas baru menyediakan cara yang lebih fleksibel dan kuat untuk mengelola interaksi obrolan grup di antara agen.
Migrasi dari AgentGroupChat ke GroupChatOrchestration
Kelas baru GroupChatOrchestration menggantikan AgentGroupChat dengan model orkestrasi terpadu dan dapat diperluas. Berikut cara memigrasikan kode C# Anda:
Langkah 1: Ganti Menggunakan dan Referensi Kelas
Hapus pernyataan atau referensi apa pun
usingkeAgentChatdanAgentGroupChat. Misalnya, hapus:using Microsoft.SemanticKernel.Agents.Chat;Tambahkan referensi ke namespace orkestrasi baru:
using Microsoft.SemanticKernel.Agents.Orchestration.GroupChat;
Langkah 2: Perbarui Inisialisasi
Sebelumnya:
AgentGroupChat chat = new(agentWriter, agentReviewer)
{
ExecutionSettings = new()
{
SelectionStrategy = new CustomSelectionStrategy(),
TerminationStrategy = new CustomTerminationStrategy(),
}
};
Setelah:
using Microsoft.SemanticKernel.Agents.Orchestration.GroupChat;
GroupChatOrchestration orchestration = new(
new RoundRobinGroupChatManager(),
agentWriter,
agentReviewer);
Langkah 3: Mulai Obrolan Grup
Sebelumnya:
chat.AddChatMessage(input);
await foreach (var response in chat.InvokeAsync())
{
// handle response
}
Setelah:
using Microsoft.SemanticKernel.Agents.Orchestration;
using Microsoft.SemanticKernel.Agents.Runtime.InProcess;
InProcessRuntime runtime = new();
await runtime.StartAsync();
OrchestrationResult<string> result = await orchestration.InvokeAsync(input, runtime);
string text = await result.GetValueAsync(TimeSpan.FromSeconds(timeout));
Langkah 4: Menyesuaikan Orkestrasi
Model orkestrasi baru memungkinkan Anda membuat strategi kustom untuk penghentian, pemilihan agen, dan banyak lagi dengan membuat subkelas dari GroupChatManager dan menggantikan metodenya. Silakan lihat dokumentasi GroupChatOrchestration untuk detail selengkapnya.
Langkah 5: Hapus API yang tidak digunakan lagi
Hapus kode apa pun yang secara langsung memanipulasi AgentGroupChatproperti atau metode tertentu, karena tidak lagi dipertahankan.
Langkah 6: Tinjau dan Uji
- Tinjau kode Anda untuk referensi yang tersisa ke kelas lama.
- Uji skenario obrolan grup Anda untuk memastikan orkestrasi baru berperilaku seperti yang diharapkan.
Contoh Lengkap
Panduan ini menunjukkan cara memigrasikan logika Step03_Chat.cs inti dari AgentGroupChat ke yang baru GroupChatOrchestration, termasuk manajer obrolan grup kustom yang menerapkan strategi penghentian berbasis persetujuan.
Langkah 1: Definisi Agen
Tidak ada perubahan yang diperlukan dalam definisi agen. Anda dapat terus menggunakan yang sama AgentWriter dan AgentReviewer seperti sebelumnya.
Langkah 2: Menerapkan Manajer Obrolan Grup Kustom
Buat kustom GroupChatManager yang mengakhiri obrolan saat pesan terakhir berisi "setuju" dan hanya peninjau yang dapat menyetujui:
private sealed class ApprovalGroupChatManager : RoundRobinGroupChatManager
{
private readonly string _approverName;
public ApprovalGroupChatManager(string approverName)
{
_approverName = approverName;
}
public override ValueTask<GroupChatManagerResult<bool>> ShouldTerminate(ChatHistory history, CancellationToken cancellationToken = default)
{
var last = history.LastOrDefault();
bool shouldTerminate = last?.AuthorName == _approverName &&
last.Content?.Contains("approve", StringComparison.OrdinalIgnoreCase) == true;
return ValueTask.FromResult(new GroupChatManagerResult<bool>(shouldTerminate)
{
Reason = shouldTerminate ? "Approved by reviewer." : "Not yet approved."
});
}
}
Langkah 3: Inisialisasi Orkestrasi
Ganti inisialisasi AgentGroupChat dengan:
var orchestration = new GroupChatOrchestration(
new ApprovalGroupChatManager(ReviewerName)
{
MaximumInvocationCount = 10
},
agentWriter,
agentReviewer);
Langkah 4: Jalankan Orkestrasi
Ganti perulangan pesan dengan:
var runtime = new InProcessRuntime();
await runtime.StartAsync();
var result = await orchestration.InvokeAsync("concept: maps made out of egg cartons.", runtime);
string text = await result.GetValueAsync(TimeSpan.FromSeconds(60));
Console.WriteLine($"\n# RESULT: {text}");
await runtime.RunUntilIdleAsync();
Ringkasan
- Gunakan kustom
GroupChatManageruntuk penghentian berbasis persetujuan. - Ganti siklus obrolan dengan pemanggilan orkestrasi.
- Sisanya dari penyiapan agen dan pemformatan pesan dapat tetap tidak berubah.
Migrasi dari AgentGroupChat ke GroupChatOrchestration
API baru GroupChatOrchestration di Python menggantikan pola yang lebih AgentGroupChat lama, menyediakan cara yang lebih fleksibel dan dapat diperluas untuk mengelola percakapan multi-agen. Berikut cara memigrasikan kode Anda:
Langkah 1: Ganti Referensi Impor dan Kelas
Hapus impor atau referensi apa pun ke
AgentGroupChatdan strategi terkait. Misalnya, hapus:from semantic_kernel.agents import AgentGroupChatMengimpor kelas orkestrasi baru:
from semantic_kernel.agents import GroupChatOrchestration, RoundRobinGroupChatManager from semantic_kernel.agents.runtime import InProcessRuntime
Langkah 2: Perbarui Inisialisasi
Ganti AgentGroupChat dengan GroupChatOrchestration dan GroupChatManager (misalnya, RoundRobinGroupChatManager atau kustom) untuk mengontrol alur.
Sebelumnya:
group_chat = AgentGroupChat(
agents=[agent_writer, agent_reviewer],
termination_strategy=CustomTerminationStrategy(),
selection_strategy=CustomSelectionStrategy(),
)
Setelah:
from semantic_kernel.agents import GroupChatOrchestration, RoundRobinGroupChatManager
orchestration = GroupChatOrchestration(
members=[agent_writer, agent_reviewer],
manager=RoundRobinGroupChatManager(),
)
Langkah 3: Mulai Obrolan Grup
Sebelumnya:
await group_chat.add_chat_message(message=TASK)
async for content in group_chat.invoke():
# handle response
Setelah:
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
orchestration_result = await group_chat_orchestration.invoke(task=TASK, runtime=runtime)
value = await orchestration_result.get()
Langkah 4: Menyesuaikan Orkestrasi
Model orkestrasi baru memungkinkan Anda membuat strategi kustom untuk penghentian, pemilihan agen, dan banyak lagi dengan membuat subkelas dari GroupChatManager dan menggantikan metodenya. Silakan lihat dokumentasi GroupChatOrchestration untuk detail selengkapnya.
Langkah 5: Hapus API yang tidak digunakan lagi
Hapus kode apa pun yang secara langsung memanipulasi AgentGroupChatproperti atau metode tertentu, karena tidak lagi dipertahankan.
Langkah 6: Tinjau dan Uji
- Tinjau kode Anda untuk referensi yang tersisa ke kelas lama.
- Uji skenario obrolan grup Anda untuk memastikan orkestrasi baru berperilaku seperti yang diharapkan.
Contoh Lengkap
Panduan ini menunjukkan cara memigrasikan logika step06_chat_completion_agent_group_chat.py inti dari AgentGroupChat ke yang baru GroupChatOrchestration, termasuk manajer obrolan grup kustom yang menerapkan strategi penghentian berbasis persetujuan.
Langkah 1: Definisi Agen
Tidak ada perubahan yang diperlukan dalam definisi agen. Anda dapat terus menggunakan yang sama AgentWriter dan AgentReviewer seperti sebelumnya.
Langkah 2: Menerapkan Manajer Obrolan Grup Kustom
Buat kustom GroupChatManager yang mengakhiri obrolan saat pesan terakhir berisi "disetujui" dan hanya peninjau yang dapat menyetujui:
from semantic_kernel.agents import RoundRobinGroupChatManager, BooleanResult
class ApprovalGroupChatManager(RoundRobinGroupChatManager):
def __init__(self, approver_name: str, max_rounds: int = 10):
super().__init__(max_rounds=max_rounds)
self._approver_name = approver_name
async def should_terminate(self, chat_history):
last = chat_history[-1] if chat_history else None
should_terminate = (
last is not None and
getattr(last, 'name', None) == self._approver_name and
'approved' in (last.content or '').lower()
)
return BooleanResult(result=should_terminate, reason="Approved by reviewer." if should_terminate else "Not yet approved.")
Langkah 3: Inisialisasi Orkestrasi
Ganti inisialisasi AgentGroupChat dengan:
from semantic_kernel.agents import GroupChatOrchestration
from semantic_kernel.agents.runtime import InProcessRuntime
orchestration = GroupChatOrchestration(
members=[agent_writer, agent_reviewer],
manager=ApprovalGroupChatManager(approver_name=REVIEWER_NAME, max_rounds=10),
)
Langkah 4: Jalankan Orkestrasi
Ganti perulangan pesan dengan:
runtime = InProcessRuntime()
runtime.start()
orchestration_result = await orchestration.invoke(
task="a slogan for a new line of electric cars.",
runtime=runtime,
)
value = await orchestration_result.get()
print(f"***** Result *****\n{value}")
await runtime.stop_when_idle()
Ringkasan
- Gunakan kustom
GroupChatManageruntuk penghentian berbasis persetujuan. - Ganti siklus obrolan dengan pemanggilan orkestrasi.
- Sisanya dari penyiapan agen dan pemformatan pesan dapat tetap tidak berubah.
Nota
Orkestrasi agen belum tersedia di Java SDK.