Aracılığıyla paylaş


Eşzamanlı Düzenleme

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

Eşzamanlı düzenleme, birden çok aracının aynı görev üzerinde paralel olarak çalışmasını sağlar. Her bir aracı girişi bağımsız olarak işler, ve sonuçları toplanıp bir araya getirilir. Bu yaklaşım, beyin fırtınası, grup akıl yürütme veya oylama sistemleri gibi farklı perspektiflerin veya çözümlerin değerli olduğu senaryolar için uygundur.

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

Genel Kullanım Örnekleri

Birden çok aracı bir soruna farklı çözümler oluşturur ve yanıtları daha fazla analiz veya seçim için toplanır:

diyagram

Öğrenecekler

  • Farklı uzmanlığa sahip birden çok aracı tanımlama
  • Bu aracıları tek bir görevde eşzamanlı çalışacak şekilde düzenleme
  • Sonuçları toplama ve işleme

Temsilcilerinizi tanımlayın

Ajanlar, görevleri işleyebilen özel varlıklardır. Burada iki aracı tanımlayacağız: fizik uzmanı ve kimya uzmanı.

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

Eşzamanlı Düzenlemeyi Ayarlama

sınıfı, ConcurrentOrchestration birden çok aracıyı paralel olarak çalıştırmanıza olanak tanır. Ajan listesini üye olarak dahil edersiniz.

ConcurrentOrchestration orchestration = new (physicist, chemist);

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

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

Orchestration'ı başlat

Artık düzenlemeyi belirli bir görevle çağırabilirsiniz. Orkestrasyon, verilen görevde tüm ajanları eşzamanlı olarak çalıştırır.

var result = await orchestration.InvokeAsync("What is temperature?", runtime);

Sonuçları Topla

Tüm aracıların sonuçları eşzamansız olarak toplanabilir. Sonuç sırasının garanti edilmediğini unutmayın.

string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");

İ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:
Temperature is a fundamental physical quantity that measures the average kinetic energy ...

Temperature is a measure of the average kinetic energy of the particles ...

Tavsiye

Örnek kodun tamamına buradan ulaşabilirsiniz

Temsilcilerinizi tanımlayın

Ajanlar, görevleri işleyebilen özel varlıklardır. Burada iki aracı tanımlayacağız: fizik uzmanı ve kimya uzmanı.

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]:
    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]

Eşzamanlı Düzenlemeyi Ayarlama

sınıfı, ConcurrentOrchestration birden çok aracıyı paralel olarak çalıştırmanıza olanak tanır. Ajan listesini üye olarak dahil edersiniz.

from semantic_kernel.agents import ConcurrentOrchestration

agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)

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

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.

from semantic_kernel.agents.runtime import InProcessRuntime

runtime = InProcessRuntime()
runtime.start()

Orchestration'ı başlat

Artık düzenlemeyi belirli bir görevle çağırabilirsiniz. Orkestrasyon, verilen görevde tüm ajanları eşzamanlı olarak çalıştırır.

orchestration_result = await concurrent_orchestration.invoke(
    task="What is temperature?",
    runtime=runtime,
)

Sonuçları Topla

Tüm aracıların sonuçları eşzamansız olarak toplanabilir. Sonuç sırasının garanti edilmediğini unutmayın.

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

İ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ış

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

Tavsiye

Örnek kodun tamamına buradan ulaşabilirsiniz.

Uyarı

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

Sonraki Adımlar