Anteckning
Åtkomst till den här sidan kräver auktorisering. Du kan prova att logga in eller ändra kataloger.
Åtkomst till den här sidan kräver auktorisering. Du kan prova att ändra kataloger.
Viktigt!
Agentorkestreringsfunktionerna i Agent Framework är i den experimentella fasen. De är under aktiv utveckling och kan ändras avsevärt innan de går vidare till förhandsversionen eller lanseringsfasen.
I sekventiell orkestrering organiseras agenter i en processkedja. Varje agent bearbetar uppgiften i sin tur och skickar utdata till nästa agent i sekvensen. Detta är idealiskt för arbetsflöden där varje steg bygger på det föregående, till exempel dokumentgranskning, databearbetningspipelines eller resonemang i flera steg.
Mer information om mönstret, till exempel när du ska använda mönstret eller när du ska undvika mönstret i din arbetsbelastning, finns i Sekventiell orkestrering.
Vanliga Användningsfall
Ett dokument passerar genom en sammanfattningsagent, sedan en översättningsagent och slutligen en kvalitetssäkringsagent som bygger på föregående utdata:
Vad du ska lära dig
- Definiera en sekvens med agenter, var och en med en specialiserad roll
- Så här dirigerar du dessa agenter så att var och en bearbetar utdata från den föregående
- Så här observerar du mellanliggande utdata och samlar in slutresultatet
Definiera dina agenter
Agenter är specialiserade entiteter som bearbetar uppgifter i följd. Här definierar vi tre agenter: en analytiker, en copywriter och en redigerare.
Tips/Råd
ChatCompletionAgent Används här, men du kan använda vilken agenttyp som helst.
using Microsoft.SemanticKernel;
using Microsoft.SemanticKernel.Agents;
using Microsoft.SemanticKernel.Agents.Orchestration;
using Microsoft.SemanticKernel.Agents.Orchestration.Sequential;
using Microsoft.SemanticKernel.Agents.Runtime.InProcess;
// Create a kernel with an AI service
Kernel kernel = ...;
ChatCompletionAgent analystAgent = new ChatCompletionAgent {
Name = "Analyst",
Instructions = "You are a marketing analyst. Given a product description, identify:\n- Key features\n- Target audience\n- Unique selling points",
Kernel = kernel,
};
ChatCompletionAgent writerAgent = new ChatCompletionAgent {
Name = "Copywriter",
Instructions = "You are a marketing copywriter. Given a block of text describing features, audience, and USPs, compose a compelling marketing copy (like a newsletter section) that highlights these points. Output should be short (around 150 words), output just the copy as a single text block.",
Kernel = kernel,
};
ChatCompletionAgent editorAgent = new ChatCompletionAgent {
Name = "Editor",
Instructions = "You are an editor. Given the draft copy, correct grammar, improve clarity, ensure consistent tone, give format and make it polished. Output the final improved copy as a single text block.",
Kernel = kernel,
};
Valfritt: Observera agenternas svar
Du kan skapa ett återanrop för att samla in agentsvar när sekvensen fortskrider via egenskapen ResponseCallback .
ChatHistory history = [];
ValueTask responseCallback(ChatMessageContent response)
{
history.Add(response);
return ValueTask.CompletedTask;
}
Ställ in sekventiell orkestrering
Skapa ett SequentialOrchestration objekt, skicka in agenterna och det valfria återanropet för svar.
SequentialOrchestration orchestration = new(analystAgent, writerAgent, editorAgent)
{
ResponseCallback = responseCallback,
};
Starta körningen
En körtidsmiljö krävs för att hantera agenternas exekvering. Här använder vi InProcessRuntime och startar den innan vi anropar orkestreringen.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Anropa den orkestreringen
Anropa orkestreringen med din första uppgift (t.ex. en produktbeskrivning). Utdata flödar genom varje agent i följd.
var result = await orchestration.InvokeAsync(
"An eco-friendly stainless steel water bottle that keeps drinks cold for 24 hours",
runtime);
Samla in resultat
Vänta tills orkestreringen är klar och hämta det slutgiltiga resultatet.
string output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"\n# RESULT: {text}");
Console.WriteLine("\n\nORCHESTRATION HISTORY");
foreach (ChatMessageContent message in history)
{
this.WriteAgentChatMessage(message);
}
Valfritt: Stoppa körningen
När bearbetningen är klar stoppar du körningen för att rensa resurser.
await runtime.RunUntilIdleAsync();
Exempelutdata
# RESULT: Introducing our Eco-Friendly Stainless Steel Water Bottles – the perfect companion for those who care about the planet while staying hydrated! Our bottles ...
ORCHESTRATION HISTORY
# Assistant - Analyst: **Key Features:**
- Made from eco-friendly stainless steel
- Insulation technology that maintains cold temperatures for up to 24 hours
- Reusable and sustainable design
- Various sizes and colors available (assumed based on typical offerings)
- Leak-proof cap
- BPA-free ...
# Assistant - copywriter: Introducing our Eco-Friendly Stainless ...
# Assistant - editor: Introducing our Eco-Friendly Stainless Steel Water Bottles – the perfect companion for those who care about the planet while staying hydrated! Our bottles ...
Tips/Råd
Den fullständiga exempelkoden finns här
Definiera dina agenter
Varje agent i sekvensen har ett specifikt ansvar. I det här exemplet har vi:
- ConceptExtractorAgent: Extraherar viktiga funktioner, målgrupp och unika försäljningsställen från en produktbeskrivning.
- WriterAgent: Skriver en marknadsföringskopia baserat på den extraherade informationen.
- FormatProofAgent: Redigerar och polerar utkastkopian för tydlighet och konsekvens.
Tips/Råd
ChatCompletionAgent Används här med Azure OpenAI, men du kan använda valfri agenttyp eller modelltjänst.
from semantic_kernel.agents import Agent, ChatCompletionAgent
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion
def get_agents() -> list[Agent]:
concept_extractor_agent = ChatCompletionAgent(
name="ConceptExtractorAgent",
instructions=(
"You are a marketing analyst. Given a product description, identify:\n"
"- Key features\n"
"- Target audience\n"
"- Unique selling points\n\n"
),
service=AzureChatCompletion(),
)
writer_agent = ChatCompletionAgent(
name="WriterAgent",
instructions=(
"You are a marketing copywriter. Given a block of text describing features, audience, and USPs, "
"compose a compelling marketing copy (like a newsletter section) that highlights these points. "
"Output should be short (around 150 words), output just the copy as a single text block."
),
service=AzureChatCompletion(),
)
format_proof_agent = ChatCompletionAgent(
name="FormatProofAgent",
instructions=(
"You are an editor. Given the draft copy, correct grammar, improve clarity, ensure consistent tone, "
"give format and make it polished. Output the final improved copy as a single text block."
),
service=AzureChatCompletion(),
)
return [concept_extractor_agent, writer_agent, format_proof_agent]
Valfritt: Observera agenternas svar
Du kan definiera ett återanrop för att observera och skriva ut utdata från varje agent när sekvensen fortskrider.
from semantic_kernel.contents import ChatMessageContent
def agent_response_callback(message: ChatMessageContent) -> None:
print(f"# {message.name}\n{message.content}")
Ställ in sekventiell orkestrering
SekventielltOrchestration-objekt som skickar in agenterna och det valfria återanropet för svar.
from semantic_kernel.agents import SequentialOrchestration
agents = get_agents()
sequential_orchestration = SequentialOrchestration(
members=agents,
agent_response_callback=agent_response_callback,
)
Starta körningen
Starta körmiljön för att hantera agentens körning.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Anropa den orkestreringen
Anropa orkestreringen med din första uppgift (t.ex. en produktbeskrivning). Utdata flödar genom varje agent i följd.
orchestration_result = await sequential_orchestration.invoke(
task="An eco-friendly stainless steel water bottle that keeps drinks cold for 24 hours",
runtime=runtime,
)
Samla in resultat
Vänta tills orkestreringen har slutförts.
value = await orchestration_result.get(timeout=20)
print(f"***** Final Result *****\n{value}")
Valfritt: Stoppa körningen
När bearbetningen är klar stoppar du körningen för att rensa resurser.
await runtime.stop_when_idle()
Exempelutdata
# ConceptExtractorAgent
- Key Features:
- Made of eco-friendly stainless steel
- Keeps drinks cold for 24 hours
...
# WriterAgent
Keep your beverages refreshingly chilled all day long with our eco-friendly stainless steel bottles...
# FormatProofAgent
Keep your beverages refreshingly chilled all day long with our eco-friendly stainless steel bottles...
***** Final Result *****
Keep your beverages refreshingly chilled all day long with our eco-friendly stainless steel bottles...
Tips/Råd
Den fullständiga exempelkoden finns här.
Anmärkning
Agentorkestrering är ännu inte tillgängligt i Java SDK.