Freigeben über


Erkunden des Agent für den Semantischen Kernel-Chatabschluss (Experimental)

Warnung

Das semantische Kernel-Agent-Framework ist experimentell, befindet sich noch in der Entwicklung und unterliegt Änderungen.

Detaillierte API-Dokumentation zu dieser Diskussion finden Sie unter:

Agents sind derzeit in Java nicht verfügbar.

Chatabschluss im semantischen Kernel

Der Chatabschluss ist im Wesentlichen ein Protokoll für eine chatbasierte Interaktion mit einem KI-Modell, in dem der Chatverlauf gepflegt und dem Modell mit jeder Anforderung präsentiert wird. Semantische Kernel-KI-Dienste bieten ein einheitliches Framework für die Integration der Chat-Abschlussfunktionen verschiedener KI-Modelle.

Ein Chat-Vervollständigungs-Agent kann jeden dieser KI-Dienste nutzen, um Antworten zu generieren, unabhängig davon, ob er an einen Benutzer oder einen anderen Agent weitergeleitet wird.

Für .NET basieren KI-Dienste für Chat-Vervollständigung auf der IChatCompletionService Schnittstelle.

Für .NET umfassen einige KI-Dienste, die Modelle mit Chatabschluss unterstützen:

Modell Semantischer Kernel-KI-Dienst
Azure OpenAI Microsoft.SemanticKernel.Connectors.AzureOpenAI
Zwillinge 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 sind derzeit in Java nicht verfügbar.

Erstellen eines Chat-Vervollständigungs-Agents

Ein Chat-Vervollständigungs-Agent basiert grundsätzlich auf einem KI-Dienst. Daher beginnt das Erstellen eines Chatabschluss-Agents mit dem Erstellen einer Kernelinstanz, die mindestens einen Chat-Abschlussdienst enthält, und dann den Agent mit einem Verweis auf diese Kernelinstanz instanziieren.

// 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 sind derzeit in Java nicht verfügbar.

KI-Dienstauswahl

Nicht anders als semantische Kernel-KI-Dienste, unterstützt ein Chat-Vervollständigungs-Agent die Spezifikation einer Dienstauswahl. Eine Dienstauswahl erhebt, auf welchen KI-Dienst ausgerichtet werden soll, wenn der Kernel mehrere enthält.

Hinweis: Wenn mehrere KI-Dienste vorhanden sind und keine Dienstauswahl bereitgestellt wird, wird die gleiche Standardlogik für den Agent angewendet, den Sie bei der Verwendung von KI-Diensten außerhalb des Agent-Frameworks finden würden.

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 sind derzeit in Java nicht verfügbar.

Mit dem Chat-Vervollständigungs-Agent sprechen

Die Kommunikation mit Ihrem Chat-Vervollständigungs-Agent basiert auf einer Chatverlaufsinstanz, die sich nicht von der Interaktion mit einem KI-Dienst zum Abschluss eines Chats unterscheidet.

// 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 sind derzeit in Java nicht verfügbar.

How-To:

Ein End-to-End-Beispiel für einen Chat-Vervollständigungs-Agent finden Sie unter: