Catatan
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba masuk atau mengubah direktori.
Akses ke halaman ini memerlukan otorisasi. Anda dapat mencoba mengubah direktori.
Penting
Fitur Agent Orchestration dalam Kerangka Kerja Agen sedang dalam tahap eksperimental. Mereka sedang dalam pengembangan aktif dan dapat berubah secara signifikan sebelum maju ke tahap pratinjau atau tahap kandidat rilis.
Orkestrasi bersamaan memungkinkan beberapa agen untuk mengerjakan tugas yang sama secara paralel. Setiap agen memproses input secara independen, dan hasilnya dikumpulkan dan diagregasi. Pendekatan ini sangat cocok untuk skenario di mana beragam perspektif atau solusi berharga, seperti brainstorming, penalaran ansambel, atau sistem pemungutan suara.
Untuk mempelajari selengkapnya tentang pola, seperti kapan harus menggunakan pola atau kapan harus menghindari pola, lihat Orkestrasi bersamaan.
Kasus penggunaan umum
Beberapa agen menghasilkan solusi yang berbeda untuk masalah, dan responsnya dikumpulkan untuk analisis atau pilihan lebih lanjut:
Apa yang akan Anda Pelajari
- Cara menentukan beberapa agen dengan keahlian yang berbeda
- Cara mengatur agen ini untuk bekerja secara bersamaan pada satu tugas
- Cara mengumpulkan dan memproses hasilnya
Tentukan Agen Anda
Agen adalah entitas khusus yang dapat memproses tugas. Di sini, kami mendefinisikan dua agen: seorang ahli fisika dan ahli kimia.
Petunjuk / Saran
digunakan ChatCompletionAgent di sini, tetapi Anda dapat menggunakan jenis agen apa pun.
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,
};
Menyiapkan Orkestrasi Serentak
Kelas ini ConcurrentOrchestration memungkinkan Anda menjalankan beberapa agen secara paralel. Anda meneruskan daftar agen sebagai anggota.
ConcurrentOrchestration orchestration = new (physicist, chemist);
Mulai Runtime
Runtime diperlukan untuk mengelola eksekusi agen. Di sini, kita menggunakan InProcessRuntime dan memulainya sebelum memanggil orkestrasi.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Memanggil Orkestrasi
Anda sekarang dapat memanggil orkestrasi dengan tugas tertentu. Orkestrasi akan menjalankan semua agen secara bersamaan pada tugas yang diberikan.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Kumpulkan Hasil
Hasil dari semua agen dapat dikumpulkan secara asinkron. Perhatikan bahwa urutan hasil tidak dijamin.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Opsional: Hentikan Runtime
Setelah pemrosesan selesai, hentikan runtime untuk membersihkan sumber daya.
await runtime.RunUntilIdleAsync();
Sampel Output
# 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 ...
Petunjuk / Saran
Kode sampel lengkap tersedia di sini
Tentukan Agen Anda
Agen adalah entitas khusus yang dapat memproses tugas. Di sini, kami mendefinisikan dua agen: seorang ahli fisika dan ahli kimia.
Petunjuk / Saran
ChatCompletionAgent digunakan di sini bersama Azure OpenAI; namun, Anda dapat menggunakan jenis agen atau layanan model apa pun.
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]
Menyiapkan Orkestrasi Serentak
Kelas ini ConcurrentOrchestration memungkinkan Anda menjalankan beberapa agen secara paralel. Anda meneruskan daftar agen sebagai anggota.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
Mulai Runtime
Runtime diperlukan untuk mengelola eksekusi agen. Di sini, kita menggunakan InProcessRuntime dan memulainya sebelum memanggil orkestrasi.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Memanggil Orkestrasi
Anda sekarang dapat memanggil orkestrasi dengan tugas tertentu. Orkestrasi akan menjalankan semua agen secara bersamaan pada tugas yang diberikan.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Kumpulkan Hasil
Hasil dari semua agen dapat dikumpulkan secara asinkron. Perhatikan bahwa urutan hasil tidak dijamin.
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}")
Opsional: Hentikan Runtime
Setelah pemrosesan selesai, hentikan runtime untuk membersihkan sumber daya.
await runtime.stop_when_idle()
Sampel Output
# 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...
Petunjuk / Saran
Kode sampel lengkap tersedia di sini.
Nota
Orkestrasi agen belum tersedia di Java SDK.