Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Функции оркестрации агентов во фреймворке агентов находятся на стадии эксперимента. Они находятся в активной разработке и могут значительно измениться до перехода к стадии предварительной версии или кандидата на выпуск.
Параллельная оркестрация позволяет нескольким агентам работать с одной задачей параллельно. Каждый агент обрабатывает входные данные независимо, и их результаты собираются и агрегируются. Этот подход хорошо подходит для сценариев, когда разнообразные перспективы или решения ценны, такие как мозговой штурм, ансамблирование или системы голосования.
Дополнительные сведения о шаблоне, например о том, когда следует использовать шаблон или когда избежать шаблона, см. в статье "Параллельная оркестрация".
Распространенные варианты использования
Несколько агентов создают различные решения проблемы, а их ответы собираются для дальнейшего анализа или выбора:
Цели обучения
- Определение нескольких агентов с различным опытом
- Оркестрация этих агентов для параллельной работы с одной задачей
- Как собирать и обрабатывать результаты
Определение агентов
Агенты — это специализированные сущности, которые могут обрабатывать задачи. Здесь мы определяем два агента: эксперт по физике и эксперт по химии.
Подсказка
Используется ChatCompletionAgent здесь, но можно использовать любой тип агента.
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,
};
Настройка параллельной оркестрации
Класс ConcurrentOrchestration позволяет выполнять несколько агентов параллельно. Вы передаете список агентов в качестве участников.
ConcurrentOrchestration orchestration = new (physicist, chemist);
Запуск среды выполнения
Для управления выполнением агентов требуется среда выполнения. Здесь мы используем InProcessRuntime и запускаем его перед вызовом оркестрации.
InProcessRuntime runtime = new InProcessRuntime();
await runtime.StartAsync();
Вызов оркестрации
Теперь можно вызвать оркестрацию с определенной задачей. Оркестратор будет запускать всех агентов одновременно для выполнения данной задачи.
var result = await orchestration.InvokeAsync("What is temperature?", runtime);
Сбор результатов
Результаты всех агентов можно собирать асинхронно. Обратите внимание, что порядок результатов не гарантируется.
string[] output = await result.GetValueAsync(TimeSpan.FromSeconds(20));
Console.WriteLine($"# RESULT:\n{string.Join("\n\n", output.Select(text => $"{text}"))}");
Необязательно. Остановка среды выполнения
После завершения обработки остановите среду выполнения, чтобы очистить ресурсы.
await runtime.RunUntilIdleAsync();
Образец вывода
# 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 ...
Подсказка
Полный пример кода доступен здесь
Определение агентов
Агенты — это специализированные сущности, которые могут обрабатывать задачи. Здесь мы определяем два агента: эксперт по физике и эксперт по химии.
Подсказка
Здесь ChatCompletionAgent используется Azure OpenAI, однако вы можете использовать любой тип агента или службу модели.
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]
Настройка параллельной оркестрации
Класс ConcurrentOrchestration позволяет выполнять несколько агентов параллельно. Вы передаете список агентов в качестве участников.
from semantic_kernel.agents import ConcurrentOrchestration
agents = get_agents()
concurrent_orchestration = ConcurrentOrchestration(members=agents)
Запуск среды выполнения
Для управления выполнением агентов требуется среда выполнения. Здесь мы используем InProcessRuntime и запускаем его перед вызовом оркестрации.
from semantic_kernel.agents.runtime import InProcessRuntime
runtime = InProcessRuntime()
runtime.start()
Вызов оркестрации
Теперь можно вызвать оркестрацию с определенной задачей. Оркестратор будет запускать всех агентов одновременно для выполнения данной задачи.
orchestration_result = await concurrent_orchestration.invoke(
task="What is temperature?",
runtime=runtime,
)
Сбор результатов
Результаты всех агентов можно собирать асинхронно. Обратите внимание, что порядок результатов не гарантируется.
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}")
Необязательно. Остановка среды выполнения
После завершения обработки остановите среду выполнения, чтобы очистить ресурсы.
await runtime.stop_when_idle()
Образец вывода
# 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...
Подсказка
Полный пример кода доступен здесь.
Замечание
Оркестрация агентов пока недоступна в пакете SDK для Java.