Coder AI sem filtro: use no Cursor e Python
Algumas solicitações de código recebem recusa ou aviso de assistentes convencionais: ferramentas de segurança, scrapers, engenharia reversa, relatórios de exploits para seu próprio laboratório. Veja como conectar um modelo sem censura ao seu editor e scripts, e o que esperar dele.

Pontos principais
- O endpoint usa o formato de chat da OpenAI, então editores e frameworks que aceitam URL base personalizada podem usá-lo.
- Chamada de funções, modo JSON e streaming são suportados, cobrindo a maioria dos padrões de agentes de código.
- A janela de 100.000 tokens cabe uma grande parte de um repositório em uma única requisição.
- É um modelo geral, não especializado em código, então teste-o nas suas tarefas primeiro.
O que é um coder sem filtro e o que não é
Um codificador de IA sem filtro é um modelo de linguagem que responde a solicitações de programação sem questionar suas motivações. Se você está escrevendo um scanner de portas para uma rede de sua propriedade, descompilando um binário legado do qual você perdeu o código-fonte ou criando um scraper que imita um navegador, você recebe código em vez de um parágrafo sobre uso responsável.
É importante ser preciso sobre o que este serviço é. É um único modelo de pesos abertos, ajustado para responder sem recusas de conteúdo para uso adulto legal, operada por um provedor independente. Não é a API oficial de nenhum grande fornecedor e não é um roteador que escolhe entre modelos. O ID do modelo é uncensored. Não há alegação aqui sobre pontuações de benchmark, pois nenhuma é publicada para ele neste site. Um modelo com menos recusas não é automaticamente um programador melhor, então trate a primeira semana como uma avaliação.
O uso lícito é sua responsabilidade. A ferramenta remove fricções para trabalho de segurança legítimo, pesquisa e engenharia incomum. Não é uma licença para atacar sistemas que você não possui.
Chame via Python ou curl
O teste mais simples é uma única requisição. Este script Python solicita uma pequena ferramenta e imprime a resposta.
from openai import OpenAI
client = OpenAI(base_url="https://api.nofilterai.cc/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
temperature=0.2,
messages=[
{"role": "system", "content": "You are a senior engineer. Reply with code first, then at most five lines of notes."},
{"role": "user", "content": "Write a Python script that scans TCP ports 1-1024 on a host I own, using asyncio, with a 0.5 s timeout."},
],
)
print(resp.choices[0].message.content)
Temperatura baixa é ideal para código. Valores entre 0,1 e 0,3 dão saída mais estável, e seed permite repetir uma execução ao comparar prompts. A mesma requisição pelo shell se parece com isto.
curl https://api.nofilterai.cc/v1/chat/completions \
-H "Authorization: Bearer YOUR_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"temperature": 0.2,
"messages": [
{"role": "user", "content": "Explain this regex and rewrite it without lookbehind: (?<=id=)\\d+"}
]
}'
Você pode listar o que o endpoint expõe com GET /v1/models. Obtenha uma chave na página de chaves; o crédito de teste de um clique de US$ 0,50 é suficiente para muitas centenas de solicitações de codificação pequenas.
Configure no Cursor
O Cursor permite substituir a URL base da OpenAI nas configurações do modelo, que é como você o aponta para qualquer provedor compatível. Os nomes exatos do menu mudam entre versões, então siga a ideia em vez dos rótulos.
- Abra as configurações do Cursor e encontre a seção de modelos.
- Cole sua chave no campo da chave de API da OpenAI.
- Ative a opção para substituir a URL base da OpenAI e insira
https://api.nofilterai.cc/v1. - Adicione um modelo personalizado chamado
uncensorede selecione-o no painel de chat. - Envie uma mensagem de teste pequena antes de tentar editar vários arquivos.
O Cursor e editores similares podem usar seus próprios servidores para alguns recursos, e alguns recursos podem não aceitar modelos personalizados. Se um recurso falhar, verifique se está vinculado aos modelos do próprio fornecedor em vez de assumir que o endpoint está quebrado. O chat com um modelo personalizado é a parte confiável.
Outras ferramentas que aceitam um endpoint compatível com OpenAI, como Continue ou Aider, usam os mesmos três valores: URL base, chave, nome do modelo.
Use com LangChain
A classe ChatOpenAI do LangChain aceita um argumento base_url, então o endpoint entra sem necessidade de wrapper.
from langchain_openai import ChatOpenAI
llm = ChatOpenAI(
model="uncensored",
base_url="https://api.nofilterai.cc/v1",
api_key="YOUR_KEY",
temperature=0.2,
)
print(llm.invoke("Write a bash one-liner that lists the 10 largest files under /var/log.").content)
Cadeias, modelos de prompt e analisadores de saída funcionam da mesma forma que com qualquer modelo de chat que siga o esquema OpenAI. Se você criar um agente, lembre-se do limite de concorrência: uma chave completa permite 8 requisições simultâneas e 300 por minuto, uma chave de teste 2 e 60. Um agente paralelo que distribui dez chamadas de função receberá HTTP 429 com o código concurrency para os extras. Limite a distribuição ou tente novamente com um atraso curto.
Chamada de funções e modo JSON para agentes
Agentes de código dependem de saída estruturada. A API suporta tools, tool_choice, tool_calls em streaming, e resultados de ferramentas enviados como mensagens role: "tool". Aqui está uma ida e volta mínima com uma função que lê um arquivo.
import json
from openai import OpenAI
client = OpenAI(base_url="https://api.nofilterai.cc/v1", api_key="YOUR_KEY")
tools = [{
"type": "function",
"function": {
"name": "read_file",
"description": "Read a UTF-8 text file from the project",
"parameters": {
"type": "object",
"properties": {"path": {"type": "string"}},
"required": ["path"],
},
},
}]
messages = [{"role": "user", "content": "Open main.py and tell me what it does."}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
call = first.choices[0].message.tool_calls[0]
messages.append(first.choices[0].message)
messages.append({
"role": "tool",
"tool_call_id": call.id,
"content": open(json.loads(call.function.arguments)["path"]).read(),
})
final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
print(final.choices[0].message.content)
Sempre valide os argumentos antes de executar qualquer coisa que o modelo solicitar. Um caminho, uma string de shell ou uma URL vindos de um modelo são entrada não confiável, independentemente do modelo que os produziu.
Para que o código analise a saída, defina response_format como {"type":"json_object"} e especifique no prompt quais chaves você espera. O modo JSON torna a resposta JSON válida, mas as verificações do seu esquema ainda pertencem ao seu código.
Tamanho do contexto e custo de uma chamada de código
A janela é de 100.000 tokens para prompt mais resposta. Como orientação aproximada, isso abrange muitos arquivos de origem de uma vez, então você pode colar um módulo, seus testes e o traceback com falha de uma só vez, em vez de resumir. Prompts maiores custam mais, então envie apenas o que a pergunta precisa.
O preço é $0,15 por 1M de tokens de entrada e $0,50 por 1M de tokens de saída. Exemplos:
| Requisição | Entrada | Saída | Custo |
|---|---|---|---|
| Explique uma função | 1,500 | 500 | $0.000225 + $0.00025 = $0.000475 |
| Revise um módulo com testes | 30,000 | 2,000 | $0.0045 + $0.001 = $0.0055 |
| 200 avaliações como essa por dia | 6,000,000 | 400,000 | $0.90 + $0.20 = $1.10 |
| Janela inteira como entrada, uma chamada | 100,000 | 0 | $0.015 |
Requisições falhas ou recusadas não são cobradas. O crédito é pré-pago, não expira e as recargas variam de $20 a $500 em qualquer valor inteiro, com bônus de 5% a partir de $50, 10% a partir de $100 e 15% a partir de $200. O pagamento é apenas cripto: USDT na TRC20 ou USDC na Base. Veja a página de preços para os termos atuais.
Um prompt de revisão que funciona em diffs reais
Um dos melhores usos de uma janela grande é a revisão. Em vez de perguntar "este código é bom?", cole o diff e os arquivos que ele toca, depois solicite análises em um formato fixo. Solicite uma lista numerada na qual cada item nomeie o arquivo, a linha, o problema e uma correção de uma linha, e diga que uma lista vazia é uma resposta válida. Essa última instrução é importante: um modelo instruído a encontrar problemas às vezes os inventa para agradar você.
Mantenha a temperatura próxima de 0,2 para revisão, porque você quer a mesma descoberta em uma segunda execução. Se você executar revisões em um trabalho de integração contínua, defina seed e registre o cabeçalho X-Request-Id para rastrear um resultado surpreendente depois. Combine isso com o modo JSON quando um script precisar postar os achados em algum lugar, e solicite chaves como file, line, severity e fix.
Quando a resposta está errada ou vazia
Três problemas cobrem a maioria das execuções falhas. Se você receber 401, a chave está faltando ou o cabeçalho não é Authorization: Bearer seguido pela sua chave. Se um editor disser que o modelo não existe, verifique se o nome é exatamente uncensored e se a URL base termina em /v1 sem caminho extra. Se o código compilar mas se comportar mal, dê ao modelo a saída com falha e peça para ele explicar o erro antes de reescrever qualquer coisa; correções feitas após um diagnóstico tendem a ser menores e mais seguras do que correções feitas às cegas.
Onde se encaixa e onde não se encaixa
Use um endpoint sem censura para as requisições que outros assistentes recusam ou suavizam, e mantenha sua ferramenta habitual para o resto se funcionar melhor para você. Muitos desenvolvedores executam dois modelos lado a lado e enviam cada tarefa para aquele que responde de forma limpa.
- Bom ajuste: trabalho de laboratório de segurança em sistemas de sua propriedade, scripts de raspagem e automação, relatórios de análise de malware para defensores, notas de engenharia reversa, trabalhos estranhos de manipulação de dados.
- Cuidado: código gerado pode conter erros ou funções de biblioteca inventadas. Execute-o, teste-o, leia-o.
- Não oferecido: geração de imagens ou áudio, embeddings e fine-tuning. Este é apenas um endpoint de chat de texto.
- Privacidade: os prompts não são usados para treinamento, o que é importante se você colar código proprietário.
O limite do corpo é de 8 MB por requisição, muito mais do que a janela de contexto pode usar. Os cabeçalhos de resposta incluem X-Request-Id, X-Balance-USD e os valores de limite de requisições, que são úteis nos logs. A documentação lista todos os parâmetros que são repassados.
Mais guias
Perguntas e respostas
Um codificador de IA sem filtro é melhor em programação do que outros modelos?
Não por padrão. Menos recusas alteram o que ele responderá, não o quão bem ele programa. Teste-o em suas próprias tarefas antes de confiar nele.
Quais editores e frameworks funcionam com ele?
Qualquer coisa que permita uma URL base compatível com OpenAI personalizada, uma chave e um nome de modelo. Cursor, LangChain e os SDKs oficiais da OpenAI são exemplos comuns.
Ele suporta chamada de funções?
Sim. Ele aceita ferramentas e tool_choice, retorna tool_calls (também durante o streaming) e aceita resultados como mensagens de role tool. O modo JSON também está disponível.
O que acontece quando eu atingo o limite de taxa?
Você recebe HTTP 429 com o código de erro rate_limited ou concurrency. Para sobrecarga temporária, o 429 carrega um cabeçalho Retry-After de 5 segundos.
Sua chave está a um formulário de distância
Crie uma conta, copie a chave e altere a URL base. Essa é toda a configuração.