Lagra chatthistorik
Semantic Kernel SDK stöder ett ChatHistory objekt som lagrar en logg över meddelanden som utväxlas under en chattsession. Den lagrar meddelanden och metadata från olika författare, till exempel användare, assistenter, verktyg eller systemet. Objektet ChatHistory är viktigt för att upprätthålla kontext och kontinuitet i en konversation. Här är några exempel på utdata från ett ChatHistory objekt:
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.
Skapa ett chatthistorikobjekt
Innan du skapar ett ChatHistory objekt måste du importera rätt paket. Under huven är ett chatthistorikobjekt en lista som fungerar som en container för att hantera sekvensen av meddelanden i en chattsession.
// 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}")
I det här exemplet skapas och fylls ett ChatHistory-objekt med meddelanden från olika författare:
- Systemmeddelande: Anger rollen eller beteendet för assistenten, till exempel "Du är en användbar assistent".
- Användarmeddelanden: Samlar in användarens indata, till exempel att be om tillgängliga objekt eller göra en beställning.
- Assistentmeddelanden: Innehåller svar som genereras av AI-assistenten, som ger förslag eller bekräftar åtgärder.
Med hjälp av chatthistorik kan du skapa intelligenta, sammanhangsmedvetna chattupplevelser som känns naturliga och dynamiska för användarnas behov.
Du kan också lägga till mer information i chatthistoriken genom att skapa ett ChatMessage objekt. Objektet ChatMessage stöder ytterligare information, till exempel användarnamn och bildinnehåll. Här är ett exempel:
// 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}")
Genom att använda chatthistoriken i projektet kan du förbättra användarinteraktioner. Till exempel säkerställer chatthistoriken kontinuitet genom att behålla kontexten över flera utbyten, så att assistenten kan svara mer korrekt utan att användarna upprepar information. Du kan också använda chatthistoriken för att analysera användarinteraktioner för att förbättra AI-svar, till exempel identifiera vanliga frågor eller förfina konversationsflödet.
Med ChatHistory-objektet kan du hålla reda på meddelanden som utbyts under en chattsession, vilket säkerställer att konversationerna förblir sammanhangsberoende medvetna och naturliga. Genom att lägga till system-, användar- och assistentmeddelanden kan du definiera beteenden och interaktioner som skapar en sammanhängande användarupplevelse. ChatMessage-objektet ger flexibilitet genom att stödja information som användarnamn och multimediainnehåll. De här verktygen gör det enkelt att utforma dynamiska och anpassade chattprogram.