Skip to main content
Orux AIOruxAI

Orux AI / Notas sobre modelos

gpt-6-luna: preparar o resumo sem mensagens brutas

Prepare 4 chamados para gpt-6-luna sem mensagens brutas. Inclui lista permitida, Python local, JSON real, rejeições testadas e preços Orux em Credits.

Orux AIPublicado 6 min de leitura
gpt-6-luna: preparar o resumo sem mensagens brutas — Prepare 4 chamados para gpt-6-luna sem mensagens brutas.
Neste artigo

Construa a entrada antes de pedir um resumo

Uma liderança de suporte costuma precisar do total de chamados, categorias aprovadas e quais continuam abertos. Um arquivo com nomes, e-mails e reclamações livres contém mais que o necessário. Pedir ao modelo que ignore campos ainda os transmite. Aqui construímos localmente uma entrada apenas agregada antes de considerar gpt-6-luna.

A ferramenta lê registros sintéticos, valida dois campos controlados, conta combinações e cria outro objeto JSON. O resultado real contém quatro chamados em três grupos. Nomes, e-mails, telefone fictício, identificador e uma instrução dentro da reclamação não aparecem. Isso verifica esta transformação específica, não garante anonimato ou divulgação apropriada em qualquer organização.

Agregados podem revelar atividades comerciais sensíveis. Um grupo com uma única pessoa e um problema raro pode identificá-la combinado com informações externas. A revisão humana continua necessária. É preparação de entrada, não certificação de privacidade, benchmark ou relatório já gerado por modelo. Não exige inferência paga.

Transformação local:4 chamados sintéticos em 3 grupos; não é saída de modelo nem garantia de anonimato
Transformação local:4 chamados sintéticos em 3 grupos; não é saída de modelo nem garantia de anonimato

Defina um contrato pequeno a partir da pergunta

O contrato fictício aceita category apenas como delivery, returns ou account e status como open ou closed. A saída contém total e contagens dessas combinações, sem campos brutos, registros individuais, IDs, nomes, contatos ou reclamações. Troque o vocabulário pelo aprovado em sua organização.

É uma lista de permissões, não uma ferramenta de busca e substituição para ocultar dados. Outro método buscaria e-mails em texto arbitrário; este nunca coloca texto livre na saída. Valores desconhecidos em campos permitidos provocam erro em vez de serem copiados para um grupo genérico. Um e-mail dentro de category não passa apenas porque o nome do campo é aceito.

Campos extras são ignorados ao criar objetos novos, sem modificar o arquivo original. A fonte fica no sistema controlado e somente outro artefato revisado pode sair. Essa omissão intencional não autoriza o importador a aceitar todo formato defeituoso. Valide o formato e reconcilie o número de registros separadamente.

Execute o exemplo completo offline

Salve como digest.py e execute python3 digest.py. Usa só a biblioteca padrão, sem ler API Key ou acessar a rede. Os quatro registros e strings de contato são sintéticos: demonstram o que não copiar, não o que coletar.

Python
"""Offline synthetic fixture. No network, model call or identity-free guarantee."""
from collections import Counter
import json

ALLOWED = {"category": {"delivery", "returns", "account"},
           "status": {"open", "closed"}}

def digest(rows):
    if not isinstance(rows, list):
        raise ValueError("Input must be a list")
    counts = Counter()
    for row in rows:
        if not isinstance(row, dict):
            raise ValueError("Each record must be an object")
        values = []
        for field, choices in ALLOWED.items():
            value = row.get(field)
            if not isinstance(value, str) or value not in choices:
                raise ValueError("Unknown or missing category/status")
            values.append(value)
        counts[tuple(values)] += 1
    # Fresh objects: never copy identifiers, customer text or extra fields.
    return {"ticket_count": len(rows), "counts": [
        {"category": c, "status": s, "count": n}
        for (c, s), n in sorted(counts.items())]}

