Chatgeschiedenis opslaan

Voltooid

De Semantic Kernel SDK ondersteunt een ChatHistory object dat een record bijhoudt van de berichten die worden uitgewisseld in een chatsessie. Berichten en metagegevens van verschillende auteurs worden opgeslagen, zoals gebruikers, assistenten, hulpprogramma's of het systeem. Het ChatHistory object is essentieel voor het onderhouden van context en continuïteit in een gesprek. Hier volgt een voorbeeld van uitvoer van een ChatHistory object:

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.

Een chatgeschiedenisobject maken

Voordat u een ChatHistory object maakt, moet u het juiste pakket importeren. Onder de schermen is een chatgeschiedenisobject een lijst die fungeert als een container voor het beheren van de volgorde van berichten in een chatsessie.

// 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 dit voorbeeld wordt een ChatHistory-object gemaakt en gevuld met berichten van verschillende auteurs:

  • Systeembericht: Hiermee stelt u de rol of het gedrag van de assistent in, bijvoorbeeld 'U bent een nuttige assistent'.
  • Gebruikersberichten: legt de invoer van de gebruiker vast, zoals vragen om beschikbare items of het plaatsen van een bestelling.
  • Assistentberichten: bevat antwoorden die zijn gegenereerd door de AI-assistent, met suggesties of het bevestigen van acties.

Met behulp van de chatgeschiedenis kunt u intelligente, contextbewuste chatervaringen bouwen die zich natuurlijk voelen en reageren op de behoeften van gebruikers.

U kunt ook meer details toevoegen aan de chatgeschiedenis door een ChatMessage object te maken. Het ChatMessage object ondersteunt aanvullende informatie, zoals gebruikersnamen en afbeeldingsinhoud. Hier is een voorbeeld:

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

Door de chatgeschiedenis in uw project te gebruiken, kunt u gebruikersinteracties verbeteren. Chatgeschiedenis zorgt bijvoorbeeld voor continuïteit door context te behouden tussen meerdere uitwisselingen, zodat de assistent nauwkeuriger kan reageren zonder dat gebruikers informatie herhalen. U kunt ook de chatgeschiedenis gebruiken om gebruikersinteracties te analyseren voor het verbeteren van AI-antwoorden, zoals het identificeren van algemene query's of het verfijnen van de gespreksstroom.

Met het object ChatHistory kunt u berichten bijhouden die tijdens een chatsessie worden uitgewisseld, zodat gesprekken contextbewust en natuurlijk blijven. Door systeem-, gebruikers- en assistentberichten toe te voegen, kunt u gedrag en interacties definiëren die een samenhangende gebruikerservaring creëren. Het ChatMessage-object biedt flexibiliteit door ondersteuning te bieden voor details zoals gebruikersnamen en multimedia-inhoud. Met deze hulpprogramma's kunt u eenvoudig dynamische en gepersonaliseerde chattoepassingen ontwerpen.