Exploration du noyau sémantique ChatCompletionAgent
Important
Cette fonctionnalité se trouve dans la phase candidate de mise en production. Les fonctionnalités à ce stade sont presque complètes et généralement stables, bien qu’elles puissent subir des améliorations mineures ou des optimisations avant d’atteindre une disponibilité générale complète.
La documentation détaillée de l’API relative à cette discussion est disponible à l’adresse suivante :
Les agents sont actuellement indisponibles en Java.
Complétion 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. Noyau sémantiqueLes services AI 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 complétion de chat peut tirer parti de l’un de ces services IA pour générer des réponses, qu'elles soient dirigées vers un utilisateur ou un autre agent.
Pour .NET, les services d'achèvement de chat basés sur l'IA utilisent l’interface IChatCompletionService
.
Pour .NET, certains des services IA qui prennent en charge les modèles d'achèvement de chat sont les suivants :
Modèle | Service AI du Semantic Kernel |
---|---|
Azure OpenAI | 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.
Préparation de votre environnement de développement
Pour poursuivre le développement d’un AzureAIAgent
, configurez votre environnement de développement avec les packages appropriés.
Ajoutez le package Microsoft.SemanticKernel.Agents.Core
à votre projet :
dotnet add package Microsoft.SemanticKernel.Agents.Core --prerelease
Installez le package semantic-kernel
:
pip install semantic-kernel
Les agents sont actuellement indisponibles en Java.
Création d’un ChatCompletionAgent
Un agent de complétion de chat est fondamentalement basé sur des services d'IA. Par conséquent, la création d’un agent de complétion de conversation commence par créer une instance Kernel
qui contient un ou plusieurs services de complétion de conversation, puis instancier l’agent avec une référence à cette instance Kernel
.
// 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())
# Create the agent
agent = ChatCompletionAgent(
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'usage direct de Noyau Sémantiqueservices d'IA, un ChatCompletionAgent
permet la spécification d'un sélecteur de service . Un sélecteur de service identifie quel service IA à cibler lorsque le Kernel
contient plus d'un.
Remarque : Si plusieurs services IA sont présents et qu’aucun de 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 services IA en dehors du
Agent Framework
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.
});
};
from semantic_kernel.connectors.ai.open_ai import (
AzureChatCompletion,
AzureChatPromptExecutionSettings,
)
# Define the Kernel
kernel = Kernel()
# Add the AzureChatCompletion AI Service to the Kernel
kernel.add_service(AzureChatCompletion(service_id="service1"))
kernel.add_service(AzureChatCompletion(service_id="service2"))
settings = AzureChatPromptExecutionSettings(service_id="service2")
# Create the agent
agent = ChatCompletionAgent(
kernel=kernel,
name="<agent name>",
instructions="<agent instructions>",
arguments=KernelArguments(settings=settings)
)
Les agents sont actuellement indisponibles en Java.
Conversation avec ChatCompletionAgent
La conversation avec votre ChatCompletionAgent
est basée sur une instance de ChatHistory
, similaire à l’interaction avec un service de complétion de chatintelligence artificielle.
// 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)...
}
Il existe plusieurs façons de converser avec un ChatCompletionAgent
.
Le plus simple est d’appeler et d’attendre get_response
:
# Define agent
agent = ChatCompletionAgent(...)
# Define the chat history
chat = ChatHistory()
# Add the user message
chat.add_user_message(user_input)
# Generate the agent response
response = await agent.get_response(chat)
# response is a `ChatMessageContent` object
Sinon, l’appel de la méthode invoke
retourne une AsyncIterable
de ChatMessageContent
.
# Define agent
agent = ChatCompletionAgent(...)
# Define the chat history
chat = ChatHistory()
# Add the user message
chat.add_user_message(user_input)
# Generate the agent response(s)
async for response in agent.invoke(chat):
# process agent response(s)
La ChatCompletionAgent
prend également en charge la transmission en continu dans laquelle la méthode invoke_stream
retourne une AsyncIterable
de StreamingChatMessageContent
:
# 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_stream(chat):
# process agent response(s)
Les agents sont actuellement indisponibles en Java.
Guide pratique :
Pour obtenir un exemple de bout en bout pour un ChatCompletionAgent
, consultez :
- guide pratique :
ChatCompletionAgent