Delen via


Semantische kernagentorkestratie

Belangrijk

Agent Orchestratiefuncties in de Agent Framework bevinden zich in de experimentele fase. Ze zijn in actieve ontwikkeling en kunnen aanzienlijk veranderen voordat ze naar de preview- of releasekandidaatfase gaan.

Met het Agent Orchestration-framework van Semantic Kernel kunnen ontwikkelaars eenvoudig complexe agentwerkstromen bouwen, beheren en schalen.

Waarom indeling met meerdere agents?

Traditionele systemen met één agent zijn beperkt in hun vermogen om complexe, meervoudige taken te verwerken. Door meerdere agents te organiseren, elk met gespecialiseerde vaardigheden of rollen, kunnen we systemen maken die robuuster, adaptief zijn en in staat zijn om problemen in de echte wereld samen op te lossen. Indeling met meerdere agents in Semantic Kernel biedt een flexibele basis voor het bouwen van dergelijke systemen, die ondersteuning bieden voor verschillende coördinatiepatronen.

Orkestratiepatronen

Semantische Kernel ondersteunt verschillende orkestratiepatronen, waarvan elk is ontworpen voor verschillende samenwerkingsscenario's. Deze patronen zijn beschikbaar als onderdeel van het framework en kunnen eenvoudig worden uitgebreid of aangepast.

Ondersteunde orkestratiepatronen

Patroon Beschrijving Typisch gebruiksgeval
Simultaan Hiermee wordt een taak naar alle agents uitgezonden en worden resultaten onafhankelijk verzameld. Parallelle analyse, onafhankelijke subtaken, ensemble besluitvorming.
Sequentieel Hiermee wordt het resultaat van de ene agent doorgegeven aan de volgende in een gedefinieerde volgorde. Stapsgewijze werkstromen, pijplijnen, verwerking met meerdere fasen.
handoff- Hiermee wordt de controle tussen agents dynamisch doorgegeven op basis van context of regels. Dynamische werkstromen, escalatie, alternatief of deskundige overdrachtscenario's.
groepschat Alle agenten nemen deel aan een groepsgesprek, gecoördineerd door een groepsbeheerder. Brainstormen, samenwerkende problemen oplossen, consensus bouwen.
Magentic Groepschatachtige orchestratie geïnspireerd door MagenticOne. Complexe, generalistische samenwerking met meerdere agents.

Eenvoud en ontwikkelaarsvriendelijk

Alle orchestratiepatronen delen een uniforme interface voor constructie en aanroepen. Ongeacht welke orkestratie u kiest, u:

  • Definieer uw agents en hun mogelijkheden. Zie Semantische kernelagents.
  • Maak een orchestratie door de agents (en, indien nodig, een manager) door te geven.
  • U kunt eventueel callbacks of transformaties opgeven voor aangepaste invoer-/uitvoerafhandeling.
  • Start een runtime en roep de orkestratie aan met een taak.
  • Wacht op een consistente, asynchrone manier op het resultaat.

Deze geïntegreerde benadering betekent dat u eenvoudig kunt schakelen tussen indelingspatronen, zonder dat u nieuwe API's hoeft te leren of uw agentlogica opnieuw kunt schrijven. Het framework abstraheert de complexiteit van agentcommunicatie, coördinatie en resultaataggregatie, zodat u zich kunt richten op de doelstellingen van uw toepassing.

// Choose an orchestration pattern with your agents
SequentialOrchestration orchestration = new(agentA, agentB)
{
    LoggerFactory = this.LoggerFactory
};  // or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...

// Start the runtime
InProcessRuntime runtime = new();
await runtime.StartAsync();

// Invoke the orchestration and get the result
OrchestrationResult<string> result = await orchestration.InvokeAsync(task, runtime);
string text = await result.GetValueAsync();

await runtime.RunUntilIdleAsync();
# Choose an orchestration pattern with your agents
orchestration = SequentialOrchestration(members=[agent_a, agent_b])
# or ConcurrentOrchestration, GroupChatOrchestration, HandoffOrchestration, MagenticOrchestration, ...

# Start the runtime
runtime = InProcessRuntime()
runtime.start()

# Invoke the orchestration
result = await orchestration.invoke(task="Your task here", runtime=runtime)

# Get the result
final_output = await result.get()

await runtime.stop_when_idle()

Opmerking

Agentindeling is nog niet beschikbaar in Java SDK.

Uw ontwikkelomgeving voorbereiden

Voeg de volgende pakketten toe aan uw project voordat u verdergaat:

dotnet add package Microsoft.SemanticKernel.Agents.Orchestration --prerelease
dotnet add package Microsoft.SemanticKernel.Agents.Runtime.InProcess --prerelease

Afhankelijk van de agenttypen die u gebruikt, moet u mogelijk ook de respectieve pakketten voor de agents toevoegen. Raadpleeg het overzicht van agents voor meer informatie.

Volgende stappen