Chat
O LabsLLM permite manter conversas com modelos de IA através de sua interface de chat. Isso possibilita interações mais naturais onde o modelo pode lembrar mensagens anteriores na conversa.
Continuando Conversas com Histórico de Chat
Você pode continuar uma conversa existente fornecendo um histórico de mensagens:
// Criar ou carregar um histórico de mensagens existente
$messages = MessagesBag::create([
Message::assistant('Estou bem! Como posso ajudá-lo hoje?')
Message::user('Olá, como você está?'),
Message::assistant('Estou bem! Como posso ajudá-lo hoje?')
]);
$execute = LabsLLM::text()
->using(new OpenAI('sua-chave-api', 'gpt-4o'))
->executeChat($messages); // Use executeChat em vez de executePrompt
$response = $execute->getResponseData();
echo $response->response;
Como o Chat Funciona
A funcionalidade de chat no LabsLLM funciona através de:
- Criação de um objeto
MessagesBag
que contém o histórico da conversa - Uso de
executeChat()
em vez deexecutePrompt()
para enviar o histórico completo ao modelo - Anexação de novas mensagens ao histórico para solicitações futuras
Isso é particularmente útil para aplicações como:
- Chatbots que precisam manter contexto ao longo de múltiplos turnos
- Aplicações de atendimento ao cliente onde o histórico é importante
- Aplicações interativas que requerem interações em várias etapas
Trabalhando com Chat
// Usando OpenAI para chat
$messages = MessagesBag::create([
Message::assistant('Estou bem! Como posso ajudá-lo hoje?')
Message::user('Fale-me sobre computação quântica.')
]);
$execute = LabsLLM::text()
->using(new OpenAI('sua-chave-api', 'gpt-4o'))
->executeChat($messages);
$response = $execute->getResponseData();
echo $response->response;
// Continuar a conversa
$messages = $execute->getMessagesBag();
$messages->add(Message::user('Como ela é diferente da computação clássica?'));
$execute = LabsLLM::text()
->using(new OpenAI('sua-chave-api', 'gpt-4o'))
->executeChat($messages);
$response = $execute->getResponseData();
echo $response->response;
Entendendo as Respostas do Chat
Assim como com a execução de prompts, quando você chama getResponseData()
após uma interação de chat, você recebe um objeto de resposta que contém:
$response = $execute->getResponseData();
// A resposta de texto do modelo
echo $response->response;
// Quaisquer chamadas de ferramentas que foram feitas
if (!empty($response->function_calls)) {
// Lidar com chamadas de função
}
// Resultados de ferramentas executadas
if (!empty($response->called_tools)) {
// Lidar com resultados de ferramentas
}
Para uma explicação detalhada da estrutura de resposta, consulte o guia Objeto de Resposta da API.
Salvando e Carregando Histórico de Conversas
O LabsLLM facilita o salvamento do histórico de conversas para uso posterior, permitindo que você persista conversas entre sessões ou as armazene em um banco de dados.
Obtendo o MessageBag Após a Execução
Após executar um chat, você pode recuperar o MessageBag atualizado:
$execute = LabsLLM::text()
->using(new OpenAI('sua-chave-api', 'gpt-4o'))
->executeChat($messages);
// Obter a resposta
$response = $execute->getResponseData();
// Obter o MessageBag atualizado com todas as mensagens, incluindo a nova resposta
$updatedMessageBag = $execute->getMessagesBag();
Persistindo Conversas
Você pode serializar o MessageBag para JSON para armazenamento:
// Converter MessageBag para string JSON
$jsonHistory = $updatedMessageBag->asJson();
// Armazenar em banco de dados ou arquivo
file_put_contents('historico_conversa.json', $jsonHistory);
// Ou em um banco de dados
// $db->query("INSERT INTO conversas (user_id, historico) VALUES (?, ?)", [$userId, $jsonHistory]);
Restaurando Conversas
Posteriormente, você pode restaurar a conversa a partir do JSON salvo:
// Recuperar do arquivo ou banco de dados
$jsonHistory = file_get_contents('historico_conversa.json');
// Ou do banco de dados
// $jsonHistory = $db->query("SELECT historico FROM conversas WHERE user_id = ?", [$userId])->fetchColumn();
// Criar MessageBag a partir do JSON salvo
$messages = MessagesBag::createFromJson($jsonHistory);
// Continuar a conversa
$messages->add(Message::user('Conte-me mais sobre portas quânticas.'));
$execute = LabsLLM::text()
->using(new OpenAI('sua-chave-api', 'gpt-4o'))
->executeChat($messages);
$response = $execute->getResponseData();
echo $response->response;
Esta abordagem permite que você:
- Persista conversas entre sessões de usuários
- Armazene histórico de conversas em bancos de dados, arquivos ou caches
- Implemente recursos como navegação no histórico de conversas
- Crie chatbots com múltiplas sessões que se lembram de interações passadas
TIP
Consulte as seções MessageBag e Mensagens para mais detalhes sobre como trabalhar com mensagens de chat.