Armazenar histórico de chat
O SDK do Kernel Semântico dá suporte a um ChatHistory objeto que mantém um registro das mensagens trocadas em uma sessão de chat. Ele armazena mensagens e metadados de diferentes autores, como usuários, assistentes, ferramentas ou o sistema. O ChatHistory objeto é essencial para manter o contexto e a continuidade em uma conversa. Aqui está uma saída de exemplo de um ChatHistory objeto:
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.
Criação de um objeto de histórico de bate-papo
Antes de criar um ChatHistory objeto, você precisa importar o pacote apropriado. Na essência, o histórico de mensagens do chat é uma lista que funciona como um contêiner para gerenciar a sequência de mensagens em uma sessão de chat.
// 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}")
Neste exemplo, um objeto ChatHistory é criado e preenchido com mensagens de diferentes autores:
- Mensagem do sistema: define a função ou o comportamento do assistente, por exemplo, "Você é um assistente útil".
- Mensagens de Usuário: captura a entrada do usuário, como solicitar itens disponíveis ou fazer um pedido.
- Mensagens de Assistente: contém respostas geradas pelo assistente de IA, oferecendo sugestões ou confirmando ações.
Usando o histórico de chat, você pode criar experiências de chat inteligentes e com reconhecimento de contexto que se sintam naturais e responsivas às necessidades do usuário.
Você também pode adicionar mais detalhes ao histórico de chat criando um ChatMessage objeto. O ChatMessage objeto dá suporte a informações adicionais, como nomes de usuário e conteúdo de imagem. Veja um exemplo:
// 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}")
Usar o histórico de chat em seu projeto pode ajudar a aprimorar as interações do usuário. Por exemplo, o histórico de chat garante a continuidade mantendo o contexto em várias trocas, permitindo que o assistente responda com mais precisão sem que os usuários repitam informações. Você também pode usar o histórico de chat para analisar as interações do usuário para melhorar as respostas de IA, como identificar consultas comuns ou refinar o fluxo de conversa.
O objeto ChatHistory permite que você acompanhe as mensagens trocadas durante uma sessão de chat, garantindo que as conversas permaneçam contextualmente conscientes e naturais. Ao adicionar mensagens de sistema, usuário e assistente, você pode definir comportamentos e interações que criam uma experiência coesa do usuário. O objeto ChatMessage oferece flexibilidade oferecendo suporte a detalhes como nomes de usuário e conteúdo multimídia. Essas ferramentas facilitam o design de aplicativos de chat dinâmicos e personalizados.