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.
Důležité
Funkce orchestrace agentů v rozhraní Agent Framework jsou v experimentální fázi. Jsou ve fázi aktivního vývoje a můžou se výrazně změnit před přechodem do fáze Preview nebo release candidate.
Souběžná orchestrace umožňuje, aby několik agentů fungovalo paralelně na stejném úkolu. Každý agent zpracovává vstup nezávisle a jejich výsledky se shromažďují a agregují. Tento přístup je vhodný pro scénáře, ve kterých jsou cenné různé perspektivy nebo řešení, jako jsou debaty, souborové odůvodnění nebo hlasovací systémy.
Další informace o vzoru, například kdy použít vzor nebo kdy se ho vyhnout, najdete v tématu Souběžná orchestrace.
Běžné případy použití
Několik agentů generuje různá řešení problému a jejich odpovědi se shromažďují pro další analýzu nebo výběr:
Co se naučíte
- Jak definovat více agentů s různými odbornými znalostmi
- Jak tyto agenty sladit, aby mohli současně pracovat na jedné úloze
- Jak shromažďovat a zpracovávat výsledky
Definování agentů
Agenti jsou specializované entity, které mohou zpracovávat úlohy. Tady definujeme dva agenty: fyziku a odborníka na chemii.
Návod
Tady se ChatCompletionAgent používá, ale můžete použít libovolný typ agenta.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Microsoft.SemanticKernel.Agents.Orchestration;
using Microsoft.SemanticKernel.Agents.Orchestration.Concurrent;
using Microsoft.SemanticKernel.Agents.Runtime.InProcess;
// Create a kernel with an AI service
Kernel kernel = ...;
ChatCompletionAgent physicist = new ChatCompletionAgent{
Name = "PhysicsExpert",
Instructions = "You are an expert in physics. You answer questions from a physics perspective."
Kernel = kernel,
};
ChatCompletionAgent chemist = new ChatCompletionAgent{
Name = "ChemistryExpert",
Instructions = "You are an expert in chemistry. You answer questions from a chemistry perspective."
Kernel = kernel,
};
Nastavení souběžné orchestrace
Třída ConcurrentOrchestration umožňuje paralelně spouštět více agentů. Předáte seznam agentů jako členů.
ConcurrentOrchestration orchestration = new (physicist, chemist);
Spuštění modulu runtime
Modul runtime se vyžaduje ke správě provádění agentů. Tady použijeme InProcessRuntime a zahájíme to před vyvoláním orchestrace.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Vyvolání orchestrace
Orchestraci teď můžete vyvolat pomocí konkrétní úlohy. Orchestrace spustí všechny agenty současně na dané úloze.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Shromáždit výsledky
Výsledky ze všech agentů je možné shromažďovat asynchronně. Všimněte si, že pořadí výsledků není zaručeno.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Volitelné: Zastavení modulu runtime
Po dokončení zpracování zastavte modul runtime pro vyčištění prostředků.
await runtime.RunUntilIdleAsync();
Ukázkový výstup
# RESULT:
Temperature is a fundamental physical quantity that measures the average kinetic energy ...
Temperature is a measure of the average kinetic energy of the particles ...
Návod
Úplný vzorový kód je k dispozici tady.
Definování agentů
Agenti jsou specializované entity, které mohou zpracovávat úlohy. Tady definujeme dva agenty: fyziku a odborníka na chemii.
Návod
Používá se ChatCompletionAgent zde s Azure OpenAI, ale můžete použít libovolný typ agenta nebo službu modelu.
from semantic_kernel.agents import Agent, ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
def get_agents() -> list[Agent]:
physics_agent = ChatCompletionAgent(
name="PhysicsExpert",
instructions="You are an expert in physics. You answer questions from a physics perspective.",
service=AzureChatCompletion(),
)
chemistry_agent = ChatCompletionAgent(
name="ChemistryExpert",
instructions="You are an expert in chemistry. You answer questions from a chemistry perspective.",
service=AzureChatCompletion(),
)
return [physics_agent, chemistry_agent]
Nastavení souběžné orchestrace
Třída ConcurrentOrchestration umožňuje paralelně spouštět více agentů. Předáte seznam agentů jako členů.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
Spuštění modulu runtime
Modul runtime se vyžaduje ke správě provádění agentů. Tady použijeme InProcessRuntime a zahájíme to před vyvoláním orchestrace.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Vyvolání orchestrace
Orchestraci teď můžete vyvolat pomocí konkrétní úlohy. Orchestrace spustí všechny agenty současně na dané úloze.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Shromáždit výsledky
Výsledky ze všech agentů je možné shromažďovat asynchronně. Všimněte si, že pořadí výsledků není zaručeno.
value = await orchestration_result.get(timeout=20)
# For the concurrent orchestration, the result is a list of chat messages
for item in value:
print(f"# {item.name}: {item.content}")
Volitelné: Zastavení modulu runtime
Po dokončení zpracování zastavte modul runtime pro vyčištění prostředků.
await runtime.stop_when_idle()
Ukázkový výstup
# PhysicsExpert: Temperature is a physical quantity that represents the average kinetic energy of the particles in a substance...
# ChemistryExpert: Temperature is a fundamental concept in chemistry and physics, representing a measure of the average kinetic energy...
Návod
Úplný vzorový kód je k dispozici tady.
Poznámka:
Orchestrace agentů zatím není v sadě Java SDK k dispozici.