Perché usare un'API Uncensored.chat?
Le API LLM standard applicano spesso filtri sui contenuti rigidi che rifiutano contenuti adulti leciti, narrativa creativa o argomenti controversi. Un'API chat senza censura rimuove queste barriere, consentendo al modello di rispondere ai prompt in base alla pertinenza piuttosto che alla conformità alle policy. Questo è fondamentale per le applicazioni che necessitano della capacità grezza del modello senza vincoli artificiali.
La nostra API serve un singolo modello a pesi aperti ottimizzato specificamente per questo comportamento. Non effettua routing tra fornitori né offre scelte multiple di modelli. Ottieni output coerenti e prevedibili da un unico motore ottimizzato. Questo semplifica il debugging e l'ottimizzazione delle prestazioni poiché non devi gestire personalità di modello variabili o livelli di filtraggio nascosti.
A differenza dei provider generalisti, non includiamo embedding, generazione di immagini o elaborazione audio. Questo mantiene l'API leggera e veloce. Se la tua applicazione richiede capacità multimodali, dovresti integrarle separatamente e utilizzare questa API esclusivamente per la generazione di testo. L'obiettivo qui è puramente l'output di testo di alta qualità e senza restrizioni con una finestra di contesto da 100.000 token.
Configurazione dell'ambiente
L'integrazione inizia configurando il tuo ambiente di sviluppo per puntare al nostro URL di base. Si tratta di un endpoint standard compatibile con OpenAI, quindi puoi utilizzare qualsiasi SDK ufficiale OpenAI o libreria client compatibile. Devi solo modificare l'URL di base e fornire una chiave API.
L'URL di base è https://api.nofilteraichat.com/v1. L'ID del modello da inviare nelle tue richieste è uncensored. Questo modello è eseguito sui nostri server e non è GPT, Claude o il modello di nessun altro fornitore. È un modello a pesi aperti ottimizzato per risposte senza censura.
Assicurati che il tuo ambiente supporti lo streaming tramite Server-Sent Events (SSE) se prevedi di utilizzare output in tempo reale. L'API supporta parametri standard come temperature, top_p, stop e seed. Puoi anche abilitare la modalità JSON impostando response_format su {"type": "json_object"}.
Finestra di contesto: 100,000 token totali (prompt + completamento). Non esiste un limite separato per l'output e, se max_tokens non è impostato, la risposta può estendersi fino alla fine della finestra.
Autenticazione con chiavi API
L'autenticazione avviene tramite una chiave API passata nell'intestazione Authorization. Puoi registrarti utilizzando Continua con Google o email e password nella pagina Ottieni chiave API. Non è richiesto il numero di telefono.
Quando crei un account, ricevi una chiave API attiva. Questa chiave viene mostrata immediatamente alla creazione. Se ne generi una nuova, quella vecchia viene sostituita; non supportiamo più chiavi simultanee per account. Questo semplifica la gestione delle chiavi, ma significa che non puoi avere chiavi separate per ambienti diversi sullo stesso account.
La chiave serve ad autorizzare le richieste all'endpoint /v1/chat/completions. Errori e rifiuti (tranne il limite rigido sui contenuti sessuali minori) non consumano il tuo credito prepagato. Il credito viene addebitato solo per l'utilizzo effettivo dei token.
Privacy: i prompt non vengono utilizzati per l'addestramento. Un account richiede solo un indirizzo email.
Creare la tua prima richiesta
La tua prima richiesta dovrebbe essere un semplice completamento di chat per verificare la connettività. Utilizza l'endpoint POST /v1/chat/completions con l'ID del modello uncensored.
Ecco un esempio di richiesta di base:
curl https://api.nofilteraichat.com/v1/chat/completions \
-H "Authorization: Bearer $API_KEY" \
-H "Content-Type: application/json" \
-d '{
"model": "uncensored",
"messages": [{"role": "user", "content": "Write a blunt product review of a cheap VPN."}]
}'Questa richiesta invia un prompt e riceve una risposta testuale. Il modello risponderà senza filtrare i contenuti adulti leciti. Se devi imporre un tono o un formato specifico, utilizza il messaggio system per impostare le istruzioni.
Ricorda che l'API ha un limite di 300 richieste al minuto per chiave e consente 8 richieste parallele. Se superi questi limiti, riceverai un errore di limite di richieste. La dimensione del corpo della richiesta è limitata a 8 MB. Assicurati che il tuo client gestisca questi limiti in modo elegante implementando un backoff esponenziale per i ritentativi.
Implementazione delle risposte in streaming
Lo streaming è supportato tramite Server-Sent Events (SSE). Questo ti consente di ricevere i token man mano che vengono generati, offrendo un'esperienza utente migliore per le risposte lunghe. Ogni chunk contiene un delta parziale della risposta.
Importante: le statistiche di utilizzo dei token (token di input e output) sono incluse solo nell'ultimo chunk dello stream. Devi aggregare i delta ed elaborare l'ultimo chunk per ottenere dati di utilizzo accurati a fini di fatturazione.
Ecco un esempio di come gestire lo streaming nel tuo codice:
from openai import OpenAI
client = OpenAI(base_url="https://api.nofilteraichat.com/v1", api_key="YOUR_KEY")
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Summarise this thread without softening it."}],
)
print(resp.choices[0].message.content)Questo approccio garantisce che tu possa visualizzare il testo in tempo reale mantenendo un tracciamento accurato del consumo di token. Se si verifica un errore durante lo streaming, lo stream potrebbe terminare prematuramente. Controlla l'ultimo chunk o lo stato di errore per i dettagli.
Utilizzo della chiamata di funzioni
La chiamata di funzioni è supportata tramite i parametri tools e tool_choice. Questo consente al modello di generare dati strutturati che la tua applicazione può eseguire. Definisce le tue funzioni nell'array tools e il modello restituirà un campo tool_calls nella risposta quando appropriato.
Imposta tool_choice su "auto" per lasciare al modello la decisione su quando chiamare una funzione, o specifica un ID funzione specifico per forzare una chiamata. Il modello restituirà il nome della funzione e gli argomenti in formato JSON.
Struttura di esempio:
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.nofilteraichat.com/v1", apiKey: process.env.API_KEY });
const resp = await client.chat.completions.create({
model: "uncensored",
messages: [{ role: "user", content: "Draft a villain monologue for my game." }],
});
console.log(resp.choices[0].message.content);Assicurati che il tuo client analizzi l'array tool_calls ed esegua le funzioni. Il modello non esegue le funzioni direttamente; genera solo le istruzioni di chiamata. Si tratta di un pattern standard compatibile con OpenAI, quindi qualsiasi libreria che supporta la chiamata di funzioni con OpenAI dovrebbe funzionare qui.
Gestione della modalità JSON
La modalità JSON garantisce che il modello produca JSON rigorosamente valido. Questo è utile per le applicazioni che necessitano di dati strutturati, come risposte API o file di configurazione. Imposta response_format su {"type": "json_object"} nella tua richiesta.
Quando la modalità JSON è abilitata, il modello tenterà di produrre un singolo oggetto JSON valido. Se l'output non è valido, l'API potrebbe restituire un errore o una risposta malformata. Convalida sempre il JSON lato client.
Esempio:
stream = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Tell the story in second person."}],
stream=True,
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)Questa modalità è particolarmente utile per la creazione di agenti o applicazioni che richiedono formati di output deterministici. Riduce la necessità di post-elaborazione per estrarre dati strutturati dal testo libero. Nota che la modalità JSON potrebbe aumentare leggermente la latenza a causa del vincolo aggiuntivo sull'output del modello.
Gestione dei limiti di richieste e degli errori
I limiti di velocità sono impostati a 300 richieste al minuto per chiave e 8 richieste concorrenti per chiave. Il corpo della richiesta è limitato a 8 MB. Se superi questi limiti, riceverai un codice di stato 429. Implementa un backoff esponenziale nel tuo client per gestire i ritentativi.
Errori come parametri non validi o problemi del server non consumano credito. I rifiuti per contenuti adulti leciti non consumano credito. L'unico limite rigido che si applica sempre è il rifiuto dei contenuti sessuali che coinvolgono minori, che consumerà token se la richiesta viene elaborata.
I prezzi sono trasparenti: $0,15 per 1M token di input e $0,50 per 1M token di output. Il credito è prepagato e non scade mai. Gli errori sono gratuiti, quindi puoi sperimentare senza preoccuparti dei costi. Se riscontri un problema di fatturazione, utilizza la pagina Supporto per assistenza.
