FR ▾
Ouvrir un compte

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.

Dernière mise à jour

Avion en papier en verre transportant une bulle de chat depuis une rampe de lancement en forme de clé vers un phare

Points clés

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 openai

Une 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"))
  • temperature et top_p contrôlent la variété. Des valeurs plus élevées donnent un texte plus vif et moins prévisible.
  • seed rend les tests plus faciles à répéter. Il est transmis tel quel, utilisez-le pour comparer les modifications de prompt.
  • max_tokens est 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.

ObjectifParamètrePourquoi
Raconter des histoires avec vivacitétemperature 0,9 à 1,0, top_p 0,95Plus de variété entre les exécutions
Personnage cohérenttemperature 0,6 à 0,7Moins de surprises
Tests répétablesseed fixe, temperature 0Même prompt donne le même type de réponse
Moins de répétitionsPénalité de fréquence ou de présence autour de 0,3Décourage les boucles
Couper une réponse à un marqueurstop avec une chaîneArrê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èmeCause probableCorrection
Erreur d'authentificationClé incorrecte ou videAffichez la longueur de la variable, supprimez les espaces
Non trouvéURL de base manquante /v1Utilisez l'URL de base exacte de cette page
429 rate_limitedPlus de 60 requêtes par minute (essai)Ralentissez ou utilisez une clé complète (300 par minute)
429 avec Retry-After: 5Surcharge temporaireAttendez 5 secondes et réessayez
Réponses étranges ou platesPrompt système faibleAjoutez 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.

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.