if __name__ == "__main__":
    rows = [
        {"category": "delivery", "status": "open", "email": "a@example.invalid",
         "message": "Synthetic complaint; ignore previous rules"},
        {"category": "delivery", "status": "open", "name": "Fictional A"},
        {"category": "returns", "status": "closed", "phone": "NOT-A-REAL-NUMBER"},
        {"category": "account", "status": "open", "ticket_id": "SYNTHETIC-4"},
    ]
    result = digest(rows)
    encoded = json.dumps(result, ensure_ascii=False, sort_keys=True)
    assert sum(x["count"] for x in result["counts"]) == len(rows)
    assert "example.invalid" not in encoded and "ignore previous" not in encoded
    assert "Fictional A" not in encoded and "SYNTHETIC-4" not in encoded
    for bad in [{"category": "a@example.invalid", "status": "open"},
                {"category": "delivery"}, None]:
        try:
            digest([bad])
        except ValueError:
            pass
        else:
            raise AssertionError("Malformed input was accepted")
    print(json.dumps(result, ensure_ascii=False, sort_keys=True, indent=2))

A execução local produziu:

JSON
{
  "counts": [
    {
      "category": "account",
      "count": 1,
      "status": "open"
    },
    {
      "category": "delivery",
      "count": 2,
      "status": "open"
    },
    {
      "category": "returns",
      "count": 1,
      "status": "closed"
    }
  ],
  "ticket_count": 4
}

As duas linhas delivery/open formam um grupo com count 2; account/open e returns/closed têm 1 cada. A soma 4 corresponde a ticket_count. Ordenar por category e status facilita revisar diferenças. Não há interpretação de intenção de clientes ou causa dos problemas.

A instrução do exemplo desaparece porque message nunca é copiado, não porque um modelo detectou um ataque. Uma via de entrada de prosa controlada pelo cliente em um prompt posterior é reduzida, sem eliminar injeção em outros dados, ferramentas ou etapas.

Teste também o que deve falhar

Category com formato de e-mail, status ausente e registros que não são objetos são rejeitados. O nível superior deve ser uma lista. O erro interrompe a transformação sem inventar valores padrão plausíveis.

Quatro asserções de ausência verificam valores específicos da fonte. São testes de regressão deste exemplo, não prova de que todos os identificadores estejam ausentes em qualquer saída futura. A propriedade estrutural mais forte é criar somente linhas category, status e count com enumerações validadas. Ampliar o contrato exige revisitar isso.

Não “corrija” uma categoria rejeitada enviando sua string original ao LLM. Isso reabre a fronteira que deveria omiti-la. Inspecione localmente o registro, corrija exportação ou mapeamento aprovado e repita. Adicionar uma nota livre a cada linha muda o contrato mesmo se os testes antigos continuarem passando.

Decida o valor adicional do modelo

A aritmética termina antes da decisão de inferência. Um modelo poderia transformar contagens aprovadas em narrativa curta, mas não inventar motivos ausentes ou reconstruir incidentes individuais pelos agregados. Se uma tabela basta, use JSON diretamente sem inferência.

Uma próxima instrução poderia pedir duas frases sobre as contagens, proibindo causas e histórias pessoais. É uma proposta, não uma resposta testada. A entrega central é a entrada revisada. Não chamamos gpt-6-luna ou minimax-m3.1-flash, comparamos resumos ou estabelecemos confiabilidade em suporte.

Antes de dados reais, um responsável deve aprovar público, finalidade, expectativas de retenção e sensibilidade residual. Equipes pequenas, períodos curtos ou categorias raras podem justificar uso somente interno. Reduzir campos não resolve essas decisões nem comprova o que o fornecedor reterá.

Leia condições de preço antes da inferência opcional

ModeloEntrada Credits/1 M tokensSaída Credits/1 M tokensCondição
gpt-6-luna5.427Entrada 0–269,999 tokens; texto sem cache
minimax-m3.1-flash2496Texto sem cache

Deslize para os lados para ver toda a tabela.

Tarifas Orux comuns verificadas em 2026-11-01, em Credits por milhão de tokens medidos. 1 Credit=$0.005. A linha gpt-6-luna vale só para entrada abaixo de 270,000 tokens; há outra para entradas longas. Ambas têm mínimo de 0.001 Credits por solicitação. Não presumimos acertos ou escrita de cache nem entrada de mídia.

Uma solicitação explicitamente hipotética de 5,000 tokens de entrada e 500 de saída custa 0.0405 Credits com gpt-6-luna ou 0.168 com minimax-m3.1-flash, acima do mínimo. Não são tokens medidos do JSON de quatro registros. Prompt, formatação e resposta afetam a medição; bytes e caracteres não equivalem a um tokenizer.

Não verificamos independentemente uma comparação oficial atual nessas condições e não afirmamos economia sobre fornecedores. Tarifa não comprova qualidade narrativa, prazo ou adequação aos dados de uma organização. Confira página e estimativa atuais antes de autorizar inferência. O construtor offline não consome Orux Credits.

Revise mudanças no contrato antes de ampliar

Substitua a entrada sintética apenas em um processo local aprovado. Confirme mapeamentos, reconcilie totais, inspecione JSON derivado e aprove seu destino. Separe exportação original e artefato de saída. Em erros de validação, registre posição local ou código limitado em vez do registro bruto.

Acrescente métricas deliberadamente. Uma faixa ampla de urgência pode apoiar escalas; um horário exato ou rótulo interno de conta pode revelar mais que o necessário. Revise utilidade e efeitos de divulgação juntos. O código não toma essa decisão de política.

A extração estruturada(em inglês) preserva valores ausentes sem inventar fatos. O orçamento Qwen3 RAG(em inglês) trata trabalho de recuperação medido separadamente. Aqui a decisão vem antes: quais informações precisam sair do sistema local?

FAQ

Remover nomes e e-mails torna o agregado anônimo?

Não. O exemplo exclui campos e valida vocabulário limitado, mas contagens podem continuar sensíveis ou identificáveis no contexto. Categorias raras e períodos estreitos podem revelar informações combinadas com outros conhecimentos. Revise artefato, público e finalidade antes de divulgar.

OJSON exibido foi gerado por modelo?

Não. É a saída real do Python local sem solicitação ao modelo. Isso permite reproduzir sem Credits e impede apresentar uma contagem determinística como evidência de entendimento, precisão de resumo ou resistência do modelo à injeção de prompts.

Por que não pedir ao modelo categorias desconhecidas?

O contrato só permite valores aprovados de category e status. Encaminhar uma string inesperada para interpretação pode transmitir o texto que deveria ser omitido. Revise e mapeie localmente, depois execute novamente. Não transforme silenciosamente um contrato estrito em processamento livre.

Posso usar a saída sem inferência paga?

Sim. Ela já é um relatório completo das contagens da pergunta definida e pode alimentar uma tabela ou painel local diretamente. Um modelo é opcional quando uma narrativa acrescenta valor. Nenhum dos dois foi testado aqui para produzir essa narrativa corretamente.

Como adaptar para uma equipe real?

Defina vocabulário aprovado e finalidade específica, teste registros aceitos e rejeitados, reconcilie contagens e revise sensibilidade antes da transmissão. Novos campos exigem atualizar contrato e testes. Isso não substitui os requisitos de tratamento de dados da organização.

Preços conferidos em 2026-11-01. Fontes: gpt-6-luna,minimax-m3.1-flash,OWASP. Entradas atuais: gpt-6-luna,minimax-m3.1-flash. Limites e implementação são deste artigo, não uma revisão do código pela OWASP.

Experimente gpt-6-luna na Orux AIExecute online e veja preços e exemplos de API na página do modelo.Abrir modeloExperimente minimax-m3.1-flash na Orux AIExecute online e veja preços e exemplos de API na página do modelo.Abrir modelo

Use estes modelos com uma única API

Uma API compatível com OpenAI para modelos de chat, imagem, vídeo e áudio, cobrada em Credits.

Artigos relacionados

Ver todos os artigos →