Configuration des agents avec des plug-ins de noyau sémantique (expérimental)
Avertissement
L’infrastructure de l’agent de noyau sémantique est expérimentale, toujours en cours de développement et est susceptible de changer.
Fonctions et plug-ins dans le noyau sémantique
L’appel de fonction est un outil puissant qui permet aux développeurs d’ajouter des fonctionnalités personnalisées et d’étendre les fonctionnalités des applications IA. L’architecture du plug-in de noyau sémantique offre une infrastructure flexible pour prendre en charge l’appel de fonction. Pour un agent, l’intégration de plug-ins et d’appel de fonction repose sur cette fonctionnalité de noyau sémantique fondamental.
Une fois configuré, un agent choisit quand et comment appeler une fonction disponible, comme dans n’importe quelle utilisation en dehors de l’Infrastructure de l’agent.
Les agents sont actuellement indisponibles en Java.
Ajout de plug-ins à un agent
Tout plug-in disponible pour un agent est géré dans son instance de noyau respective. Cette configuration permet à chaque agent d’accéder à des fonctionnalités distinctes en fonction de son rôle spécifique.
Les plug-ins peuvent être ajoutés au noyau avant ou après la création de l’agent. Le processus d’initialisation des plug-ins suit les mêmes modèles que ceux utilisés pour toute implémentation de noyau sémantique, ce qui permet de garantir la cohérence et la facilité d’utilisation dans la gestion des fonctionnalités d’IA.
Remarque : Pour un agent de saisie semi-automatique de conversation, le mode d’appel de fonction doit être activé explicitement. L’agent Open AI Assistant est toujours basé sur l’appel automatique de fonction.
// 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,
)
Les agents sont actuellement indisponibles en Java.
Ajout de fonctions à un agent
Un plug-in est l’approche la plus courante pour la configuration de l’appel de fonction. Toutefois, les fonctions individuelles peuvent également être fournies indépendamment, y compris les fonctions d’invite.
// 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,
)
Les agents sont actuellement indisponibles en Java.
Limitations pour l’appel de fonction agent
Lors de l’appel direct d’unagent d’achèvement de conversation, tous les comportements de choix de fonction sont pris en charge. Toutefois, lors de l’utilisation d’un assistant Open AI ou d’une conversation d’agent, seul l’appel automatique de fonction est actuellement disponible.
Procédure
Pour obtenir un exemple de bout en bout pour utiliser l’appel de fonction, consultez :