Authentification
L'authentification est gérée via une seule clé API. Vous pouvez vous connecter en utilisant Google ou un mot de passe par e-mail sur la page Obtenir la clé API. La clé est affichée immédiatement et est liée à votre crédit prépayé. Contrairement aux principaux fournisseurs, il n'y a pas d'abonnements mensuels ni de cartes bancaires nécessaires pour l'essai. Utilisez l'en-tête Authorization: Bearer YOUR_API_KEY pour toutes les requêtes. Votre clé est l'unique identifiant actif par compte ; la génération d'une nouvelle clé invalide la précédente.
Complétion de base
Envoyez une requête standard de complétion de chat à l'endpoint compatible OpenAI. L'identifiant du modèle est uncensored. Ce modèle à poids ouverts est ajusté pour répondre sans refus de contenu pour un usage adulte légal. Il ne s'agit pas de GPT, Claude ou d'un autre modèle de fournisseur. L'URL de base pour ce service est fournie ci-dessous.
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."}]
}'Remplacez YOUR_API_KEY par votre clé depuis le tableau de bord. La réponse inclut le texte généré dans choices[0].message.content. Les erreurs comme 401 indiquent une clé invalide, tandis que 402 signifie que votre crédit prépayé est épuisé.
SDK Python
Utilisez le package Python officiel openai. Pointez-le vers l'URL de base d'Ornith et fournissez votre clé API. Cela garantit la compatibilité avec la structure standard du client OpenAI. Vous pouvez passer les messages sous forme de liste de dictionnaires contenant role et content. Le client gère automatiquement les requêtes HTTP. Cette approche fonctionne pour la génération de texte simple et les interactions plus complexes utilisant des outils ou le mode 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'objet réponse reflète la structure standard OpenAI. Vous pouvez accéder directement au texte généré depuis l'objet réponse. Cette méthode est idéale pour les services backend ou les scripts où vous avez besoin d'un accès programmatique à la sortie du modèle.
SDK Node.js
Installez le package npm openai. Initialisez le client avec l'URL de base d'Ornith et votre clé API. La structure de la requête est identique au SDK Python. Utilisez la méthode chat.completions.create. Cela convient aux environnements JavaScript, que vous construisiez un backend web ou un outil CLI. Le client gère la sérialisation et la désérialisation de la réponse.
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);Gérez les erreurs de manière appropriée. Les erreurs réseau ou API lanceront des exceptions. Vérifiez le code de statut pour distinguer les échecs d'authentification, les limites de débit ou les erreurs serveur. La réponse contient les détails de la complétion dans le même format que le SDK Python.
Réponses en streaming
Activez le streaming en définissant stream: true dans votre requête. Cela retourne un flux de tokens au fur et à mesure de leur génération. Utilisez ceci pour les mises à jour d'interface utilisateur en temps réel ou l'affichage progressif du texte. Le flux se termine par un dernier chunk contenant l'utilisation totale des tokens. Cela vous permet de suivre les coûts en temps réel sans attendre la réponse complète. C'est efficace pour les contextes longs où vous souhaitez afficher la progression.
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)Itérez sur le flux pour traiter chaque chunk. Le dernier chunk inclut le champ usage. C'est utile pour la transparence de la facturation. Assurez-vous que votre client gère correctement le flux pour éviter les problèmes de mémoire avec les grandes réponses.
Limites, erreurs et contexte
La fenêtre de contexte est de 100 000 tokens pour le prompt et la complétion combinés. Le maximum de sortie par requête est de 32 000 tokens (2 048 si max_tokens n'est pas défini). Vous êtes limité à 300 requêtes par minute et 8 requêtes simultanées par clé. Les corps de requête doivent être inférieurs à 8 Mo. Si vous dépassez la limite de débit, vous recevez une erreur 429. Les refus pour le contenu mineur sont codés en dur et s'appliquent toujours. Les erreurs ne consomment pas de crédit. Le crédit est prépayé et n'expire jamais.