IT ▾
Ottieni la chiave API

Coder AI senza filtri: usalo in Cursor e Python

Alcune richieste di codice ricevono un rifiuto o un'etichetta di avviso dagli assistenti mainstream: tool di sicurezza, scraper, reverse engineering, report di exploit per il tuo laboratorio. Ecco come collegare un modello senza censura al tuo editor e script, e cosa aspettarsi.

Aggiornato

Terminale isometrico con blocchi di codice che fluiscono in cubi connessi, illustrazione di un'API di coding senza censura

Punti chiave

  • L'endpoint usa il formato chat OpenAI, quindi editor e framework che accettano un URL base personalizzato possono usarlo.
  • Chiamata di funzioni, modalità JSON e streaming sono supportati, coprendo la maggior parte dei pattern per coding-agent.
  • La finestra da 100.000 token copre una grande porzione di un repository in una singola richiesta.
  • È un modello generale, non specializzato nel codice, quindi testalo sui tuoi task prima.

Cos'è un coder senza filtri e cosa non è

Un coder senza filtri è un modello linguistico che risponde alle richieste di programmazione senza mettere in discussione le tue motivazioni. Se stai scrivendo uno scanner di rete per una rete di tua proprietà, decompilando un binario legacy per cui hai perso il codice sorgente, o costruendo uno scraper che imita un browser, ottieni codice invece di un paragrafo sull'uso responsabile.

È importante essere precisi su cosa sia questo servizio. È un unico modello a pesi aperti, ottimizzato per rispondere senza rifiuti di contenuto per l'uso adulto lecito, gestito da un provider indipendente. Non è l'API ufficiale di alcun grande fornitore e non è un router che sceglie tra i modelli. L'ID del modello è uncensored. Non vi è alcuna pretesa qui sui punteggi dei benchmark, perché nessuno è pubblicato per esso su questo sito. Un modello con meno rifiuti non è automaticamente un programmatore migliore, quindi tratta la prima settimana come una valutazione.

L'uso legale è tua responsabilità. Lo strumento rimuove l'attrito per lavoro di sicurezza legittimo, ricerca e ingegneria insolita. Non è una licenza per attaccare sistemi di cui non sei proprietario.

Chiamalo da Python o curl

Il test più semplice è una singola richiesta. Questo script Python chiede un piccolo tool e stampa la risposta.

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)

La bassa temperatura si adatta al codice. Valori tra 0,1 e 0,3 danno output più stabili, e seed ti permette di ripetere un'esecuzione quando confronti i prompt. La stessa richiesta dalla shell appare così.

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+"}
    ]
  }'

Puoi elencare cosa espone l'endpoint con GET /v1/models. Ottieni una chiave dalla pagina delle chiavi; il credito di prova con un clic di $0,50 è sufficiente per molte centinaia di piccole richieste di codifica.

Configuralo in Cursor

Cursor ti permette di sovrascrivere l'URL base OpenAI nelle impostazioni del modello, così puoi puntarlo a qualsiasi provider compatibile. I nomi esatti del menu variano tra le versioni, quindi segui l'idea piuttosto che le etichette.

  1. Apri le impostazioni di Cursor e trova la sezione modelli.
  2. Incolla la tua chiave nel campo OpenAI API key.
  3. Abilita l'opzione per sovrascrivere l'URL base OpenAI e inserisci https://api.nofilterai.cc/v1.
  4. Aggiungi un modello personalizzato chiamato uncensored e selezionalo nel pannello chat.
  5. Invia un piccolo messaggio di test prima di provare una modifica su più file.

Cursor e editor simili possono usare i loro server per alcune funzionalità, e alcune funzionalità potrebbero non accettare modelli personalizzati. Se una funzionalità fallisce, controlla se è legata ai modelli del vendor piuttosto che assumere che l'endpoint sia rotto. La chat con un modello personalizzato è la parte affidabile.

Altri strumenti che accettano un endpoint OpenAI-compatibile, come Continue o Aider, usano gli stessi tre valori: URL base, chiave, nome del modello.

Usalo con LangChain

La classe ChatOpenAI di LangChain accetta un argomento base_url, quindi l'endpoint si integra senza un wrapper personalizzato.

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)

Le catene, i modelli di prompt e i parser di output funzionano allo stesso modo in cui lo fanno con qualsiasi modello di chat che segue lo schema OpenAI. Se costruisci un agente, ricorda il limite di concorrenza: una chiave completa permette 8 richieste contemporaneamente e 300 al minuto, una chiave di prova 2 e 60. Un agente parallelo che espande dieci chiamate di funzioni otterrà HTTP 429 con il codice concurrency per gli extra. Limita l'espansione, o riprova con un breve ritardo.

Chiamata di funzioni e modalità JSON per gli agent

Gli agent di coding vivono di output strutturati. L'API supporta tools, tool_choice, tool_calls in streaming e risultati degli strumenti inviati come messaggi role: "tool". Ecco un round trip minimo con una funzione che legge un file.

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)

Convalida sempre gli argomenti prima di eseguire qualsiasi cosa il modello chieda. Un percorso, una stringa shell o un URL provenienti da un modello sono input non attendibili, indipendentemente dal modello che li ha prodotti.

