Partilhar via


Configurando agentes com plug-ins semânticos do kernel (experimental)

Aviso

O Semantic Kernel Agent Framework é experimental, ainda está em desenvolvimento e está sujeito a alterações.

Funções e Plugins no Kernel Semântico

A chamada de função é uma ferramenta poderosa que permite aos desenvolvedores adicionar funcionalidades personalizadas e expandir as capacidades de aplicativos de IA. A arquitetura do plug-in do kernel semântico oferece uma estrutura flexível para suportar a chamada de função. Para um Agente, a integração de Plugins e Chamada de Função é construída com base neste recurso fundamental do Kernel Semântico.

Uma vez configurado, um agente escolherá quando e como chamar uma função disponível, como faria em qualquer uso fora do Agent Framework.

Os agentes estão atualmente indisponíveis em Java.

Adicionando plug-ins a um agente

Qualquer plug-in disponível para um agente é gerenciado dentro de sua respetiva 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 Plugins 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.

Nota: Para um Agente de Conclusão de Chat, o modo de chamada de função deve ser explicitamente ativado. O agente Open AI Assistant é sempre baseado em chamadas automáticas 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,
)

Os agentes estão atualmente indisponí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 de forma independente, 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,
)

Os agentes estão atualmente indisponíveis em Java.

Limitações para chamada de função de agente

Ao invocar diretamente um Agente de Conclusão deChat, 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 de Função Automática está disponível no momento.

Procedimentos

Para obter um exemplo de ponta a ponta para usar a chamada de função, consulte: