Compartir a través de


Configuración de agentes con complementos de kernel semántico (experimental)

Advertencia

El marco del agente de kernel semántico es experimental, todavía en desarrollo y está sujeto a cambios.

Funciones y complementos en kernel semántico

La llamada a funciones es una herramienta eficaz que permite a los desarrolladores agregar funcionalidades personalizadas y expandir las funcionalidades de las aplicaciones de inteligencia artificial. La arquitectura del complemento kernel semántico ofrece un marco flexible para admitir llamadas a funciones. Para un agente, la integración de complementos y llamadas a funciones se basa en esta característica semántica semántica básica.

Una vez configurado, un agente elegirá cuándo y cómo llamar a una función disponible, como lo haría en cualquier uso fuera del marco del agente.

Los agentes no están disponibles actualmente en Java.

Adición de complementos a un agente

Cualquier complemento disponible para un agente se administra dentro de su instancia del kernel correspondiente. Esta configuración permite que cada agente acceda a funcionalidades distintas en función de su rol específico.

Los complementos se pueden agregar al kernel antes o después de crear el agente. El proceso de inicialización de complementos sigue los mismos patrones que se usan para cualquier implementación de kernel semántico, lo que permite la coherencia y facilidad de uso en la administración de funcionalidades de inteligencia artificial.

Nota: Para un agente de finalización de chat, el modo de llamada de función debe estar habilitado explícitamente. Open AI Assistant agent siempre se basa en las llamadas automáticas a funciones.

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

Los agentes no están disponibles actualmente en Java.

Agregar funciones a un agente

Un complemento es el enfoque más común para configurar las llamadas a funciones. Sin embargo, las funciones individuales también se pueden proporcionar independientemente, incluidas las funciones 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,
)

Los agentes no están disponibles actualmente en Java.

Limitaciones de las llamadas a funciones del agente

Al invocar directamente unagente de finalización de chat, se admiten todos los comportamientos de opción de función. Sin embargo, cuando se usa open AI Assistant o Agent Chat, actualmente solo está disponible la llamada automática a funciones.

Procedimiento

Para obtener un ejemplo de un extremo a otro para usar la llamada a funciones, consulte: