De Semantische Kernel Chat-voltooiingsagent verkennen (experimenteel)
Waarschuwing
Het Semantic Kernel Agent Framework is experimenteel, nog steeds in ontwikkeling en kan worden gewijzigd.
Gedetailleerde API-documentatie met betrekking tot deze discussie is beschikbaar op:
Agents zijn momenteel niet beschikbaar in Java.
Voltooiing van chat in Semantische kernel
Chatvoltooiing is in wezen een protocol voor een interactie op basis van chats met een AI-model waarin de chatgeschiedenis wordt onderhouden en aan het model wordt gepresenteerd met elke aanvraag. Semantische Kernel AI-services bieden een geïntegreerd framework voor het integreren van de mogelijkheden voor chatvoltooiing van verschillende AI-modellen.
Een agent voor het voltooien van chats kan gebruikmaken van een van deze AI-services om antwoorden te genereren, ongeacht of deze worden doorgestuurd naar een gebruiker of een andere agent.
Voor .NET zijn AI Services voor chatvoltooiing gebaseerd op de IChatCompletionService
interface.
Voor .NET zijn enkele AI-services die ondersteuning bieden voor modellen met chatvoltooiing:
Modelleren | Semantische Kernel AI-service |
---|---|
Azure Open AI | Microsoft.SemanticKernel.Connectors.AzureOpenAI |
Tweelingen | Microsoft.SemanticKernel.Connectors.Google |
HuggingFace | Microsoft.SemanticKernel.Connectors.HuggingFace |
Mistral | Microsoft.SemanticKernel.Connectors.MistralAI |
OpenAI | Microsoft.SemanticKernel.Connectors.OpenAI |
Onnx | Microsoft.SemanticKernel.Connectors.Onnx |
Agents zijn momenteel niet beschikbaar in Java.
Een chatvoltooiingsagent maken
Een chatvoltooiingsagent is fundamenteel gebaseerd op een AI-services. Als zodanig begint het maken van een chatvoltooiingsagent met het maken van een kernelexemplaren die een of meer services voor chatvoltooiing bevatten en vervolgens de agent instantiëren met een verwijzing naar dat kernelexemplaren.
// 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>",
)
Agents zijn momenteel niet beschikbaar in Java.
SELECTIE VAN AI-service
Niet anders dan het rechtstreeks gebruiken van Semantische Kernel AI-services , ondersteunt een chatvoltooiingsagent de specificatie van een serviceselector. Een serviceselector laat inspringen welke AI-service moet worden gericht wanneer de kernel meer dan één bevat .
Opmerking: Als er meerdere AI-services aanwezig zijn en er geen serviceselector wordt opgegeven, wordt dezelfde standaardlogica toegepast voor de agent die u zou vinden wanneer u een AI-services buiten het Agent Framework gebruikt
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>",
)
Agents zijn momenteel niet beschikbaar in Java.
Conversing with Chat Completion Agent
De communicatie met uw chatvoltooiingsagent is gebaseerd op een exemplaar van de chatgeschiedenis, niet anders dan interactie met een AI-service voor chatvoltooiing.
// 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)
Agents zijn momenteel niet beschikbaar in Java.
Uitleg:
Zie voor een end-to-end-voorbeeld voor een chatvoltooiingsagent: