Aracılığıyla paylaş


Sıralı Orkestrasyon

Önemli

Aracı Çerçevesi'ndeki Aracı Orkestrasyonu özellikleri deneysel aşamadadır. Bunlar etkin geliştirme aşamasındadır ve önizleme veya sürüm adayı aşamasına geçmeden önce önemli ölçüde değişebilir.

Sıralı düzenlemede ajanlar bir ardışık işlem hattında düzenlenir. Her bir temsilci sırayla görevi işler ve çıkışını bir sonraki sıradaki temsilciye aktarır. Bu, belge gözden geçirme, veri işleme işlem hatları veya çok aşamalı mantık gibi her adımın önceki adıma göre derlendiği iş akışları için idealdir.

Desen hakkında daha fazla bilgi edinmek için örneğin, desenin ne zaman kullanılacağı veya iş yükünüzdeki desenden ne zaman kaçınılması gerektiğini öğrenmek için bkz. Sıralı düzenleme.

Genel Kullanım Örnekleri

Belge, bir özetleme aracısını, ardından bir çeviri aracısını ve son olarak her bir önceki çıktıyı oluşturan bir kalite güvence aracısını geçirir:

diyagram

Öğrenecekler

  • Her biri özel bir role sahip bir aracı dizisi tanımlama
  • Her birinin öncekinin çıkışını işlemesi için bu aracıları düzenleme
  • Ara çıkışları gözlemleme ve nihai sonucu toplama

Temsilcilerinizi Tanımlayın

Aracılar, görevleri sırayla işleyen özel varlıklardır. Burada üç aracı tanımlayacağız: analist, metin yazarı ve düzenleyici.

Tavsiye

ChatCompletionAgent burada kullanılır, ancak herhangi bir aracı türünü kullanabilirsiniz.

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,
};

İsteğe bağlı: Aracı Yanıtlarını Gözlemleme

ResponseCallback özelliği aracılığıyla sıra ilerledikçe aracı yanıtlarını yakalamak için bir geri çağırma oluşturabilirsiniz.

ChatHistory history = [];

ValueTask responseCallback(ChatMessageContent response)
{
    history.Add(response);
    return ValueTask.CompletedTask;
}

Sıralı Orkestrasyonu Ayarla

Aracıları ve isteğe bağlı yanıt geri çağırma işlevini kullanarak bir SequentialOrchestration nesne oluşturun.

SequentialOrchestration orchestration = new(analystAgent, writerAgent, editorAgent)
{
    ResponseCallback = responseCallback,
};

Çalışma Zamanını Başlatma

Aracıların yürütülmesini yönetmek için bir çalışma zamanı gereklidir. Burada InProcessRuntime kullanıyoruz ve bunu, orkestrasyonu çağırmadan önce başlatıyoruz.

InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();

Orkestrasyonu Başlat

İlk görevinizle (örneğin, bir ürün açıklaması) orkestrasyonu başlatın. Çıkış, her bir aracı sırayla geçerek devam edecektir.

var result = await orchestration.InvokeAsync(
    "An eco-friendly stainless steel water bottle that keeps drinks cold for 24 hours",
    runtime);

Sonuçları Topla

Orkestrasyonun tamamlanmasını bekleyin ve nihai çıktıyı alın.

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);
}

İsteğe bağlı: Çalışma Zamanını Durdur

İşlem tamamlandıktan sonra kaynakları temizlemek için çalışma zamanını durdurun.

await runtime.RunUntilIdleAsync();

Örnek Çıkış

# 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 ...

Tavsiye

Örnek kodun tamamına buradan ulaşabilirsiniz

Temsilcilerinizi Tanımlayın

Dizideki her etmen belirli bir sorumluluğa sahiptir. Bu örnekte şunları yaptık:

  • ConceptExtractorAgent: Ürün açıklamasından önemli özellikleri, hedef kitleyi ve benzersiz satış noktalarını ayıklar.
  • WriterAgent: Ayıklanan bilgilere göre bir pazarlama metni oluşturur.
  • FormatProofAgent: Netlik ve tutarlılık için taslak kopyayı düzenler ve cilalar.

Tavsiye

ChatCompletionAgent burada Azure OpenAI ile kullanılır, ancak herhangi bir aracı türünü veya model hizmetini kullanabilirsiniz.

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]

İsteğe bağlı: Aracı Yanıtlarını Gözlemleme

Dizilim süreci devam ettikçe her ajandan gelen çıkışı gözlemlemek ve yazdırmak için bir geri çağrım tanımlayabilirsiniz.

from semantic_kernel.contents import ChatMessageContent

def agent_response_callback(message: ChatMessageContent) -> None:
    print(f"# {message.name}\n{message.content}")

Sıralı Orkestrasyonu Ayarla

SequentialOrchestration nesnesi, aracıları ve isteğe bağlı yanıt geri çağırmasını geçirir.

from semantic_kernel.agents import SequentialOrchestration

agents = get_agents()
sequential_orchestration = SequentialOrchestration(
    members=agents,
    agent_response_callback=agent_response_callback,
)

Çalışma Zamanını Başlatma

Aracı çalıştırmayı yönetmek için çalışma zamanını başlatın.

from semantic_kernel.agents.runtime import InProcessRuntime

runtime = InProcessRuntime()
runtime.start()

Orkestrasyonu Başlat

İlk görevinizle (örneğin, bir ürün açıklaması) orkestrasyonu başlatın. Çıkış, her bir aracı sırayla geçerek devam edecektir.

orchestration_result = await sequential_orchestration.invoke(
    task="An eco-friendly stainless steel water bottle that keeps drinks cold for 24 hours",
    runtime=runtime,
)

Sonuçları Topla

Düzenlemenin tamamlanmasını bekleyin.

value = await orchestration_result.get(timeout=20)
print(f"***** Final Result *****\n{value}")

İsteğe bağlı: Çalışma Zamanını Durdur

İşlem tamamlandıktan sonra kaynakları temizlemek için çalışma zamanını durdurun.

await runtime.stop_when_idle()

Örnek Çıkış

# 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...

Tavsiye

Örnek kodun tamamına buradan ulaşabilirsiniz.

Uyarı

Ajan düzenlemesi henüz Java SDK'de mevcut değil.

Sonraki Adımlar