O problema
Conversas reais raramente consistem em uma pergunta e uma resposta. Um chat de suporte pode chegar a dez interações: uma saudação, uma pergunta de esclarecimento, duas respostas parciais e uma solução final. Vale a pena aprender algumas dessas respostas do assistente, e outras não. Um formato de treinamento deve expressar tanto o contexto completo quanto a escolha de quais respostas contam.
Abordagem 1: pesos por mensagem
Alguns formatos permitem que cada mensagem do assistente tenha um peso. A conversa inteira é um único registro; as respostas marcadas como weight: 1 são aprendidas, e as respostas marcadas como weight: 0 são apenas contexto — lidas, mas não avaliadas.
{"messages": [
{"role": "user", "content": "Hi"},
{"role": "assistant", "content": "Hello! How can I help?", "weight": 0},
{"role": "user", "content": "Export my report as PDF"},
{"role": "assistant", "content": "Open the report, click Export → PDF…", "weight": 1}
]}Esta é a opção eficiente. Cada registro é processado uma vez, todos os alvos em uma conversa compartilham seu contexto, e a escolha do que aprender é exata.
Abordagem 2: um registro por alvo
Formatos sem pesos só conseguem instruir: “aqui está uma conversa; aprenda as respostas do assistente”. Para aprender uma resposta específica, a conversa é cortada logo após a resposta e gravada como um registro independente. Uma conversa com três alvos transforma-se em três registros, cada um mais longo que o anterior.
{"messages": [
{"role": "user", "content": "Hi"},
{"role": "assistant", "content": "Hello! How can I help?"},
{"role": "user", "content": "Export my report as PDF"},
{"role": "assistant", "content": "Open the report, click Export → PDF…"}
]}Existem dois efeitos colaterais. Qualquer resposta anterior do assistente dentro de um registro também é aprendida, pois o formato não permite marcá-la apenas como contexto — incluindo respostas que não foram escolhidas. Além disso, a parte inicial da conversa aparece em vários registros, sendo processada e cobrada diversas vezes.
- Uma conversa tem quatro interações de cerca de 250 tokens cada. As respostas 2 e 4 são alvos; as respostas 1 e 3 não são.
- Com pesos: um registro de cerca de 1.000 tokens. As respostas 2 e 4 são aprendidas uma vez cada; a 1 e a 3 são contexto.
- Sem pesos: um registro cortado após a resposta 2 (cerca de 500 tokens) e um cortado após a resposta 4 (cerca de 1.000 tokens) — 1.500 tokens no total, 50% a mais.
- Cada resposta do assistente em um registro é aprendida: as respostas 1 e 2 duas vezes, as respostas 3 e 4 uma vez. As respostas 1 e 3, que não foram escolhidas, são aprendidas de qualquer maneira.
Quando isso importa
A diferença é pequena quando as conversas são curtas ou todas as respostas do assistente são adequadas. No entanto, torna-se relevante quando as conversas são longas, quando as respostas iniciais são insatisfatórias (uma primeira tentativa incorreta que foi corrigida posteriormente) ou quando respostas foram omitidas intencionalmente. Com um provedor que aceita pesos, obtém-se exatamente o que foi selecionado; com um que não aceita, vale a pena corrigir as respostas fracas antes do treinamento.
Erros comuns
- Presumir que uma resposta não marcada nunca será aprendida, independentemente do formato do provedor.
- Deixar uma resposta inicial incorreta em uma conversa longa quando o provedor não pode excluí-la.
- Comparar contagens de tokens entre provedores sem considerar o contexto repetido.
- Dividir os registros de uma conversa entre treinamento e validação; a divisão é feita por conversa por esse motivo.
Referências e leitura complementar
Fontes externas abrem em uma nova aba.
- 01SFT TrainerHugging Face TRL docs · huggingface.coTreinamento focado apenas nos turnos do assistente dentro de uma conversa completa.
- 02Chat templatesHugging Face Transformers docs · huggingface.coComo os chats de múltiplos turnos são estruturados para um modelo e como os turnos do assistente são localizados.
- 03Supervised fine-tuningOpenAI API docs · developers.openai.comDados de treinamento em formato de chat de um provedor, incluindo exemplos de múltiplos turnos.
- 04Prepare supervised fine-tuning data for Gemini modelsGoogle Cloud documentation · docs.cloud.google.comO formato de conteúdo com os papéis de usuário e modelo.