Guardar histórico de bate-papo

Concluído

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.