Megjegyzés
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhat bejelentkezni vagy módosítani a címtárat.
Az oldalhoz való hozzáféréshez engedély szükséges. Megpróbálhatja módosítani a címtárat.
Fontos
Az Ügynök-keretrendszer ügynök-vezénylési funkciói a kísérleti fázisban vannak. Aktív fejlesztés alatt állnak, és jelentősen változhatnak, mielőtt továbblépnének az előzetes verzióra vagy a kiadásra jelölt fázisra.
Az egyidejű vezénylés lehetővé teszi, hogy több ügynök párhuzamosan dolgozzon ugyanazon a feladaton. Minden ügynök egymástól függetlenül dolgozza fel a bemenetet, és a rendszer összegyűjti és összesíti az eredményeket. Ez a megközelítés jól alkalmazható olyan helyzetekben, ahol a különböző perspektívák vagy megoldások értékesek, például ötletgyűjtés, együttes érvelés vagy szavazórendszerek.
Ha többet szeretne megtudni a mintáról, például hogy mikor érdemes használni a mintát, vagy mikor szeretné elkerülni a mintát, olvassa el az Egyidejű vezénylés című témakört.
Gyakori használati esetek
Több ügynök különböző megoldásokat hoz létre egy problémára, és a válaszok összegyűjtése további elemzéshez vagy kiválasztáshoz:
Tudnivalók
- Több különböző szakértelemmel rendelkező ügynök definiálása
- Hogyan vezényelheti ezeket az ügynököket, hogy egyidejűleg működjenek egyetlen feladaton
- Az eredmények összegyűjtése és feldolgozása
Az ügynökök definiálása
Az ügynökök speciális entitások, amelyek képesek feladatokat feldolgozni. Itt két ügynököt határozunk meg: egy fizikai és egy kémiai szakértőt.
Jótanács
Ez ChatCompletionAgent itt használatos, de bármilyen ügynöktípust használhat.
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,
};
Az egyidejű orkestráció beállítása
Az ConcurrentOrchestration osztály lehetővé teszi több ügynök párhuzamos futtatását. Az ügynökök listáját tagként továbbítja.
ConcurrentOrchestration orchestration = new (physicist, chemist);
A futtatókörnyezet indítása
Az ügynökök végrehajtásának kezeléséhez futtatókörnyezetre van szükség. Itt a vezénylés megkezdése előtt használjuk InProcessRuntime és indítjuk el.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Orchestráció meghívása
Most már elindíthatja az orchestration folyamatot egy konkrét feladat végrehajtásával. Az orkesztráció az összes ügynököt egyidejűleg futtatja az adott feladaton.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Eredmények gyűjtése
Az összes ügynök eredményei aszinkron módon gyűjthetők. Vegye figyelembe, hogy az eredmények sorrendje nem garantált.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Opcionális: A futtatókörnyezet leállítása
A feldolgozás befejezése után állítsa le a futtatókörnyezetet az erőforrások törléséhez.
await runtime.RunUntilIdleAsync();
Mintakimenet
# 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 ...
Jótanács
A teljes mintakód itt érhető el
Az ügynökök definiálása
Az ügynökök speciális entitások, amelyek képesek feladatokat feldolgozni. Itt két ügynököt határozunk meg: egy fizikai és egy kémiai szakértőt.
Jótanács
Ez ChatCompletionAgent az Azure OpenAI-val használható, azonban bármilyen ügynöktípust vagy modellszolgáltatást használhat.
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]
Az egyidejű orkestráció beállítása
Az ConcurrentOrchestration osztály lehetővé teszi több ügynök párhuzamos futtatását. Az ügynökök listáját tagként továbbítja.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
A futtatókörnyezet indítása
Az ügynökök végrehajtásának kezeléséhez futtatókörnyezetre van szükség. Itt a vezénylés megkezdése előtt használjuk InProcessRuntime és indítjuk el.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Orchestráció meghívása
Most már elindíthatja az orchestration folyamatot egy konkrét feladat végrehajtásával. Az orkesztráció az összes ügynököt egyidejűleg futtatja az adott feladaton.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Eredmények gyűjtése
Az összes ügynök eredményei aszinkron módon gyűjthetők. Vegye figyelembe, hogy az eredmények sorrendje nem garantált.
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}")
Opcionális: A futtatókörnyezet leállítása
A feldolgozás befejezése után állítsa le a futtatókörnyezetet az erőforrások törléséhez.
await runtime.stop_when_idle()
Mintakimenet
# 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...
Jótanács
A teljes mintakód itt érhető el.
Megjegyzés:
Az ügynök-vezénylés még nem érhető el a Java SDK-ban.