Poznámka:
Přístup k této stránce vyžaduje autorizaci. Můžete se zkusit přihlásit nebo změnit adresáře.
Přístup k této stránce vyžaduje autorizaci. Můžete zkusit změnit adresáře.
Toto je průvodce migrací pro vývojáře, kteří používali AgentGroupChat Sémantické Jádro a chtějí přejít na nový GroupChatOrchestration. Nová třída poskytuje flexibilnější a výkonnější způsob, jak spravovat skupinové interakce chatu mezi agenty.
Migrace z AgentGroupChat do GroupChatOrchestration
Nová GroupChatOrchestration třída nahrazuje AgentGroupChat jednotným rozšiřitelným orchestračním modelem. Tady je postup migrace kódu jazyka C#:
Krok 1: Nahrazení direktiv použití a odkazů na třídy
Odeberte všechny
usingpříkazy nebo odkazy naAgentChataAgentGroupChat. Například odeberte:using Microsoft.SemanticKernel.Agents.Chat;Přidejte odkaz na nový jmenný prostor orchestrace.
using Microsoft.SemanticKernel.Agents.Orchestration.GroupChat;
Krok 2: Aktualizace inicializace
Před:
AgentGroupChat chat = new(agentWriter, agentReviewer)
{
ExecutionSettings = new()
{
SelectionStrategy = new CustomSelectionStrategy(),
TerminationStrategy = new CustomTerminationStrategy(),
}
};
Po:
using Microsoft.SemanticKernel.Agents.Orchestration.GroupChat;
GroupChatOrchestration orchestration = new(
new RoundRobinGroupChatManager(),
agentWriter,
agentReviewer);
Krok 3: Zahájení skupinového chatu
Před:
chat.AddChatMessage(input);
await foreach (var response in chat.InvokeAsync())
{
// handle response
}
Po:
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));
Krok 4: Přizpůsobení orchestrace
Nový model orchestrace umožňuje vytvářet vlastní strategie pro ukončení, výběr agenta a další pomocí podtříd GroupChatManager a přepsání jejích metod. Další podrobnosti najdete v dokumentaci k GroupChatOrchestration .
Krok 5: Odebrání zastaralých rozhraní API
Odeberte veškerý kód, který přímo manipuluje s konkrétními vlastnostmi AgentGroupChatnebo metodami, protože se už neudržují.
Krok 6: Kontrola a testování
- Zkontrolujte kód pro všechny zbývající odkazy na staré třídy.
- Otestujte scénáře skupinového chatu a ujistěte se, že se nová orchestrace chová podle očekávání.
Úplný příklad
Tato příručka ukazuje, jak migrovat základní logiku Step03_Chat.cs z AgentGroupChat nového GroupChatOrchestration, včetně vlastního správce skupinového chatu, který implementuje strategii ukončení na základě schválení.
Krok 1: Definice agenta
V definici agenta nejsou potřeba žádné změny. Můžete dál používat stejné AgentWriter a AgentReviewer stejné jako předtím.
Krok 2: Implementace vlastního správce skupinového chatu
Vytvořte vlastní GroupChatManager který ukončí chat, když poslední zpráva obsahuje "schválit" a pouze kontrolor schvaluje:
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."
});
}
}
Krok 3: Inicializace orchestrace
Tu AgentGroupChat inicializaci nahraďte:
var orchestration = new GroupChatOrchestration(
new ApprovalGroupChatManager(ReviewerName)
{
MaximumInvocationCount = 10
},
agentWriter,
agentReviewer);
Krok 4: Spuštění orchestrace
Nahraďte smyčku zprávy:
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();
Shrnutí
- Použijte vlastní
GroupChatManagerpro ukončení na základě schválení. - Nahraďte smyčku chatu voláním orchestrace.
- Zbývající nastavení agenta a formátování zpráv může zůstat beze změny.
Migrace z AgentGroupChat do GroupChatOrchestration
Nové GroupChatOrchestration rozhraní API v Pythonu nahrazuje starší AgentGroupChat vzor a poskytuje flexibilnější a rozšiřitelný způsob správy konverzací s více agenty. Tady je postup migrace kódu:
Krok 1: Nahrazení odkazů na importy a třídy
Odeberte všechny importy nebo odkazy na
AgentGroupChata související strategie. Například odeberte:from semantic_kernel.agents import AgentGroupChatImportujte nové třídy orchestrace:
from semantic_kernel.agents import GroupChatOrchestration, RoundRobinGroupChatManager from semantic_kernel.agents.runtime import InProcessRuntime
Krok 2: Aktualizace inicializace
Nahraďte AgentGroupChat s GroupChatOrchestration a GroupChatManager (např. RoundRobinGroupChatManager nebo vlastní) pro lepší řízení toku.
Před:
group_chat = AgentGroupChat(
agents=[agent_writer, agent_reviewer],
termination_strategy=CustomTerminationStrategy(),
selection_strategy=CustomSelectionStrategy(),
)
Po:
from semantic_kernel.agents import GroupChatOrchestration, RoundRobinGroupChatManager
orchestration = GroupChatOrchestration(
members=[agent_writer, agent_reviewer],
manager=RoundRobinGroupChatManager(),
)
Krok 3: Zahájení skupinového chatu
Před:
await group_chat.add_chat_message(message=TASK)
async for content in group_chat.invoke():
# handle response
Po:
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()
Krok 4: Přizpůsobení orchestrace
Nový model orchestrace umožňuje vytvářet vlastní strategie pro ukončení, výběr agenta a další pomocí podtřídy GroupChatManager a přepsání jejích metod. Další podrobnosti najdete v dokumentaci k GroupChatOrchestration .
Krok 5: Odebrání zastaralých rozhraní API
Odeberte veškerý kód, který přímo manipuluje s konkrétními vlastnostmi AgentGroupChatnebo metodami, protože se už neudržují.
Krok 6: Kontrola a testování
- Zkontrolujte kód pro všechny zbývající odkazy na staré třídy.
- Otestujte scénáře skupinového chatu a ujistěte se, že se nová orchestrace chová podle očekávání.
Úplný příklad
Tato příručka ukazuje, jak migrovat základní logiku step06_chat_completion_agent_group_chat.py z AgentGroupChat nového GroupChatOrchestration, včetně vlastního správce skupinového chatu, který implementuje strategii ukončení na základě schválení.
Krok 1: Definice agenta
V definici agenta nejsou potřeba žádné změny. Můžete dál používat stejné AgentWriter a AgentReviewer stejné jako předtím.
Krok 2: Implementace vlastního správce skupinového chatu
**
Vytvořte vlastní GroupChatManager, který ukončí chat, když poslední zpráva obsahuje "schváleno", a pouze recenzent může schválit.
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.")
Krok 3: Inicializace orchestrace
Inicializaci AgentGroupChat nahraďte následujícími kroky:
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),
)
Krok 4: Spuštění orchestrace
Nahraďte smyčku zprávy:
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()
Shrnutí
- Použijte vlastní
GroupChatManagerpro ukončení na základě schválení. - Nahraďte cyklus chatu invokací orchestrace.
- Zbývající nastavení agenta a formátování zpráv může zůstat beze změny.
Poznámka:
Orchestrace agentů zatím není v Java vývojovém prostředí SDK k dispozici.