Historia czatów w sklepie
SDK jądra semantycznego obsługuje ChatHistory obiekt, który prowadzi zapis komunikatów wymienianych w sesji czatu. Przechowuje komunikaty i metadane od różnych autorów, takich jak użytkownicy, asystenci, narzędzia lub system. Obiekt ChatHistory jest niezbędny do utrzymania kontekstu i ciągłości w konwersacji. Oto kilka przykładowych danych wyjściowych ChatHistory obiektu:
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.
Tworzenie obiektu historii czatów
Przed utworzeniem ChatHistory obiektu należy zaimportować odpowiedni pakiet. Pod maską obiekt historii czatów to lista, która pełni funkcję kontenera do zarządzania sekwencją wiadomości w sesji czatu.
// 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}")
W tym przykładzie obiekt ChatHistory jest tworzony i wypełniany komunikatami od różnych autorów:
- Komunikat systemowy: ustawia rolę lub zachowanie asystenta, na przykład "Jesteś pomocnym asystentem".
- Komunikaty użytkowników: przechwytuje dane wejściowe użytkownika, takie jak prośba o dostępne elementy lub złożenie zamówienia.
- Komunikaty asystenta: zawiera odpowiedzi generowane przez asystenta sztucznej inteligencji, oferując sugestie lub potwierdzające akcje.
Korzystając z historii czatów, możesz tworzyć inteligentne, kontekstowe środowiska czatów, które czują się naturalnie i reagują na potrzeby użytkowników.
Możesz również dodać więcej szczegółów do historii czatów, tworząc ChatMessage obiekt. Obiekt ChatMessage obsługuje dodatkowe informacje, takie jak nazwy użytkowników i zawartość obrazu. Oto przykład:
// 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}")
Korzystanie z historii czatów w projekcie może pomóc w ulepszaniu interakcji użytkownika. Na przykład historia czatów zapewnia ciągłość dzięki zachowaniu kontekstu w wielu wymianach, co pozwala asystentowi na dokładniejsze reagowanie bez powtarzania informacji przez użytkowników. Możesz również użyć historii czatów do analizowania interakcji użytkowników w celu poprawy odpowiedzi sztucznej inteligencji, takich jak identyfikowanie typowych zapytań lub udoskonalanie przepływu konwersacji.
Obiekt ChatHistory umożliwia śledzenie wiadomości wymienianych podczas sesji czatu, zapewniając, że konwersacje pozostają kontekstowo świadome i naturalne. Dodając komunikaty systemowe, użytkownika i asystenta, można zdefiniować zachowania i interakcje, które tworzą spójny interfejs użytkownika. Obiekt ChatMessage zapewnia elastyczność dzięki obsłudze szczegółów, takich jak nazwy użytkowników i zawartość multimedialna. Te narzędzia ułatwiają projektowanie dynamicznych i spersonalizowanych aplikacji do czatów.