Per far sì che il tuo codice venga analizzato, imposta response_format su {"type":"json_object"} e indica nel prompt quali chiavi ti aspetti. La modalità JSON rende la risposta JSON valida, ma i controlli dello schema restano nel tuo codice.

Dimensione del contesto e costo di una chiamata di coding

La finestra è di 100.000 token per prompt più risposta. Come indicazione approssimativa, questo spazio contiene molti file sorgente contemporaneamente, così puoi incollare un modulo, i suoi test e il traceback fallito in una sola volta invece di riassumere. Prompt più grandi costano di più, quindi invia solo ciò di cui la domanda ha bisogno.

Il prezzo è $0,15 per 1M token di input e $0,50 per 1M token di output. Esempi:

RichiestaInputOutputCosto
Spiegare una funzione1,500500$0.000225 + $0.00025 = $0.000475
Revisionare un modulo con test30,0002,000$0.0045 + $0.001 = $0.0055
200 revisioni come quella in un giorno6,000,000400,000$0.90 + $0.20 = $1.10
Finestra intera come input, una chiamata100,0000$0.015

Le richieste fallite o rifiutate non vengono addebitate. Il credito è prepagato, non scade mai, e le ricariche partono da $20 a $500 in qualsiasi importo intero, con un bonus del 5% da $50, 10% da $100 e 15% da $200. Il pagamento è solo cripto: USDT su TRC20 o USDC su Base. Vedi la pagina dei prezzi per i termini attuali.

Un prompt di revisione che funziona su diff reali

Uno dei migliori usi di una finestra grande è la revisione. Invece di chiedere "è un buon codice?", incolla il diff e i file che tocca, poi chiedi i risultati in una forma fissa. Richiedi un elenco numerato in cui ogni elemento nomina il file, la riga, il problema e una correzione di una riga, e specifica che un elenco vuoto è una risposta valida. Quest'ultima istruzione è importante: un modello istruito a trovare problemi a volte li inventa per piacerti.

Mantieni la temperatura vicino a 0,2 per la revisione, perché vuoi lo stesso risultato in una seconda esecuzione. Se esegui revisioni in un lavoro di integrazione continua, imposta seed e registra l'intestazione X-Request-Id in modo da poter tracciare un risultato sorprendente in seguito. Combina questo con la modalità JSON quando uno script deve pubblicare i risultati da qualche parte, e chiedi chiavi come file, line, severity e fix.

Quando la risposta è errata o vuota

Tre problemi coprono la maggior parte delle esecuzioni fallite. Se ottieni un 401, la chiave manca o l'intestazione non è Authorization: Bearer seguita dalla tua chiave. Se un editor dice che il modello non esiste, controlla che il nome sia esattamente uncensored e che l'URL base finisca con /v1 senza percorsi extra. Se il codice si compila ma si comporta male, fornisci al modello l'output fallito e chiedigli di spiegare l'errore prima che riscriva qualsiasi cosa; le correzioni fatte dopo una diagnosi tendono ad essere più piccole e più sicure delle correzioni fatte alla cieca.

Dove si adatta e dove non si adatta

Usa un endpoint senza censura per le richieste che altri assistenti rifiutano o per cui si mostrano cauti, e mantieni il tuo strumento abituale per il resto se funziona meglio per te. Molti sviluppatori eseguono due modelli fianco a fianco e inviano ogni attività a quello che la gestisce in modo chiaro.

  • Buon adattamento: lavoro di laboratorio di sicurezza su sistemi di tua proprietà, script di scraping e automazione, analisi malware per i difensori, note di reverse engineering, lavori di manipolazione dei dati insoliti.
  • Attenzione: il codice generato può contenere errori o funzioni di libreria inventate. Eseguilo, testalo, leggilo.
  • Non offerto: generazione di immagini o audio, embedding e affinamento. Questo è un endpoint di chat testuale solo.
  • Privacy: i prompt non sono usati per l'addestramento, il che conta se incollhi codice proprietario.

Il limite del corpo è di 8 MB per richiesta, molto più di quanto la finestra di contesto possa usare. Le intestazioni di risposta includono X-Request-Id, X-Balance-USD e i valori del limite di richieste, che sono utili nei log. La documentazione elenca ogni parametro che viene passato.

Domande e risposte

Un AI coder senza filtri è migliore nella programmazione rispetto ad altri modelli?

Non di default. Meno rifiuti cambiano ciò a cui risponderà, non quanto bene programma. Testalo sui tuoi compiti prima di affidarti ad esso.

Quali editor e framework funzionano con esso?

Qualsiasi cosa permetta un URL base compatibile con OpenAI personalizzato, una chiave e un nome del modello. Cursor, LangChain e gli SDK ufficiali di OpenAI sono esempi comuni.

Supporta la chiamata di funzioni?

Sì. Accetta strumenti e tool_choice, restituisce tool_calls (anche in streaming) e accetta risultati come messaggi con ruolo tool. È disponibile anche la modalità JSON.

Cosa succede quando superi il limite di richieste?

Ottieni HTTP 429 con il codice di errore rate_limited o concurrency. Per sovraccarico temporaneo il 429 trasporta un'intestazione Retry-After di 5 secondi.

La tua chiave è a un modulo di distanza

Crea un account, copia la chiave, modifica l'URL di base. Questa è tutta la configurazione.