Autenticazione
L'autenticazione avviene tramite una singola chiave API. Puoi accedere registrandoti con Google o con email e password alla pagina Ottieni chiave API. La chiave viene visualizzata immediatamente ed è legata al tuo credito prepagato. A differenza dei principali fornitori, non ci sono abbonamenti mensili né carte di credito richieste per la prova. Usa l'intestazione Authorization: Bearer YOUR_API_KEY per tutte le richieste. La tua chiave è l'unica credenziale attiva per account; generarne una nuova invalida quella precedente.
Completamento di base
Invia una richiesta standard di completamento chat all'endpoint compatibile con OpenAI. L'identificatore del modello è uncensored. Questo modello a pesi aperti è ottimizzato per rispondere senza rifiuti di contenuto per uso adulto lecito. Non è GPT, Claude o alcun altro modello di vendor. L'URL di base per questo servizio è fornito di seguito.
curl https://api.ornith.top/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."}]
}'Sostituisci YOUR_API_KEY con la tua chiave dalla dashboard. La risposta include il testo generato in choices[0].message.content. Errori come 401 indicano una chiave non valida, mentre 402 significa che il tuo credito prepagato è esaurito.
SDK Python
Usa il pacchetto Python ufficiale openai. Puntalo all'URL di base di Ornith e fornisci la tua chiave API. Questo garantisce la compatibilità con la struttura standard del client OpenAI. Puoi passare i messaggi come una lista di dizionari contenenti role e content. Il client gestisce automaticamente le richieste HTTP. Questo approccio funziona sia per la generazione di testo semplice che per interazioni più complesse che usano strumenti o la modalità JSON.
from openai import OpenAI
client = OpenAI(base_url="https://api.ornith.top/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)L'oggetto risposta rispecchia la struttura standard di OpenAI. Puoi accedere al testo generato direttamente dall'oggetto risposta. Questo metodo è ideale per servizi backend o script dove hai bisogno di accesso programmatico all'output del modello.
SDK Node.js
Installa il pacchetto npm openai. Inizializza il client con l'URL di base di Ornith e la tua chiave API. La struttura della richiesta è identica allo SDK Python. Usa il metodo chat.completions.create. Questo è adatto per ambienti JavaScript, che tu stia costruendo un backend web o uno strumento CLI. Il client gestisce la serializzazione e deserializzazione della risposta.
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.ornith.top/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);Gestisci gli errori in modo appropriato. Errori di rete o API genereranno eccezioni. Controlla il codice di stato per distinguere tra fallimenti di autenticazione, limiti di richiesta o errori del server. La risposta contiene i dettagli di completamento nello stesso formato dello SDK Python.
Risposte in streaming
Abilita lo streaming impostando stream: true nella tua richiesta. Questo restituisce uno stream di token man mano che vengono generati. Usalo per aggiornamenti UI in tempo reale o visualizzazione progressiva del testo. Lo stream termina con un chunk finale che contiene l'utilizzo totale dei token. Questo ti permette di tracciare i costi in tempo reale senza attendere la risposta completa. È efficiente per contesti lunghi dove vuoi mostrare i progressi.
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)Itera sullo stream per elaborare ogni chunk. L'ultimo chunk include il campo usage. Questo è utile per la trasparenza sulla fatturazione. Assicurati che il tuo client gestisca correttamente lo stream per evitare problemi di memoria con risposte di grandi dimensioni.
Limiti, errori e contesto
La finestra di contesto è di 100.000 token per prompt e completamento combinati. L'output massimo per richiesta è di 32.000 token (2.048 se max_tokens non è impostato). Hai un limite di 300 richieste al minuto e 8 richieste parallele per chiave. I corpi delle richieste devono essere inferiori a 8 MB. Se superi il limite di richieste, ricevi un errore 429. I rifiuti per contenuti correlati ai minori sono hard-coded e si applicano sempre. Gli errori non consumano credito. Il credito è prepagato e non scade mai.