Créer un agent à partir d’un modèle 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.
Modèles d’invite dans le noyau sémantique
Le rôle d’un agent est principalement mis en forme par les instructions qu’il reçoit, ce qui détermine son comportement et ses actions. À l’instar de l’appel d’une invite, les instructions d’un Kernel
agent peuvent inclure des paramètres de modèle( à la fois des valeurs et des fonctions) qui sont substitués dynamiquement pendant l’exécution. Cela permet des réponses flexibles et contextuelles, ce qui permet à l’agent d’ajuster sa sortie en fonction de l’entrée en temps réel.
En outre, un agent peut être configuré directement à l’aide d’une configuration de modèle d’invite, fournissant aux développeurs un moyen structuré et réutilisable de définir son comportement. Cette approche offre un outil puissant pour la normalisation et la personnalisation des instructions de l’agent, garantissant ainsi la cohérence entre différents cas d’usage tout en conservant l’adaptabilité dynamique.
API associée :
Bientôt disponible
Les agents sont actuellement indisponibles en Java.
Instructions de l’agent en tant que modèle
La création d’un agent avec des paramètres de modèle offre une plus grande flexibilité en permettant à ses instructions d’être facilement personnalisées en fonction de différents scénarios ou exigences. Cette approche permet de personnaliser le comportement de l’agent en remplaçant des valeurs ou des fonctions spécifiques dans le modèle, ce qui lui permet de s’adapter à une variété de tâches ou de contextes. En tirant parti des paramètres de modèle, les développeurs peuvent concevoir des agents plus polyvalents qui peuvent être configurés pour répondre à divers cas d’usage sans avoir à modifier la logique principale.
Agent d’achèvement de conversation
// Initialize a Kernel with a chat-completion service
Kernel kernel = ...;
ChatCompletionAgent agent =
new()
{
Kernel = kernel,
Name = "StoryTeller",
Instructions = "Tell a story about {{$topic}} that is {{$length}} sentences long.",
Arguments = new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
}
};
Bientôt disponible
Les agents sont actuellement indisponibles en Java.
Open AI Assistant Agent
Les instructions de modèle sont particulièrement puissantes lors de l’utilisation d’un agent d’Assistant Open AI. Avec cette approche, une définition d’assistant unique peut être créée et réutilisée plusieurs fois, chaque fois avec des valeurs de paramètres différentes adaptées à des tâches ou contextes spécifiques. Cela permet une configuration plus efficace, ce qui permet au même framework d’assistant de gérer un large éventail de scénarios tout en conservant la cohérence dans son comportement principal.
// Retrieve an existing assistant definition by identifier
OpenAIAssistantAgent agent =
await OpenAIAssistantAgent.RetrieveAsync(
this.GetClientProvider(),
"<stored agent-identifier>",
new Kernel(),
new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
});
Bientôt disponible
Les agents sont actuellement indisponibles en Java.
Définition d’agent à partir d’un modèle d’invite
La même configuration de modèle d’invite utilisée pour créer une fonction d’invite de noyau peut également être utilisée pour définir un agent. Cela permet une approche unifiée de la gestion des invites et des agents, en favorisant la cohérence et la réutilisation entre différents composants. En externalisant les définitions d’agent à partir du codebase, cette méthode simplifie la gestion de plusieurs agents, ce qui facilite la mise à jour et la maintenance sans nécessiter de modifications apportées à la logique sous-jacente. Cette séparation améliore également la flexibilité, permettant aux développeurs de modifier le comportement de l’agent ou d’introduire de nouveaux agents en mettant simplement à jour la configuration, plutôt que d’ajuster le code lui-même.
Modèle YAML
name: GenerateStory
template: |
Tell a story about {{$topic}} that is {{$length}} sentences long.
template_format: semantic-kernel
description: A function that generates a story about a topic.
input_variables:
- name: topic
description: The topic of the story.
is_required: true
- name: length
description: The number of sentences in the story.
is_required: true
Initialisation de l’agent
// Read YAML resource
string generateStoryYaml = File.ReadAllText("./GenerateStory.yaml");
// Convert to a prompt template config
PromptTemplateConfig templateConfig = KernelFunctionYaml.ToPromptTemplateConfig(generateStoryYaml);
// Create agent with Instructions, Name and Description
// provided by the template config.
ChatCompletionAgent agent =
new(templateConfig)
{
Kernel = this.CreateKernelWithChatCompletion(),
// Provide default values for template parameters
Arguments = new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
}
};
Bientôt disponible
Les agents sont actuellement indisponibles en Java.
Substitution de valeurs de modèle pour l’appel direct
Lors de l’appel d’un agent directement, sans utiliser la conversation de l’agent, les paramètres de l’agent peuvent être substitués en fonction des besoins. Cela permet un contrôle et une personnalisation accrus du comportement de l’agent pendant des tâches spécifiques, ce qui vous permet de modifier ses instructions ou paramètres à la volée pour répondre à des exigences particulières.
// Initialize a Kernel with a chat-completion service
Kernel kernel = ...;
ChatCompletionAgent agent =
new()
{
Kernel = kernel,
Name = "StoryTeller",
Instructions = "Tell a story about {{$topic}} that is {{$length}} sentences long.",
Arguments = new KernelArguments()
{
{ "topic", "Dog" },
{ "length", "3" },
}
};
// Create a ChatHistory object to maintain the conversation state.
ChatHistory chat = [];
KernelArguments overrideArguments =
new()
{
{ "topic", "Cat" },
{ "length", "3" },
});
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(chat, overrideArguments))
{
// Process agent response(s)...
}
Bientôt disponible
Les agents sont actuellement indisponibles en Java.
Procédure
Pour obtenir un exemple de bout en bout pour créer un agent à partir d’un modèle pmompt, consultez :