Um array de mensagens é fácil de produzir e desagradável de ler; uma transcrição é o contrário. Converter entre os dois acontece o tempo todo — colar um log num relato de bug, tirar uma boa troca para virar fixture de teste — e fazer isso à mão é onde as partes interessantes se perdem. Conteúdo nem sempre é uma string: chamadas de ferramenta, imagens, documentos e blocos de raciocínio são blocos de conteúdo, e achatá-los em texto os descarta sem deixar rastro. Aqui eles aparecem entre colchetes e são contados, para você ver o que um log achatado deixou de fora, e uma transcrição é lida de volta para JSON quando você precisa do outro sentido.
Recursos
Os dois sentidos: de mensagens para transcrição e de volta
Chamadas de ferramenta, imagens e documentos mostrados em vez de descartados
Conta os blocos não textuais que uma transcrição plana perderia
Aceita um array solto ou um objeto com chave messages, conversation ou history
Três estilos de transcrição, de Markdown a texto simples
Mensagens de sistema opcionais
Lê tanto “Usuário:” quanto “**Usuário**” como cabeçalho
Contagens de mensagens por papel
Como usar Conversor de transcrições
Cole o JSON de mensagens
Escolha um estilo de transcrição
Decida se mantém a mensagem de sistema e as chamadas de ferramenta
Copie a transcrição, ou inverta o sentido e volte para JSON
Exemplo
Entrada
[{"type": "tool_use", "name": "lookup_order"}]
Saída
[tool_use: lookup_order]
Uma transcrição plana não mostraria absolutamente nada aqui.
Erros comuns e solução de problemas
Falta parte de uma mensagem na transcrição. — Aquela parte não era texto. Ligue as chamadas de ferramenta para ver os blocos não textuais, que de todo modo são contados no resumo.
Nenhum array de mensagens é encontrado. — Um array solto funciona, assim como um objeto com chave messages, conversation, history, turns ou chat. Qualquer outra coisa precisa que você extraia o array antes.
Ler uma transcrição de volta perde os papéis. — Turnos são reconhecidos por linhas como “Usuário:” ou “**Assistente**”. Uma transcrição sem marcas de papel não tem por onde dividir.
A ida e volta não devolve o original. — Devolve o texto. Chamadas de ferramenta e imagens não são reconstruídas dos resumos entre colchetes: a transcrição é lossy por natureza, e por isso a contagem é mostrada.
Perguntas frequentes
Por que o conteúdo vem em blocos e não como string?
Porque um turno pode conter mais que texto: uma chamada de ferramenta, uma imagem, um documento, um bloco de raciocínio. A string é o caso simples, e código que assume que sempre é uma string é o motivo de chamadas de ferramenta sumirem dos logs.
Que estilo de transcrição devo usar?
Markdown para tudo que vai a um documento ou a uma issue. Rotulado para algo que você talvez leia de volta com a ferramenta, porque vai e volta limpo. Simples quando você só quer as palavras.
Posso colar um log de qualquer lugar?
Se for um array de mensagens em JSON, sim. As chaves envolventes comuns são reconhecidas, e papéis incomuns são mantidos como estão em vez de forçados.
A conversão é sem perdas nos dois sentidos?
O texto é, exatamente. Blocos não textuais não: eles são resumidos para leitura, não preservados para reconstrução, que é o limite honesto de qualquer transcrição.
Para que serve a contagem de blocos?
Ela diz quanto a transcrição não está mostrando. Uma conversa com vinte chamadas de ferramenta se lê de forma bem diferente depois que você sabe que elas estão lá.