Not
Bu sayfaya erişim yetkilendirme gerektiriyor. Oturum açmayı veya dizinleri değiştirmeyi deneyebilirsiniz.
Bu sayfaya erişim yetkilendirme gerektiriyor. Dizinleri değiştirmeyi deneyebilirsiniz.
Bu, Anlam Çekirdeği'nde kullanan AgentGroupChat ve yeni GroupChatOrchestrationöğesine geçiş yapmak isteyen geliştiriciler için bir geçiş kılavuzudur. Yeni sınıf, aracılar arasındaki grup sohbeti etkileşimlerini yönetmek için daha esnek ve güçlü bir yol sağlar.
AgentGroupChat'den GroupChatOrchestration'ye geçiş
Yeni GroupChatOrchestration sınıf, AgentGroupChat ile birleştirilmiş ve genişletilebilir bir orkestrasyon modeli getiriyor. C# kodunuzu şu şekilde geçireceksiniz:
1. Adım: Kullanımlar ve Sınıf Referanslarını Değiştirme
usingifadelerini veyaAgentChatveAgentGroupChatreferanslarını kaldırın. Örneğin, şunları kaldırın:using Microsoft.SemanticKernel.Agents.Chat;Yeni orkestrasyon ad alanına bir başvuru ekleyin.
using Microsoft.SemanticKernel.Agents.Orchestration.GroupChat;
2. Adım: Güncelleştirme Başlatma
Öncesi:
AgentGroupChat chat = new(agentWriter, agentReviewer)
{
ExecutionSettings = new()
{
SelectionStrategy = new CustomSelectionStrategy(),
TerminationStrategy = new CustomTerminationStrategy(),
}
};
Sonrası:
using Microsoft.SemanticKernel.Agents.Orchestration.GroupChat;
GroupChatOrchestration orchestration = new(
new RoundRobinGroupChatManager(),
agentWriter,
agentReviewer);
3. Adım: Grup Sohbetini Başlatma
Öncesi:
chat.AddChatMessage(input);
await foreach (var response in chat.InvokeAsync())
{
// handle response
}
Sonrası:
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));
4. Adım: Düzenlemeyi Özelleştirme
Yeni düzenleme modeli, alt sınıflama GroupChatManager ve yöntemlerini geçersiz kılarak sonlandırma, aracı seçimi ve daha fazlası için özel stratejiler oluşturmanıza olanak tanır. Daha fazla ayrıntı için lütfen GroupChatOrchestration belgelerine bakın .
5. Adım: Kullanım Dışı API'leri kaldırma
Kodun artık korunmayan AgentGroupChat'e özgü özelliklerini veya yöntemlerini doğrudan işleyen bölümlerini kaldırın.
6. Adım: Gözden Geçirme ve Test
- Eski sınıflara kalan referanslar için kodunuzu gözden geçirin.
- Yeni düzenlemenin beklendiği gibi davrandığından emin olmak için grup sohbeti senaryolarınızı test edin.
Tam Örnek
Bu kılavuzda, onay tabanlı sonlandırma stratejisini uygulayan özel bir grup sohbet yöneticisi de dahil olmak üzere 'nin temel mantığını Step03_Chat.cs 'den AgentGroupChat yeni GroupChatOrchestration'ye geçirme gösterilmektedir.
1. Adım: Aracı Tanımı
Aracı tanımında değişiklik gerekmez. Daha önce olduğu gibi aynı AgentWriter ve AgentReviewer kullanmaya devam edebilirsiniz.
2. Adım: Özel Grup Sohbet Yöneticisi Uygulama
Son iletide "onayla" ifadesi bulunduğunda sohbeti sonlandıran bir özel GroupChatManager öğe oluşturun ve yalnızca gözden geçiren onaylayabilir:
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."
});
}
}
3. Adım: Düzenlemeyi Başlatma
Başlatma ifadesini AgentGroupChat şununla değiştirin:
var orchestration = new GroupChatOrchestration(
new ApprovalGroupChatManager(ReviewerName)
{
MaximumInvocationCount = 10
},
agentWriter,
agentReviewer);
4. Adım: Orchestration'ı çalıştırma
İleti döngüsünü şununla değiştirin:
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();
Özet
- Onay tabanlı sonlandırma için özel
GroupChatManagerkullanın. - Sohbet döngüsünü orkestrasyon çağrısıyla değiştirin.
- Aracı kurulumunuzun ve ileti biçimlendirmenizin geri kalanı değişmeden kalabilir.
AgentGroupChat'dan GroupChatOrchestration'ye geçiş
Python'daki yeni GroupChatOrchestration API, eski AgentGroupChat düzenin yerini alır ve çok aracılı konuşmaları yönetmek için daha esnek ve genişletilebilir bir yol sağlar. Kodunuzu şu şekilde geçirelim:
1. Adım: İçeri Aktarmaları ve Sınıf Bağlantılarını Değiştirme
AgentGroupChatve ilişkili stratejilere yapılan tüm içeri aktarmaları veya başvuruları kaldırın. Örneğin, şunları kaldırın:from semantic_kernel.agents import AgentGroupChatYeni düzenleme sınıflarını içeri aktarın:
from semantic_kernel.agents import GroupChatOrchestration, RoundRobinGroupChatManager from semantic_kernel.agents.runtime import InProcessRuntime
2. Adım: Güncelleştirme Başlatma
Akışı kontrol etmek için AgentGroupChat öğesini GroupChatOrchestration ve bir GroupChatManager (örn. RoundRobinGroupChatManager veya özel bir tane) ile değiştirin.
Öncesi:
group_chat = AgentGroupChat(
agents=[agent_writer, agent_reviewer],
termination_strategy=CustomTerminationStrategy(),
selection_strategy=CustomSelectionStrategy(),
)
Sonrası:
from semantic_kernel.agents import GroupChatOrchestration, RoundRobinGroupChatManager
orchestration = GroupChatOrchestration(
members=[agent_writer, agent_reviewer],
manager=RoundRobinGroupChatManager(),
)
3. Adım: Grup Sohbetini Başlatma
Öncesi:
await group_chat.add_chat_message(message=TASK)
async for content in group_chat.invoke():
# handle response
Sonrası:
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()
4. Adım: Düzenlemeyi Özelleştirme
Yeni orkestrasyon modeli, GroupChatManager alt sınıflandırarak ve yöntemlerini geçersiz kılmak suretiyle sonlandırma, aracı seçimi ve daha fazlası için özel stratejiler oluşturmanıza olanak tanır. Daha fazla ayrıntı için lütfen GroupChatOrchestration belgelerine bakın .
5. Adım: Kullanım Dışı API'leri kaldırma
AgentGroupChat ile ilgili belirli özellikleri veya yöntemleri doğrudan işleyen tüm kodları, artık korunmadıkları için kaldırın.
6. Adım: Gözden Geçirme ve Test
- Eski sınıflara yapılan referanslar için kodunuzu gözden geçirin.
- Yeni düzenlemenin beklendiği gibi davrandığından emin olmak için grup sohbeti senaryolarınızı test edin.
Tam Örnek
Bu kılavuzda, onay tabanlı sonlandırma stratejisini uygulayan özel bir grup sohbet yöneticisi de dahil olmak üzere 'nin temel mantığını step06_chat_completion_agent_group_chat.py 'den AgentGroupChat yeni GroupChatOrchestration'ye geçirme gösterilmektedir.
1. Adım: Temsilci Tanımlama
Aracı tanımında değişiklik gerekmez. Önceki gibi aynı AgentWriter ve AgentReviewer'i kullanmaya devam edebilirsiniz.
2. Adım: Özel Grup Sohbet Yöneticisi Uygulama
Son ileti "onaylandı" ifadesini içerdiğinde sohbeti sonlandıran ve yalnızca gözden geçirenin onayladığı bir özel GroupChatManager öğe oluşturun:
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.")
3. Adım: Düzenlemeyi Başlatma
Başlatma işlemini AgentGroupChat ile değiştirin.
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),
)
4. Adım: Orchestration'ı çalıştırma
İleti döngüsünü şununla değiştirin:
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()
Özet
- Onay tabanlı sonlandırma için özel
GroupChatManagerkullanın. - Sohbet döngüsünü orkestrasyon çağrısıyla değiştirin.
- Aracı kurulumunuzun ve ileti biçimlendirmenizin geri kalanı değişmeden kalabilir.
Uyarı
Ajan düzenlemesi henüz Java SDK'de mevcut değil.