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: