API de chatbot sans filtre : première requête en cinq minutes
Une API de chatbot sans filtre est testable en cinq minutes si vous avez déjà Python. Vous avez besoin d'une clé, de deux paramètres modifiés dans le SDK OpenAI et d'une requête. Ensuite, un prompt système et le streaming en font un chatbot.

Points clés
- Notre LLM sans censure refuse moins de sujets, ce qui le rend idéal pour le jeu de rôle et l'écriture créative sans blocages de contenu inattendus.
- La tarification est strictement au paiement à l'usage à $0,15 par 1M de tokens d'entrée et $0,50 par 1M de tokens de sortie, sans frais de base mensuels.
- L'intégration est sans friction car l'API utilise des endpoints OpenAI standards, ne nécessitant qu'un changement d'URL de base.
- Les recharges crypto via USDT ou USDC incluent un crédit bonus, et les prompts ne sont jamais utilisés pour entraîner vos données.
Minute 1 à 2 : obtenir une clé
Accédez à la page clé API et connectez-vous avec Google, ou avec adresse e-mail et mot de passe. Après la connexion, la page de la clé affiche un bouton pour réclamer le crédit d'essai : 0,50 $, un par personne, valable 7 jours, sans carte requise.
Copiez la clé et placez-la dans une variable d’environnement. Une clé dans un fichier que vous validez par erreur est la façon la plus courante de perdre du crédit.
# model ID for later requests: uncensored
export UF_API_KEY="paste-your-key-here"
pip install openaiUne clé d’essai permet 2 requêtes simultanées et 60 requêtes par minute. Ces limites sont amplement suffisantes pour ce tutoriel.
Minute 3 : la première requête
Le service est compatible OpenAI, donc le SDK officiel fonctionne dès que vous modifiez base_url et la clé. L'ID de modèle est uncensored.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
resp = client.chat.completions.create(
model="uncensored",
messages=[{"role": "user", "content": "Give me three names for a cyberpunk bar."}],
)
print(resp.choices[0].message.content)
print("tokens in/out:", resp.usage.prompt_tokens, resp.usage.completion_tokens)Exécutez-le avec python first.py. Une liste de noms et un nombre de tokens indiquent que tout fonctionne. Si vous voyez une erreur d’authentification, vérifiez la variable. Si la connexion échoue, vérifiez que l’URL de base se termine par /v1.
La réponse suit le format de chat OpenAI : une liste choices avec le message, un bloc usage avec les comptes de tokens et, dans ce format, une raison de fin indiquant pourquoi la génération s’est arrêtée. Une réponse coupée signifie généralement un max_tokens faible. En ce qui concerne le coût, une requête avec 500 tokens d’entrée et 300 tokens de sortie coûte $0.000075 + $0.00015 = $0.000225. Les cinq requêtes de ce tutoriel coûtent environ un dixième de centime au total, donc le crédit d’essai est à peine entamé.
Minute 4 : ajouter un prompt système et des paramètres
Une requête minimale vous donne une voix d'assistant par défaut. Pour un chatbot, ajoutez un message système qui définit un personnage, et passez les paramètres d'échantillonnage qui lui conviennent.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
raw = client.chat.completions.with_raw_response.create(
model="uncensored",
messages=[
{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor. Stay in character. Keep replies under 80 words."},
{"role": "user", "content": "Can you get me across the border tonight?"},
],
temperature=0.9,
top_p=0.95,
max_tokens=200,
seed=7,
)
resp = raw.parse()
print(resp.choices[0].message.content)
print("balance:", raw.headers.get("x-balance-usd"))
print("request id:", raw.headers.get("x-request-id"))temperatureettop_pcontrôlent la variété. Des valeurs plus élevées donnent un texte plus vif et moins prévisible.seedrend les tests plus faciles à répéter. Il est transmis tel quel, utilisez-le pour comparer les modifications de prompt.max_tokensest optionnel. Sans lui, le texte généré peut utiliser le reste de la fenêtre de 100 000 tokens.- L'en-tête de solde vous indique votre crédit restant après chaque appel.
Le prompt est le produit ici. Gardez-le court et spécifique. Dites qui est le personnage, comment il parle, quelle est l'histoire et quelle devrait être la longueur. Tout cela va dans le message système une fois, et vous l'envoyez à nouveau avec chaque requête, car l'API ne se souvient de rien entre les appels.
Minute 5 : streaming
Le streaming affiche le texte au fur et à mesure de sa génération. C’est un changement d’un mot dans la requête, plus une boucle pour lire les blocs.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
stream = client.chat.completions.create(
model="uncensored",
stream=True,
messages=[
{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor."},
{"role": "user", "content": "Tell me about the worst job you ever took."},
],
)
for chunk in stream:
if chunk.choices and chunk.choices[0].delta.content:
print(chunk.choices[0].delta.content, end="", flush=True)
print()Une requête en streaming occupe un de vos slots de concurrence jusqu’à la fin du flux. Avec une clé d’essai, deux flux ouverts utilisent déjà tous les slots, et une troisième requête renvoie HTTP 429 avec le code concurrency. Attendez et réessayez.
Si vous voulez confirmer l’utilisation après un flux, le dernier bloc inclut un bloc d’utilisation.
Choisir les valeurs d'échantillonnage avec un plan
Les paramètres d'échantillonnage changent le style du bot plus que la plupart des gens ne s'y attendent. Commencez avec les valeurs ci-dessous et modifiez une à la fois.
| Objectif | Paramètre | Pourquoi |
|---|---|---|
| Raconter des histoires avec vivacité | temperature 0,9 à 1,0, top_p 0,95 | Plus de variété entre les exécutions |
| Personnage cohérent | temperature 0,6 à 0,7 | Moins de surprises |
| Tests répétables | seed fixe, temperature 0 | Même prompt donne le même type de réponse |
| Moins de répétitions | Pénalité de fréquence ou de présence autour de 0,3 | Décourage les boucles |
| Couper une réponse à un marqueur | stop avec une chaîne | Arrête la sortie dès qu'elle apparaît |
Les paramètres temperature et top_p modifient la variété, et les pénalités sont transmises au modèle. Modifiez une valeur, exécutez le même prompt cinq fois, puis lisez les cinq réponses avant de modifier la suivante.
Transformez-le en conversation
L'API ne conserve pas l'historique. Pour que Rook se souvienne, conservez une liste et ajoutez les deux côtés après chaque tour.
import os
from openai import OpenAI
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
)
messages = [{"role": "system", "content": "You are Rook, a smuggler with a dry sense of humor."}]
def talk(text):
messages.append({"role": "user", "content": text})
r = client.chat.completions.create(model="uncensored", messages=messages)
answer = r.choices[0].message.content
messages.append({"role": "assistant", "content": answer})
return answer
print(talk("Where are we headed?"))
print(talk("And what did I just ask you?"))La deuxième question fonctionne uniquement parce que le premier échange est dans la liste. C’est aussi pourquoi le coût du chat augmente avec la longueur : chaque tour renvoie tout. L’analyse des coûts et des compromis passe en détail cet effet, et la page de tarification affiche les tarifs de $0,15 et $0,50 par 1M tokens.
Deux mises en garde à mesure que la liste grandit. La première est le coût, car de longs historiques augmentent le prix de chaque tour. La seconde est la fenêtre : 100 000 tokens pour le prompt plus la réponse est généreux, mais un jeu de rôle qui dure des semaines y atteindra. Supprimez les tours les plus anciens, en gardant le message système, une fois la liste longue, ou remplacez-les par un résumé court.
Problèmes courants et prochaines étapes
| Problème | Cause probable | Correction |
|---|---|---|
| Erreur d'authentification | Clé incorrecte ou vide | Affichez la longueur de la variable, supprimez les espaces |
| Non trouvé | URL de base manquante /v1 | Utilisez l'URL de base exacte de cette page |
429 rate_limited | Plus de 60 requêtes par minute (essai) | Ralentissez ou utilisez une clé complète (300 par minute) |
429 avec Retry-After: 5 | Surcharge temporaire | Attendez 5 secondes et réessayez |
| Réponses étranges ou plates | Prompt système faible | Ajoutez la voix, le contexte, la limite de longueur |
Les requêtes échouées ou refusées ne sont pas facturées. Pour les prochaines étapes, lisez la documentation de l’API pour les outils et le mode JSON. Le modèle est texte uniquement, donc pas d’images, d’audio ou d’embeddings. Les recharges sont de $20 à $500 en crypto (USDT sur TRC20 ou USDC sur Base), et le crédit n’expire jamais. Vous êtes responsable de l’accès réservé aux adultes et de la modération dans tout ce que vous construisez au-dessus.
Si un problème ne figure pas dans le tableau, réduisez la requête au plus petit cas fonctionnel : un message utilisateur, sans prompt système, sans paramètres supplémentaires. Puis réajoutez les éléments jusqu'à ce que cela échoue. Presque tous les problèmes d'une première intégration proviennent d'une faute de frappe dans l'URL, d'une clé copiée avec un espace à la fin ou d'une liste de messages dans la mauvaise forme.
Gérez les erreurs dans le code
Un script qui fonctionne une fois n'est pas un bot. Ajoutez une nouvelle tentative pour les cas où l'API vous demande d'attendre.
import os, time
from openai import OpenAI, RateLimitError
client = OpenAI(
base_url="https://api.chatbotunfiltered.com/v1",
api_key=os.environ["UF_API_KEY"],
max_retries=0,
)
def ask(messages, tries=4):
for i in range(tries):
try:
r = client.chat.completions.create(model="uncensored", messages=messages)
return r.choices[0].message.content
except RateLimitError:
time.sleep(5 * (i + 1))
raise RuntimeError("still rate limited after retries")Le SDK lève RateLimitError sur HTTP 429. En cas de surcharge temporaire, l’API envoie Retry-After: 5, donc attendre cinq secondes est la bonne première étape. Pour des erreurs de concurrency répétées, mettez les requêtes en file d’attente de votre côté au lieu de réessayer plus vite.
Plus de guides
Questions fréquemment posées
Une API de chatbot sans filtre est-elle identique à l’API OpenAI ?
Le protocole est le même, donc le SDK OpenAI fonctionne. Le modèle est différent : un modèle à poids ouverts d'un fournisseur indépendant, ajusté pour répondre sans refus de contenu pour une utilisation adulte légale.
Quelle URL de base et quel modèle dois-je utiliser ?
URL de base https://api.chatbotunfiltered.com/v1 et l'ID de modèle uncensored.
Dois-je payer pour l'essayer ?
Non. Le crédit d’essai de $0,50 ne nécessite pas de détails de paiement. Les recharges payantes sont uniquement par crypto.
Puis-je utiliser le streaming des réponses ?
Oui. Définissez stream sur true. Une requête en streaming occupe un slot de concurrence jusqu'à la fin du flux.
Comment consulter mon solde ?
Lisez l'en-tête X-Balance-USD sur n'importe quelle réponse, ou appelez GET /v1/balance.
Obtenez votre clé API instantanément
Inscrivez-vous, copiez votre clé, mettez à jour votre URL de base. La configuration est terminée.