Поделиться через


Настройка агентов с помощью плагинов семантического ядра

Предупреждение

Платформа агента семантического ядра находится в предварительной версии и подлежит изменению.

Функции и подключаемые модули в семантическом ядре

Вызов функций — это мощный инструмент, позволяющий разработчикам добавлять пользовательские функции и расширять возможности приложений искусственного интеллекта. Архитектура подключаемого модуля семантического ядра предлагает гибкую платформу для поддержки вызовов функций. Для агента интеграция подключаемых модулей и вызовов функций основана на этой базовой функции семантического ядра.

После настройки агент будет выбирать, когда и как вызывать доступную функцию, так как она будет использовать в любой среде за пределами Agent Framework.

Агенты в настоящее время недоступны в Java.

Добавление подключаемых модулей в агент

Любой подключаемый модуль, доступный агенту, управляется в соответствующем экземпляре ядра. Эта настройка позволяет каждому агенту получать доступ к различным функциям на основе конкретной роли.

Подключаемые модули можно добавить в ядро до или после создания агента . Процесс инициализации подключаемых модулей соответствует тем же шаблонам, которые используются для любой реализации семантического ядра , что позволяет обеспечить согласованность и простоту использования в управлении возможностями искусственного интеллекта.

Примечание. Для агента завершения чата режим вызова функции должен быть явно включен. Агент Open AI Assistant всегда основан на автоматическом вызове функций.

// Factory method to product an agent with a specific role.
// Could be incorporated into DI initialization.
ChatCompletionAgent CreateSpecificAgent(Kernel kernel, string credentials)
{
    // Clone kernel instance to allow for agent specific plug-in definition
    Kernel agentKernel = kernel.Clone();

    // Initialize plug-in from type
    agentKernel.CreatePluginFromType<StatelessPlugin>();

    // Initialize plug-in from object
    agentKernel.CreatePluginFromObject(new StatefulPlugin(credentials));

    // Create the agent
    return 
        new ChatCompletionAgent()
        {
            Name = "<agent name>",
            Instructions = "<agent instructions>",
            Kernel = agentKernel,
            Arguments = new KernelArguments(
                new OpenAIPromptExecutionSettings() 
                { 
                    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() 
                })
        };
}
# Create the instance of the Kernel
kernel = Kernel()

# Define the service ID
service_id = "<service ID>"

# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion(service_id=service_id))

# Get the AI Service settings for the specified service_id
settings = kernel.get_prompt_execution_settings_from_service_id(service_id=service_id)

# Configure the function choice behavior to auto invoke kernel functions
settings.function_choice_behavior = FunctionChoiceBehavior.Auto()

# Add the Plugin to the Kernel
kernel.add_plugin(SamplePlugin(), plugin_name="<plugin name>")

# Create the agent
agent = ChatCompletionAgent(
    service_id=service_id, 
    kernel=kernel, 
    name=<agent name>, 
    instructions=<agent instructions>, 
    arguments=KernelArguments(settings=settings),
)

Агенты в настоящее время недоступны в Java.

Добавление функций в агент

Подключаемый модуль — это наиболее распространенный подход к настройке вызовов функций. Однако отдельные функции также можно предоставлять независимо, включая функции запроса.

// Factory method to product an agent with a specific role.
// Could be incorporated into DI initialization.
ChatCompletionAgent CreateSpecificAgent(Kernel kernel)
{
    // Clone kernel instance to allow for agent specific plug-in definition
    Kernel agentKernel = kernel.Clone();

    // Initialize plug-in from a static function
    agentKernel.CreateFunctionFromMethod(StatelessPlugin.AStaticMethod);

    // Initialize plug-in from a prompt
    agentKernel.CreateFunctionFromPrompt("<your prompt instructiosn>");

    // Create the agent
    return 
        new ChatCompletionAgent()
        {
            Name = "<agent name>",
            Instructions = "<agent instructions>",
            Kernel = agentKernel,
            Arguments = new KernelArguments(
                new OpenAIPromptExecutionSettings() 
                { 
                    FunctionChoiceBehavior = FunctionChoiceBehavior.Auto() 
                })
        };
}
# Create the instance of the Kernel
kernel = Kernel()

# Define the service ID
service_id = "<service ID>"

# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion(service_id=service_id))

# Get the AI Service settings for the specified service_id
settings = kernel.get_prompt_execution_settings_from_service_id(service_id=service_id)

# Configure the function choice behavior to auto invoke kernel functions
settings.function_choice_behavior = FunctionChoiceBehavior.Auto()

# Add the Plugin to the Kernel
kernel.add_plugin(SamplePlugin(), plugin_name="<plugin name>")

# Create the agent
agent = ChatCompletionAgent(
    service_id=service_id, 
    kernel=kernel, 
    name=<agent name>, 
    instructions=<agent instructions>, 
    arguments=KernelArguments(settings=settings),
)

Агенты в настоящее время недоступны в Java.

Ограничения для вызова функции агента

При непосредственном вызове агента завершения чатаподдерживаются все действия по выбору функции. Однако при использовании помощника по открытому искусственному интеллекту или чата агента в настоящее время доступно только автоматическое вызов функции.

Инструкции

Полный пример использования вызовов функций см. в следующих примерах: