Store-Chatverlauf

Abgeschlossen

Das semantische Kernel-SDK unterstützt ein ChatHistory Objekt, das eine Aufzeichnung der in einer Chatsitzung ausgetauschten Nachrichten speichert. Es speichert Nachrichten und Metadaten verschiedener Autoren, z. B. Benutzer, Assistenten, Tools oder das System. Das ChatHistory Objekt ist für die Aufrechterhaltung von Kontext und Kontinuität in einer Unterhaltung unerlässlich. Hier sehen Sie einige Beispielausgabe eines ChatHistory Objekts:

system: You are a helpful assistant.
user: What's available to order?
assistant: We have pizza, pasta, and salad available to order. What would you like to order?
user: I'd like to have the first option, please.

Erstellen eines Chatverlaufsobjekts

Vor dem Erstellen eines ChatHistory Objekts müssen Sie das entsprechende Paket importieren. Unter der Haube ist ein Chatverlaufsobjekt eine Liste, die als Container zum Verwalten der Abfolge von Nachrichten in einer Chatsitzung fungiert.

// Import the chat completion namespace
using Microsoft.SemanticKernel.ChatCompletion;

// Create a chat history object
ChatHistory chatHistory = [];

// Add role messages to the chat history
chatHistory.AddSystemMessage("You are a helpful assistant.");
chatHistory.AddUserMessage("What's available to order?");
chatHistory.AddAssistantMessage("We have pizza, pasta, and salad available to order. What would you like to order?");
chatHistory.AddUserMessage("I'd like to have the first option, please.");

for (int i = 0; i < chatHistory.Count; i++)
{
    Console.WriteLine($"{chatHistory[i].Role}: {chatHistory[i]}");
}
from semantic_kernel.contents.chat_history import ChatHistory

# Create a chat history object
chat_history = ChatHistory()

# Add role messages to the chat history
chat_history.add_system_message("You are a helpful assistant.")
chat_history.add_user_message("What's available to order?")
chat_history.add_assistant_message("We have pizza, pasta, and salad available to order. What would you like to order?")
chat_history.add_user_message("I'd like to have the first option, please.")

# Print chat history
for message in chat_history:
    print(f"{message.role}: {message.content}")

In diesem Beispiel wird ein ChatHistory-Objekt erstellt und mit Nachrichten verschiedener Autoren aufgefüllt:

  • Systemmeldung: Legt die Rolle oder das Verhalten des Assistenten fest, z. B. "Sie sind ein hilfreicher Assistent".
  • Benutzernachrichten: Erfasst die Eingabe des Benutzers, z. B. die Frage nach verfügbaren Elementen oder das Aufgeben einer Bestellung.
  • Assistentennachrichten: Enthält Antworten, die vom KI-Assistenten generiert werden, Vorschläge anbieten oder Aktionen bestätigen.

Mithilfe des Chatverlaufs können Sie intelligente, kontextbezogene Chaterfahrungen erstellen, die sich natürlich fühlen und auf Benutzeranforderungen reagieren.

Sie können dem Chatverlauf auch weitere Details hinzufügen, indem Sie ein ChatMessage Objekt erstellen. Das ChatMessage Objekt unterstützt zusätzliche Informationen, z. B. Benutzernamen und Bildinhalte. Ein Beispiel:

// Add user message with an image
#pragma warning disable SKEXP0001 // AuthorName is subject to change and emits a warning
chatHistory.Add(
    new() {
        Role = AuthorRole.User,
        AuthorName = "Laimonis Dumins",
        Items = [
            new TextContent { Text = "What available on this menu" },
            new ImageContent { Uri = new Uri("https://example.com/menu.jpg") }
        ]
    }
);
from semantic_kernel.contents.chat_history import ChatHistory
from semantic_kernel.contents.chat_message_content import ChatMessageContent, AuthorRole
from semantic_kernel.contents.text_content import TextContent
from semantic_kernel.contents.image_content import ImageContent

# Create a chat history object
chat_history = ChatHistory()

# Add a user message with author name, text, and image content
chat_history.add(
    ChatMessageContent(
        role=AuthorRole.USER,
        author_name="Laimonis Dumins",
        items=[
            TextContent(text="What available on this menu"),
            ImageContent(uri="https://example.com/menu.jpg")
        ]
    )
)

# Print the last message to verify
last_message = chat_history[-1]
print(f"{last_message.role} ({last_message.author_name}):")
for item in last_message.items:
    if isinstance(item, TextContent):
        print(f"  Text: {item.text}")
    elif isinstance(item, ImageContent):
        print(f"  Image: {item.uri}")

Die Verwendung des Chatverlaufs in Ihrem Projekt kann dazu beitragen, Benutzerinteraktionen zu verbessern. Beispielsweise sorgt der Chatverlauf für Kontinuität, indem der Kontext über mehrere Austausch hinweg beibehalten wird, sodass der Assistent präziser reagiert, ohne dass Benutzer Informationen wiederholen. Sie können auch den Chatverlauf verwenden, um Benutzerinteraktionen zur Verbesserung von KI-Antworten zu analysieren, z. B. das Identifizieren allgemeiner Abfragen oder das Verfeinern des Unterhaltungsflusses.

Das ChatHistory-Objekt ermöglicht es Ihnen, während einer Chatsitzung ausgetauschte Nachrichten nachzuverfolgen und sicherzustellen, dass Unterhaltungen kontextbezogen und natürlich bleiben. Indem Sie System-, Benutzer- und Assistentennachrichten hinzufügen, können Sie Verhaltensweisen und Interaktionen definieren, die eine einheitliche Benutzeroberfläche schaffen. Das ChatMessage-Objekt bietet Flexibilität, indem Details wie Benutzernamen und Multimediainhalte unterstützt werden. Diese Tools erleichtern das Entwerfen dynamischer und personalisierter Chatanwendungen.