Guardar histórico de bate-papo
O SDK do Kernel Semântico suporta um ChatHistory objeto que mantém um registro das mensagens trocadas em uma sessão de bate-papo. 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 de uma conversa. Aqui estão alguns exemplos de saída 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.
Criando um objeto de histórico de bate-papo
Antes de criar um ChatHistory objeto, você precisa importar o pacote apropriado. Nos bastidores, um objeto de histórico de bate-papo é uma lista que funciona como um contêiner para gerenciar a sequência de mensagens em uma sessão de bate-papo.
// 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 do usuário: captura a entrada do usuário, como pedir itens disponíveis ou fazer um pedido.
- Mensagens do assistente: Contém respostas geradas pelo assistente de IA, oferecendo sugestões ou confirmando ações.
Usando o histórico de bate-papo, você pode criar experiências de bate-papo inteligentes e sensíveis ao contexto que pareçam naturais e responsivas às necessidades do usuário.
Você também pode adicionar mais detalhes ao histórico de bate-papo criando um ChatMessage objeto. O ChatMessage objeto suporta informações adicionais, como nomes de usuário e conteúdo de imagem. Aqui está 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 bate-papo em seu projeto pode ajudar a melhorar as interações do usuário. Por exemplo, o histórico de bate-papo 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 bate-papo 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.
O objeto ChatHistory permite que você acompanhe as mensagens trocadas durante uma sessão de bate-papo, 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 de usuário coesa. O objeto ChatMessage fornece flexibilidade ao oferecer suporte a detalhes como nomes de usuário e conteúdo multimídia. Essas ferramentas facilitam o design de aplicativos de bate-papo dinâmicos e personalizados.