Примечание.
Для доступа к этой странице требуется авторизация. Вы можете попробовать войти или изменить каталоги.
Для доступа к этой странице требуется авторизация. Вы можете попробовать изменить каталоги.
Это важно
Эта функция находится на стадии релиз-кандидата. Функции на этом этапе почти завершены и обычно стабильны, хотя они могут пройти незначительные уточнения или оптимизации, прежде чем достичь полной общедоступной доступности.
Функции и подключаемые модули в семантическом ядре
Вызов функций — это мощный инструмент, позволяющий разработчикам добавлять пользовательские функции и расширять возможности приложений искусственного интеллекта. Архитектура подключаемого модуля семантического ядра предлагает гибкую платформу для поддержки вызовов функций.
AgentДля интеграции подключаемых модулей и вызовов функций используется эта базовая функция семантического ядра.
После настройки агент будет выбирать, когда и как вызывать доступную функцию, как в любом другом использовании за пределами Agent Framework.
Подсказка
Справочник по API:
Добавление плагинов в агент
Любой подключаемый модуль , доступный для объекта Agent , управляется в соответствующем Kernel экземпляре. Эта настройка позволяет каждому Agent получать доступ к различным функциям на основе конкретной роли.
Подключаемые модули можно добавить в Kernel либо до, либо после создания Agent. Процесс инициализации подключаемых модулей соответствует тем же шаблонам, которые используются для любой реализации семантического ядра, что позволяет обеспечить согласованность и простоту использования в управлении возможностями искусственного интеллекта.
Замечание
Для ChatCompletionAgent режима вызова функции необходимо его явно включить.
OpenAIAssistant агент всегда базируется на автоматическом вызове функций.
// Factory method to produce 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();
// Import plug-in from type
agentKernel.ImportPluginFromType<StatelessPlugin>();
// Import plug-in from object
agentKernel.ImportPluginFromObject(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()
})
};
}
Существует два способа создать ChatCompletionAgent с использованием подключаемых модулей.
Метод 1: Указание плагинов с помощью конструктора
Вы можете напрямую передать список плагинов конструктору.
from semantic_kernel.agents import ChatCompletionAgent
# Create the Chat Completion Agent instance by specifying a list of plugins
agent = ChatCompletionAgent(
service=AzureChatCompletion(),
instructions="<instructions>",
plugins=[SamplePlugin()]
)
Подсказка
По умолчанию автоматический вызов функции включен. Чтобы отключить его, задайте аргумент function_choice_behavior как function_choice_behavior=FunctionChoiceBehavior.Auto(auto_invoke=False) в конструкторе. С помощью этого параметра подключаемые модули транслируются в модель, но они не вызываются автоматически. Если параметры выполнения указывают те же service_id или ai_model_id, что и конфигурация службы ИИ, то поведение вызова функции, определенное в параметрах выполнения (через KernelArguments), будет иметь приоритет над поведением выбора функции, заданным в конструкторе.
Метод 2. Настройка ядра вручную
Если ядро не предоставляется с помощью конструктора, он автоматически создается во время проверки модели. Все переданные подключаемые модули имеют приоритет и добавляются в ядро. Чтобы более точно контролировать состояние ядра, выполните следующие действия.
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.functions import KernelFunctionFromPrompt
from semantic_kernel.kernel import Kernel
# Create the instance of the Kernel
kernel = Kernel()
# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion())
# Get the AI Service settings
settings = kernel.get_prompt_execution_settings_from_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(
kernel=kernel,
name=<agent name>,
instructions=<agent instructions>,
arguments=KernelArguments(settings=settings),
)
Подсказка
service_id Если параметр не указан при добавлении службы в ядро, он по умолчанию имеет значение default. При настройке нескольких служб ИИ в ядре рекомендуется различать их с помощью аргумента service_id . Это позволяет получить параметры выполнения для конкретного service_id и связать эти параметры с требуемой службой.
var chatCompletion = OpenAIChatCompletion.builder()
.withModelId("<model-id>")
.withOpenAIAsyncClient(new OpenAIClientBuilder()
.credential(new AzureKeyCredential("<api-key>"))
.endpoint("<endpoint>")
.buildAsyncClient())
.build();
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, chatCompletion)
.withPlugin(KernelPluginFactory.createFromObject(new SamplePlugin(), "<plugin name>"))
.build();
var agent = ChatCompletionAgent.builder()
.withKernel(kernel)
.withName("<agent name>")
.withInstructions("<agent instructions>")
.build();
Добавление функций агенту
Подключаемый модуль — это наиболее распространенный подход к настройке вызова функций. Однако отдельные функции также можно предоставлять независимо, включая функции подсказки.
// 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();
// Create plug-in from a static function
var functionFromMethod = agentKernel.CreateFunctionFromMethod(StatelessPlugin.AStaticMethod);
// Create plug-in from a prompt
var functionFromPrompt = agentKernel.CreateFunctionFromPrompt("<your prompt instructions>");
// Add to the kernel
agentKernel.ImportPluginFromFunctions("my_plugin", [functionFromMethod, functionFromPrompt]);
// Create the agent
return
new ChatCompletionAgent()
{
Name = "<agent name>",
Instructions = "<agent instructions>",
Kernel = agentKernel,
Arguments = new KernelArguments(
new OpenAIPromptExecutionSettings()
{
FunctionChoiceBehavior = FunctionChoiceBehavior.Auto()
})
};
}
from semantic_kernel.agents import ChatCompletionAgent
from semantic_kernel.connectors.ai import FunctionChoiceBehavior
from semantic_kernel.connectors.ai.open_ai import AzureChatCompletion, AzureChatPromptExecutionSettings
from semantic_kernel.functions import KernelFunctionFromPrompt
from semantic_kernel.kernel import Kernel
# Create the instance of the Kernel
kernel = Kernel()
# Add the chat completion service to the Kernel
kernel.add_service(AzureChatCompletion())
# Create the AI Service settings
settings = AzureChatPromptExecutionSettings()
# Configure the function choice behavior to auto invoke kernel functions
settings.function_choice_behavior = FunctionChoiceBehavior.Auto()
# Add the Plugin to the Kernel
kernel.add_function(
plugin_name="<plugin_name>",
function=KernelFunctionFromPrompt(
function_name="<function_name>",
prompt="<your prompt instructions>",
)
)
# Create the agent
agent = ChatCompletionAgent(
kernel=kernel,
name=<agent name>,
instructions=<agent instructions>,
arguments=KernelArguments(settings=settings),
)
var chatCompletion = OpenAIChatCompletion.builder()
.withModelId("<model-id>")
.withOpenAIAsyncClient(new OpenAIClientBuilder()
.credential(new AzureKeyCredential("<api-key>"))
.endpoint("<endpoint>")
.buildAsyncClient())
.build();
// Create function from method
var functionFromMethod = KernelFunction.createFromMethod(SamplePlugin.class.getMethod("method"), new SamplePlugin());
// Create function from prompt
var functionFromPrompt = KernelFunction.createFromPrompt("<your prompt instructions>");
// Create the kernel with a plugin from the two functions
Kernel kernel = Kernel.builder()
.withAIService(ChatCompletionService.class, chatCompletion)
.withPlugin(KernelPluginFactory.createFromFunctions("SamplePlugin", List.of(functionFromMethod, functionFromPrompt)))
.build();
InvocationContext invocationContext = InvocationContext.builder()
.withFunctionChoiceBehavior(FunctionChoiceBehavior.auto(true))
.build();
// Create the agent
var agent = ChatCompletionAgent.builder()
.withKernel(kernel)
.withName("<agent name>")
.withInstructions("<agent instructions>")
.withInvocationContext(invocationContext)
.build();
Ограни́чения на вызов функций агента
При непосредственномChatCompletionAgent вызове функции поддерживаются все действия по выбору функции. Однако при использовании OpenAIAssistant в настоящее время доступна только автоматическая вызов функций.
Инструкции
Полный пример использования вызовов функций см. в следующих примерах:
- практическое руководство :
ChatCompletionAgent