Exploration de l’agent de saisie semi-automatique du 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.
La documentation détaillée de l’API relative à cette discussion est disponible à l’adresse suivante :
Les agents sont actuellement indisponibles en Java.
Saisie semi-automatique de conversation dans le noyau sémantique
L’achèvement de la conversation est fondamentalement un protocole pour une interaction basée sur la conversation avec un modèle IA où l’historique des conversations a été conservé et présenté au modèle avec chaque requête. Les services AI du noyau sémantique offrent une infrastructure unifiée permettant d’intégrer les fonctionnalités d’achèvement de conversation de différents modèles IA.
Un agent de saisie semi-automatique de conversation peut tirer parti de l’un de ces services IA pour générer des réponses, qu’ils soient dirigés vers un utilisateur ou un autre agent.
Pour .NET, les services IA de saisie semi-automatique de conversation sont basés sur l’interface IChatCompletionService
.
Pour .NET, certains des services IA qui prennent en charge les modèles avec la saisie semi-automatique des conversations sont les suivants :
Modèle | Service AI du noyau sémantique |
---|---|
Azure Open AI | Microsoft.SemanticKernel.Connectors.AzureOpenAI |
Gémeaux | Microsoft.SemanticKernel.Connectors.Google |
HuggingFace | Microsoft.SemanticKernel.Connectors.HuggingFace |
Mistral | Microsoft.SemanticKernel.Connectors.MistralAI |
OpenAI | Microsoft.SemanticKernel.Connectors.OpenAI |
Onnx | Microsoft.SemanticKernel.Connectors.Onnx |
Les agents sont actuellement indisponibles en Java.
Création d’un agent d’achèvement de conversation
Un agent de saisie semi-automatique de conversation est fondamentalement basé sur des services IA. Par conséquent, la création d’un agent d’achèvement de conversation commence par créer une instance de noyau qui contient un ou plusieurs services de saisie semi-automatique de conversation, puis instanciation de l’agent avec une référence à cette instance de noyau.
// Initialize a Kernel with a chat-completion service
IKernelBuilder builder = Kernel.CreateBuilder();
builder.AddAzureOpenAIChatCompletion(/*<...configuration parameters>*/);
Kernel kernel = builder.Build();
// Create the agent
ChatCompletionAgent agent =
new()
{
Name = "SummarizationAgent",
Instructions = "Summarize user input",
Kernel = kernel
};
# Define the Kernel
kernel = Kernel()
# Add the AzureChatCompletion AI Service to the Kernel
kernel.add_service(AzureChatCompletion(service_id="<service_id>"))
# Create the agent
agent = ChatCompletionAgent(
service_id="agent",
kernel=kernel,
name="<agent name>",
instructions="<agent instructions>",
)
Les agents sont actuellement indisponibles en Java.
Sélection du service IA
Pas différent de l’utilisation directe des services AI du noyau sémantique, un agent de saisie semi-automatique de conversation prend en charge la spécification d’un sélecteur de service. Un sélecteur de service met en retrait le service IA à cibler lorsque le noyau contient plusieurs.
Remarque : Si plusieurs services IA sont présents et qu’aucun sélecteur de service n’est fourni, la même logique par défaut est appliquée pour l’agent que vous trouverez lors de l’utilisation d’un service IA en dehors de l’Infrastructure de l’agent
IKernelBuilder builder = Kernel.CreateBuilder();
// Initialize multiple chat-completion services.
builder.AddAzureOpenAIChatCompletion(/*<...service configuration>*/, serviceId: "service-1");
builder.AddAzureOpenAIChatCompletion(/*<...service configuration>*/, serviceId: "service-2");
Kernel kernel = builder.Build();
ChatCompletionAgent agent =
new()
{
Name = "<agent name>",
Instructions = "<agent instructions>",
Kernel = kernel,
Arguments = // Specify the service-identifier via the KernelArguments
new KernelArguments(
new OpenAIPromptExecutionSettings()
{
ServiceId = "service-2" // The target service-identifier.
});
};
# Define the Kernel
kernel = Kernel()
# Add the AzureChatCompletion AI Service to the Kernel
kernel.add_service(AzureChatCompletion(service_id="<service_id>"))
# Create the agent
agent = ChatCompletionAgent(
service_id="agent",
kernel=kernel,
name="<agent name>",
instructions="<agent instructions>",
)
Les agents sont actuellement indisponibles en Java.
Conversing with Chat Completion Agent
La conversation avec votre agent d’achèvement de conversation est basée sur une instance d’historique des conversations, qui n’est pas différente de l’interaction avec un service IA d’achèvement de conversation.
// Define agent
ChatCompletionAgent agent = ...;
// Create a ChatHistory object to maintain the conversation state.
ChatHistory chat = [];
// Add a user message to the conversation
chat.Add(new ChatMessageContent(AuthorRole.User, "<user input>"));
// Generate the agent response(s)
await foreach (ChatMessageContent response in agent.InvokeAsync(chat))
{
// Process agent response(s)...
}
# Define agent
agent = ChatCompletionAgent(...)
# Define the chat history
chat = ChatHistory()
# Add the user message
chat.add_message(ChatMessageContent(role=AuthorRole.USER, content=input))
# Generate the agent response(s)
async for response in agent.invoke(chat):
# process agent response(s)
Les agents sont actuellement indisponibles en Java.
Guide pratique :
Pour obtenir un exemple de bout en bout pour un agent d’achèvement de conversation, consultez :