Configurando agentes com plug-ins de kernel semântico (experimental)
Aviso
O Semantic Kernel Agent Framework é experimental, ainda está em desenvolvimento e está sujeito a alterações.
Funções e plug-ins no kernel semântico
A chamada de função é uma ferramenta poderosa que permite aos desenvolvedores adicionar funcionalidades personalizadas e expandir os recursos dos aplicativos de IA. A arquitetura do plug-in do kernel semântico oferece uma estrutura flexível para dar suporte à chamada de função. Para um agente, a integração de plug-ins e chamada de função é criada com base nesse recurso básico do kernel semântico.
Depois de configurado, um agente escolherá quando e como chamar uma função disponível, como faria em qualquer uso fora da Estrutura do Agente.
No momento, os agentes não estão disponíveis em Java.
Adicionando plug-ins a um agente
Qualquer plug-in disponível para um agente é gerenciado em sua respectiva instância do kernel . Essa configuração permite que cada Agente acesse funcionalidades distintas com base em sua função específica.
Os plug-ins podem ser adicionados ao Kernel antes ou depois da criação do Agente . O processo de inicialização de plug-ins segue os mesmos padrões usados para qualquer implementação de kernel semântico, permitindo consistência e facilidade de uso no gerenciamento de recursos de IA.
Observação: para um Agente de conclusão de chat, o modo de chamada de função deve ser ativado explicitamente. O agente do Open AI Assistant é sempre baseado na chamada automática de funções.
// 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>,
execution_settings=settings,
)
No momento, os agentes não estão disponíveis em Java.
Adicionando funções a um agente
Um plug-in é a abordagem mais comum para configurar a chamada de função. No entanto, funções individuais também podem ser fornecidas independentemente, incluindo funções de prompt.
// 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>,
execution_settings=settings,
)
No momento, os agentes não estão disponíveis em Java.
Limitações para chamada de função de agente
Ao invocar diretamente um Agente deConclusão de Chat, todos os Comportamentos de Escolha de Função são suportados. No entanto, ao usar um Open AI Assistant ou Agent Chat, apenas a chamada automática de função está disponível no momento.
Instruções
Para obter um exemplo de ponta a ponta para usar a chamada de função, consulte: