Condividi tramite


Configurazione di agenti con plug-in kernel semantici (sperimentale)

Avviso

Il framework dell'agente del kernel semantico è sperimentale, ancora in fase di sviluppo ed è soggetto a modifiche.

Funzioni e plug-in nel kernel semantico

La chiamata a funzioni è uno strumento potente che consente agli sviluppatori di aggiungere funzionalità personalizzate ed espandere le funzionalità delle applicazioni di intelligenza artificiale. L'architettura del plug-in del kernel semantico offre un framework flessibile per supportare la chiamata a funzioni. Per un agente, l'integrazione di plug-in e chiamate a funzioni è basata su questa funzionalità di base del kernel semantico.

Dopo la configurazione, un agente sceglierà quando e come chiamare una funzione disponibile, come in qualsiasi utilizzo al di fuori di Agent Framework.

Gli agenti non sono attualmente disponibili in Java.

Aggiunta di plug-in a un agente

Qualsiasi plug-in disponibile per un agente viene gestito all'interno della rispettiva istanza del kernel. Questa configurazione consente a ogni agente di accedere a funzionalità distinte in base al ruolo specifico.

I plug-in possono essere aggiunti al kernel prima o dopo la creazione dell'agente. Il processo di inizializzazione dei plug-in segue gli stessi modelli usati per qualsiasi implementazione del kernel semantico, consentendo coerenza e facilità d'uso nella gestione delle funzionalità di intelligenza artificiale.

Nota: per un agente di completamento chat, la modalità di chiamata della funzione deve essere abilitata in modo esplicito. L'agente Open AI Assistant si basa sempre sulla chiamata automatica delle funzioni.

// 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,
)

Gli agenti non sono attualmente disponibili in Java.

Aggiunta di funzioni a un agente

Un plug-in è l'approccio più comune per la configurazione della chiamata di funzione. Tuttavia, è anche possibile fornire singole funzioni in modo indipendente, incluse le funzioni di richiesta.

// 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,
)

Gli agenti non sono attualmente disponibili in Java.

Limitazioni per la chiamata alle funzioni dell'agente

Quando si richiama direttamente unagente di completamento chat, sono supportati tutti i comportamenti di scelta della funzione. Tuttavia, quando si usa un Assistente open AI o una chat agente, è attualmente disponibile solo la chiamata automatica delle funzioni.

Procedure

Per un esempio end-to-end per l'uso della chiamata di funzione, vedere: