AgentGroupChat Průvodce migrací orchestrace

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 using příkazy nebo odkazy na AgentChat a AgentGroupChat. 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í GroupChatManager pro 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 AgentGroupChat a související strategie. Například odeberte:

    from semantic_kernel.agents import AgentGroupChat
    
  • Importujte 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í GroupChatManager pro 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.