Compartilhar via


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: