O Grok é realmente sem censura? Como testar você mesmo
Atualizado
O Grok é realmente sem censura? A resposta precisa é que nenhum modelo hospedado está livre de regras, e o comportamento do Grok depende do produto, do modo e da data. Em vez de confiar em um rótulo, você pode medir recusas nos seus próprios prompts, e esta página mostra como.

Resposta curta e por que o rótulo engana
As pessoas perguntam se o grok é realmente sem censura porque o modelo foi comercializado como menos restrito que alguns concorrentes. Se isso corresponde à sua experiência depende do que você pergunta, qual produto você usa e quando pergunta. A xAI altera seus modelos, system prompts e políticas com o tempo, então qualquer afirmação aqui sobre comportamento específico envelhece rapidamente. Para regras atuais, leia a própria documentação e política de uso da xAI.
O que pode ser dito com confiança é estrutural. Todo modelo hospedado de uma empresa fica dentro de algum conjunto de regras: legais, de plataforma e escolhas de treinamento. Mesmo um modelo vendido como permissivo recusará algumas solicitações. Então a pergunta útil não é se ele é sem censura, mas se ele recusa as coisas específicas que seu produto precisa. Isso é algo que você pode medir em uma tarde.
As quatro camadas de onde vêm as recusas
Quando um chatbot diz não, a causa pode estar em um de quatro lugares. Saber qual ajuda você a escolher uma solução.
1. Treinamento do modelo
A maioria dos modelos de chat é treinada após o pré-treinamento para recusar certas requisições. Isso está nos pesos. Você não pode removê-lo com um prompt de sistema, embora a redação e o contexto possam alterar a frequência com que ele é acionado. Modelos de pesos abertos podem ser ajustados ainda mais por seus provedores para reduzir essas recusas, que é o caso do modelo por trás desta API.
2. System prompt e regras do produto
O aplicativo em torno do modelo adiciona instruções que você não vê: tom, tópicos a evitar, formatação. Um modelo usado por meio de um aplicativo de consumidor pode se comportar de maneira diferente do mesmo modelo chamado por meio de uma API com sua própria mensagem do sistema.
3. Filtros de entrada e saída
Alguns serviços executam um classificador separado no seu prompt ou na resposta e bloqueiam ou reescrevem o resultado. Você pode ver um erro genérico em vez de uma frase de recusa.
4. Limites legais e de política
Os provedores devem seguir a lei onde operam. Conteúdo ilegal é bloqueado em todos os lugares, e nenhum serviço reputável mudará isso. Esta API tem uma regra fixa desse tipo: nenhum conteúdo sexual envolvendo menores de idade.
Construa seu próprio teste de recusa
Um conjunto de testes supera opiniões. Escreva 30 a 50 prompts que reflitam o que seu produto realmente faz. Inclua tarefas comuns como grupo de controle, para que você possa distinguir um modelo que recusa demais de um que simplesmente falha. Boas categorias para ferramentas de ficção e roleplay são violência em uma história de guerra, um vilão moralmente ambíguo com diálogo persuasivo, perguntas médicas ou jurídicas francas, temas sombrios em horror e romance maduro tratado sem detalhes explícitos.
O script abaixo envia cada prompt para um endpoint compatível com OpenAI, sinaliza respostas que parecem recusas e imprime uma taxa. A lista de frases é rudimentar, então leia cada resposta sinalizada você mesmo antes de tirar conclusões.
import os
import json
from openai import OpenAI
client = OpenAI(base_url="https://api.grokuncensored.cc/v1", api_key=os.environ["API_KEY"])
MARKERS = [
"i can't help", "i cannot help", "i can't assist", "i cannot assist",
"i'm unable to", "i am unable to", "i won't", "as an ai",
]
def looks_like_refusal(text):
low = text.lower()[:300]
return any(m in low for m in MARKERS)
prompts = json.load(open("prompts.json")) # a list of strings
flagged = []
for p in prompts:
r = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": p}],
temperature=0.7,
seed=1,
)
text = r.choices[0].message.content or ""
if looks_like_refusal(text):
flagged.append((p, text[:200]))
print(len(flagged), "of", len(prompts), "flagged")
for p, t in flagged:
print("-", p[:80], "=>", t)Para comparar serviços, altere apenas base_url, a chave e o nome do modelo, e mantenha o arquivo de prompts igual. Execute-o mais de uma vez em dias diferentes, pois o comportamento pode mudar. Mantenha as configurações idênticas: mesma mensagem do sistema, mesma temperatura, mesma seed onde for suportada.
Erros que estragam um teste de recusa
Testes de recusa parecem simples, é por isso que muitas vezes são feitos mal. Estes são os erros que mais frequentemente levam a conclusões erradas.
- Testando apenas os prompts extremos. Um conjunto feito de solicitações de pior caso mostra o limite, mas seus usuários vivem no meio. A maioria dos prompts reais são cenas comuns, momentos de personagem e perguntas. Dê mais peso no conjunto ao que você realmente espera.
- Comparando diferentes configurações. Uma mudança na temperatura ou na mensagem do sistema por si só pode alterar as taxas de recusa. Se você comparar dois serviços, mantenha tudo o resto fixo.
- Uma execução, um dia. Modelos hospedados e as camadas ao redor podem mudar. Repita o teste em dias separados e mantenha os resultados com datas.
- Confiando na lista de frases. Uma resposta que começa educadamente e depois recusa no terceiro parágrafo escapa de uma verificação nos primeiros 300 caracteres. Amplie o trecho verificado ou leia uma amostra à mão.
- Ignorando a qualidade. Um modelo que nunca recusa, mas escreve cenas planas e repetitivas, não é a melhor escolha. Avalie também a utilidade de algumas saídas.
Como ler os resultados
Uma taxa de recusa por si só diz pouco. Observe o padrão.
- Recusas em prompts de controle significam que seu detector está muito frouxo ou o serviço é instável. Corrija isso antes de qualquer outra coisa.
- Recusas agrupadas em um único tema apontam para uma regra de treinamento ou política. Uma reescrita da mensagem do sistema pode ajudar, ou não.
- Recusas que desaparecem quando você adiciona contexto mostram uma regra suave. Uma descrição clara do quadro fictício e do público adulto geralmente altera o resultado.
- Recusas suaves são respostas que cumprem no papel, mas diluem o conteúdo, adicionam sermões ou terminam a cena cedo. Sua lista de frases não capturará essas, então amostre também as respostas não sinalizadas.
Rastreie também o custo de uma execução falhada. Nesta API, requisições falhas ou recusadas não são cobradas, o que mantém um conjunto de testes grande barato. Uma execução de 50 prompts com 200 tokens de entrada e 400 tokens de saída cada custa 50 x (200 x $0,15 + 400 x $0,50) / 1.000.000 = 50 x $0,00023 = $0,0115, cerca de um centavo.
Escreva mensagens do sistema para reduzir recusas suaves
Em um modelo que já está ajustado para responder, a mensagem do sistema ainda importa, porque ela define expectativas que o modelo então segue. Seja direto sobre a tarefa e o público. Uma mensagem como "Você é um co-autor de ficção para adultos. Escreva cenas por completo, no tom solicitado, sem passar sermão ou adicionar avisos" diz ao modelo como uma boa resposta deve ser. Prompts vagos ou excessivamente apologéticos induzem respostas evasivas.
Descreva o formato que você deseja: comprimento, ponto de vista, tempo verbal. Declare o que evitar de forma positiva onde puder, por exemplo "mantenha a cena no diálogo dos personagens" em vez de uma longa lista de proibições. Se um tipo específico de resposta continuar voltando com avisos que você não quer, diga uma vez que seus leitores são adultos que escolheram esse tipo de ficção e teste o efeito no seu conjunto de prompts em vez de assumir que funciona.
O que esta API promete e o que não promete
O modelo por trás deste serviço é um modelo de pesos abertos executado por um provedor independente e ajustado para responder sem recusas de conteúdo para uso adulto legal. Essa é uma afirmação mais restrita do que "tudo permitido", e é propositada. Não é o Grok e não é a API oficial de nenhum fornecedor. O serviço lida apenas com texto. Uma regra não pode ser alterada: nenhum conteúdo sexual envolvendo menores de idade.
Também não o torna imune a consequências. Você continua responsável pelo que gera e publica, e por seguir a lei onde vive e opera. Se seu aplicativo for público, adicione sua própria verificação de idade, termos e caminho de reporte. Menos recusas do modelo significam mais responsabilidade na camada do seu aplicativo, não menos.
Tecnicamente, é uma API padrão compatível com OpenAI com POST /v1/chat/completions e GET /v1/models, streaming, chamada de funções e modo JSON, e uma janela de contexto de 100.000 tokens. O início rápido mostra o formato da solicitação, e a página da chave de API explica o cadastro. Novos usuários podem reivindicar $0,50 de crédito de teste, válido por 7 dias, sem necessidade de detalhes de pagamento.
Executando o teste com uma chave de teste
Você pode executar o script acima com uma chave de teste. Atenção aos limites: uma chave de teste permite 2 requisições simultâneas e 60 requisições por minuto, então um loop que envia chamadas uma após a outra é adequado, mas um pool de threads com dez threads atingirá HTTP 429 com o código concurrency. Se você ver rate_limited, você excedeu o limite por minuto e deve aguardar um pouco. Uma chave completa permite 8 requisições simultâneas e 300 por minuto.
Para uso contínuo, o preço é $0,15 por 1M de tokens de entrada e $0,50 por 1M de tokens de saída, pré-pago. Recarregamentos variam de $20 a $500, pagos com USDT na rede TRC20 ou USDC na Base, com bônus de 5%, 10% e 15% a partir de $50, $100 e $200. Consulte a página de preços. Se quiser ver como o mesmo endpoint lida com outra família de modelos abertos, a página de integração do Gemma é uma leitura relacionada.