PPhraseNacre
Ambiente de programação com IA

Tokens de frases LZ78

Codifique até 4096 bytes em pares de índice de dicionário e próximo byte com LZ78.

● ● ●PhraseNacre●
Fluxos de trabalho · Tokens de frases LZ78 ×
def lz78_tokens(data):
    if type(data) is not bytes or len(data) > 4096:
        raise ValueError("lz78.input")
    dictionary, phrase, output = {b"": 0}, b"", []
    for byte in data:
        extended = phrase + bytes([byte])
        if extended in dictionary:
            phrase = extended
        else:
            output.append((dictionary[phrase], byte))
            dictionary[extended] = len(dictionary)
            phrase = b""
    if phrase:
        output.append((dictionary[phrase], None))
    return output
✳Codifique até 4096 bytes em pares de índice de dicionário e próximo byte com LZ78.
✓ AlteraçõesRevise antes de aplicar ↗
Ilustração do ambiente
01

Revise antes de aplicar

Compare o comportamento real com o resultado esperado. Se uma verificação falhar, investigue a causa antes de fazer outras alterações.

02

Modelos

Configure um endpoint compatível com OpenAI ou Anthropic com a URL base e uma chave API, quando necessária. Teste a conexão. O servidor local precisa estar em execução; ferramentas remotas podem transmitir dados separadamente.

03

Projeto

Teste entrada vazia e repetições, usando um marcador nulo final apenas para uma frase já cadastrada.

Fluxos de trabalho

Tokens de frases LZ78

Fluxos de trabalho ↗
Fluxos de trabalho
def lz78_tokens(data):
    if type(data) is not bytes or len(data) > 4096:
        raise ValueError("lz78.input")
    dictionary, phrase, output = {b"": 0}, b"", []
    for byte in data:
        extended = phrase + bytes([byte])
        if extended in dictionary:
            phrase = extended
        else:
            output.append((dictionary[phrase], byte))
            dictionary[extended] = len(dictionary)
            phrase = b""
    if phrase:
        output.append((dictionary[phrase], None))
    return output
Ambiente de programação com IA

Trate a saída codificada como uma interface que outro código precisa ler

PhraseNacre oferece um ambiente de projetos para Windows para desenvolver código que transforma bytes em uma representação consumida em outro lugar. Comece pela pasta do código e pelo acordo entre produtor e leitor. Peça ao modelo que examine essa interface antes de propor uma mudança no codificador, pois uma saída aparentemente mais compacta pode deixar de ter o mesmo significado para seu consumidor.

Como tarefa concreta, use lz78.py para discutir a representação de uma frase conhecida no final. Forneça casos de teste curtos em bytes com conteúdo repetido e a sequência de tokens esperada pelo leitor. A conversa poderá então se concentrar em verificar se uma alteração preserva a convenção de término, em vez de supor que todo par de implementações de codificador e decodificador compartilha um formato.

Examine o leitor junto com o produtor alterado e execute as verificações do projeto. Inclua entrada vazia, uma frase repetida e bytes distintos, com saídas esperadas independentes quando viável. Um ciclo de codificação e decodificação é uma evidência útil, mas compare também os casos existentes para que dois componentes alterados não concordem com um novo formato incompatível sem que a revisão perceba.

Você escolhe o modelo assistente por meio de um endpoint compatível com OpenAI ou da Anthropic que seja suportado, incluindo credenciais quando necessário. Modelos de IA abliterados só estão disponíveis onde o endpoint os oferece; as restrições do provedor continuam valendo. O acesso a ferramentas e os limites de contexto dependem do modelo e do servidor escolhidos, enquanto a compatibilidade de formatos continua sendo um requisito explícito do projeto.

Perguntas sobre uma mudança no codificador

Por que examinar o leitor ao corrigir um codificador?

A saída é uma interface, incluindo qualquer marcador usado para uma frase final. Um produtor pode emitir tokens internamente consistentes que o leitor existente interpreta de outra forma. Revise os dois lados e mantenha os casos antigos para que uma pequena mudança no codificador não altere silenciosamente o formato.

Um ciclo bem-sucedido de codificação e decodificação é suficiente?

Ele é útil, mas dois componentes alterados juntos podem compartilhar o mesmo erro. Compare também exemplos de tokens especificados independentemente e dados codificados de teste existentes. Indique qual direção de compatibilidade importa, por exemplo, se o leitor atual deve continuar aceitando dados produzidos anteriormente.

O texto deve ser convertido em bytes dentro desta rotina?

Somente sob um contrato explícito de codificação. O exemplo aceita bytes; portanto, mover a conversão de texto para dentro dele altera a interface. Examine onde a aplicação escolhe atualmente a codificação de caracteres e preserve esse limite, a menos que o recurso solicitado o mova deliberadamente.

Posso alegar melhor compressão depois de encurtar o código?

Não. O tamanho do código-fonte não comprova o tamanho da saída nem o desempenho da carga de trabalho. Mantenha a revisão focada no comportamento solicitado e faça uma medição separada adequada se as características de compressão importarem. Informe apenas resultados dos casos e da implementação que você efetivamente testou.

Baixar para Windows ↗

PhraseNacre · Atualizado 2026-10-25