Dela via


Utforska den semantiska kernelchattens slutförandeagent (experimentell)

Varning

Semantic Kernel Agent Framework är experimentellt, fortfarande under utveckling och kan komma att ändras.

Detaljerad API-dokumentation som rör den här diskussionen finns på:

Agenter är för närvarande inte tillgängliga i Java.

Chatten har slutförts i semantisk kernel

Chat Completion är i grunden ett protokoll för en chattbaserad interaktion med en AI-modell där chatthistoriken underhålls och presenteras för modellen med varje begäran. Semantiska KERNEL AI-tjänster erbjuder ett enhetligt ramverk för integrering av chattfunktionerna i olika AI-modeller.

En chattkompletteringsagent kan använda någon av dessa AI-tjänster för att generera svar, oavsett om de riktas till en användare eller en annan agent.

För .NET baseras AI-tjänster för chattifyllnad IChatCompletionService på gränssnittet.

För .NET är några ai-tjänster som stöder modeller med chattavslut:

Modell Semantisk kernel-AI-tjänst
Azure Open AI Microsoft.SemanticKernel.Connectors.AzureOpenAI
Tvillingarna Microsoft.SemanticKernel.Connectors.Google
HuggingFace Microsoft.SemanticKernel.Connectors.HuggingFace
Mistral Microsoft.SemanticKernel.Connectors.MistralAI
OpenAI Microsoft.SemanticKernel.Connectors.OpenAI
Onnx Microsoft.SemanticKernel.Connectors.Onnx

Agenter är för närvarande inte tillgängliga i Java.

Skapa en chattkompletteringsagent

En chattkompletteringsagent baseras i grunden på en AI-tjänst. Därför börjar skapandet av en chattkompletteringsagent med att skapa en Kernel-instans som innehåller en eller flera chatttjänster och sedan instansiera agenten med en referens till kernelinstansen.

// 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>",
)

Agenter är för närvarande inte tillgängliga i Java.

Val av AI-tjänst

Ingen skillnad från att använda Semantic Kernel AI-tjänster direkt, en chattkompletteringsagent stöder specifikationen av en tjänstväljare. En tjänstväljare anger vilken AI-tjänst som ska riktas när kerneln innehåller mer än en.

Obs! Om flera AI-tjänster finns och ingen tjänstväljare tillhandahålls tillämpas samma standardlogik för agenten som du hittar när du använder en AI-tjänst utanför 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.
            });
    };
# 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>",
)

Agenter är för närvarande inte tillgängliga i Java.

Samtal med chattens slutförandeagent

Samtal med din chattkompletteringsagent baseras på en instans av chatthistorik, inte annorlunda än att interagera med en AI-tjänst för chattavslut.

// 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)

Agenter är för närvarande inte tillgängliga i Java.

Instruktioner:

Ett exempel från slutpunkt till slutpunkt för en chattkompletteringsagent finns i: