FR ▾

Commencez avec le crédit d'essai

E-mail et mot de passe, la clé s'affiche tout de suite à l'écran.

https://api.uncensoredllmhub.com/v1

Uncensored LLM Hub : un seul endpoint pour le chat et les agents

Uncensored LLM Hub est une API textuelle hébergée, compatible OpenAI, avec un seul modèle et une seule URL de base. Cette page présente une configuration pratique pour une application de chat et un agent basés dessus.

Mis à jour le

Hub lumineux centralisé connecté par des flux lumineux à une fenêtre de chat, un agent et des documents

Points clés

  • Une seule URL de base et un seul ID de modèle, uncensored, fonctionnent avec n'importe quel SDK ou client OpenAI.
  • Le streaming, l'appel de fonctions et le mode JSON sont pris en charge, avec une fenêtre de contexte de 100 000 tokens.
  • Une clé complète permet 8 requêtes simultanées et 300 par minute, donc planifiez une petite file d’attente pour les applications chargées.
  • La facturation est de 0,15 $ par 1 M de tokens d’entrée et de 0,50 $ par 1 M de tokens de sortie, prélevés sur le crédit prépayé, et les prompts ne sont pas utilisés pour l’entraînement.

Ce que vous obtenez depuis un seul endpoint

Les gens recherchent Uncensored LLM Hub lorsqu’ils veulent un modèle qui répond sans refus de contenu pour un usage adulte légal, mais ne veulent pas faire tourner des GPU. Le service est une API HTTPS simple. Vous pointez un client OpenAI vers https://api.uncensoredllmhub.com/v1, envoyez l’ID de modèle uncensored, et vous authentifiez avec Authorization: Bearer YOUR_KEY. Deux méthodes existent : POST /v1/chat/completions pour les conversations et GET /v1/models pour la liste des modèles.

Il est utile de savoir ce qui se cache derrière ce point de terminaison. Il s’agit d’un seul modèle à poids ouverts, hébergé par un fournisseur indépendant et ajusté pour contourner les refus de contenu. Ce n’est pas l’API officielle d’un grand fournisseur, ni un routeur qui sélectionne parmi plusieurs modèles. Il ne gère que du texte : pas d’images, d’audio, de vidéo, d’embeddings ni de fine-tuning. Une règle stricte s’applique sans exception : aucun contenu sexuel impliquant des mineurs.

Ce périmètre restreint est l'objectif. Un endpoint stable unique est facile à intégrer. Les sections ci-dessous montrent un petit backend de chat, puis une boucle d'agent, puis les limites à prendre en compte pour la conception.

Étape 1 : connecter un client existant

Comme l’API suit le format OpenAI, vous écrivez rarement du code client. Ouvrez votre SDK ou votre outil, modifiez l’URL de base et la clé, et définissez le modèle sur uncensored. Inscrivez-vous d’abord sur la page clé API (Google, ou e-mail et mot de passe), puis réclamez le crédit d’essai gratuit de 0,50 $ en un clic. L’essai ne nécessite pas de carte, dure 7 jours et est limité à un par personne.

Une requête minimale en Python :

from openai import OpenAI

client = OpenAI(
    base_url="https://api.uncensoredllmhub.com/v1",
    api_key="YOUR_API_KEY",
)

resp = client.chat.completions.create(
    model="uncensored",
    messages=[
        {"role": "system", "content": "You are a concise assistant for a writing tool."},
        {"role": "user", "content": "Give me three opening lines for a mystery set on a ferry."},
    ],
    temperature=0.9,
    top_p=0.95,
)
print(resp.choices[0].message.content)

Les paramètres d’échantillonnage tels que temperature, top_p, stop, seed et les pénalités de fréquence et de présence sont transmis au modèle, de sorte que les contrôles que vous connaissez chez d’autres fournisseurs se comportent de la même manière. La même requête fonctionne dans les outils qui acceptent un endpoint compatible OpenAI personnalisé, par exemple SillyTavern ou Open WebUI : collez l’URL de base, ajoutez la clé, tapez l’ID du modèle à la main.

Étape 2 : diffuser les réponses dans une interface de chat

Les applications de chat semblent lentes si l'utilisateur regarde une boîte vide jusqu'à ce que la réponse complète arrive. Le streaming résout ce problème. Définissez stream: true et l'API envoie la réponse sous forme d'événements envoyés par le serveur, avec l'utilisation signalée à la fin du flux. Voici une version Node qui transmet les tokens à leur arrivée :

import OpenAI from "openai";

const client = new OpenAI({
  baseURL: "https://api.uncensoredllmhub.com/v1",
  apiKey: process.env.API_KEY,
});

export async function streamReply(history, onToken, signal) {
  const stream = await client.chat.completions.create(
    { model: "uncensored", messages: history, stream: true },
    { signal }
  );
  let text = "";
  for await (const chunk of stream) {
    const piece = chunk.choices[0]?.delta?.content ?? "";
    if (piece) {
      text += piece;
      onToken(piece);
    }
  }
  return text;
}

Deux habitudes évitent des problèmes plus tard. D’abord, transmettez toujours un signal d’annulation et annulez-le lorsque l’utilisateur ferme l’onglet ou appuie sur stop. Une requête en streaming occupe son créneau de concurrence jusqu’à la fin du flux, donc les flux abandonnés grèvent votre quota. Ensuite, conservez le texte complet que vous avez assemblé, car vous l’ajouterez à l’historique en tant que message de l’assistant pour le prochain tour.

Si vous voyez des erreurs vagues dans votre interface utilisateur lors du streaming, notre note sur le diagnostic des échecs de streaming couvre les causes habituelles, telles qu’une URL de base incorrecte, un proxy qui met en buffer les événements et les deux codes 429.

Étape 3 : utiliser le long contexte délibérément

La fenêtre de contexte est de 100 000 tokens, partagée entre le prompt et la complétion. Pour un outil d’écriture de récits, un chat de personnage ou un assistant de documents, cela laisse de la place pour un long historique, un prompt système volumineux et du matériel de référence en même temps. Vous n’avez pas besoin de définir max_tokens ; la complétion peut utiliser tout ce qui reste.

Le long contexte est peu coûteux à essayer à ces prix. Remplir entièrement la fenêtre avec de l'entrée coûte 0,1 × 0,15 $ = 0,015 $ pour 100 000 tokens d'entrée. Ajoutez une réponse de 2 000 tokens (0,002 × 0,50 $ = 0,001 $) et un appel presque complet coûte 0,016 $. Vous voudrez toujours gérer la fenêtre, pour trois raisons : la latence augmente avec la taille du prompt, chaque tour renvoie l'historique donc les coûts s'accumulent sur une session, et les historiques très longs diluent les instructions en haut.

Une politique simple fonctionne bien :

  1. Gardez le prompt système et tout texte de référence fixe au début.
  2. Conservez les tours les plus récents tels quels.
  3. Lorsque l'historique dépasse un seuil que vous choisissez, par exemple 60 000 tokens, demandez au modèle de résumer la partie la plus ancienne en une note courte et remplacez ces tours par celle-ci.
  4. Lisez usage.prompt_tokens depuis chaque réponse pour savoir quelle sera la taille de la prochaine requête, au lieu d'estimer par caractères.

Étape 4 : outils et sortie structurée pour les agents

Les agents ont besoin de deux choses d’un modèle : un moyen d’appeler des fonctions, et une sortie que vous pouvez analyser. Les deux sont pris en charge. L’appel d’outils utilise les paramètres standards tools et tool_choice, les appels d’outils peuvent être diffusés en streaming, et les résultats reviennent sous forme de messages avec role: "tool". Un aller-retour unique ressemble à ceci :

import json
from openai import OpenAI

client = OpenAI(
    base_url="https://api.uncensoredllmhub.com/v1",
    api_key="YOUR_API_KEY",
)

tools = [{
    "type": "function",
    "function": {
        "name": "lookup_order",
        "description": "Find an order by its number.",
        "parameters": {
            "type": "object",
            "properties": {"order_id": {"type": "string"}},
            "required": ["order_id"],
        },
    },
}]

messages = [{"role": "user", "content": "Where is order A-1042?"}]
first = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
msg = first.choices[0].message

if msg.tool_calls:
    call = msg.tool_calls[0]
    args = json.loads(call.function.arguments)
    result = {"order_id": args["order_id"], "status": "shipped"}  # your real lookup goes here
    messages.append(msg)
    messages.append({"role": "tool", "tool_call_id": call.id, "content": json.dumps(result)})
    final = client.chat.completions.create(model="uncensored", messages=messages, tools=tools)
    print(final.choices[0].message.content)

Validez toujours les arguments avant d'exécuter quoi que ce soit ayant des effets secondaires. Un modèle peut produire une valeur malformée ou inattendue, et votre code est la dernière ligne de défense.

Pour une sortie structurée simple sans outils, utilisez le mode JSON avec response_format défini sur {"type": "json_object"}. Décrivez la forme souhaitée dans le prompt, et analysez la réponse dans un bloc try afin qu’une réponse incorrecte déclenche un réessai plutôt qu’un crash.

curl https://api.uncensoredllmhub.com/v1/chat/completions   -H "Authorization: Bearer $API_KEY"   -H "Content-Type: application/json"   -d '{
    "model": "uncensored",
    "response_format": {"type": "json_object"},
    "messages": [
      {"role": "system", "content": "Reply with JSON: {"title": string, "tags": [string]}"},
      {"role": "user", "content": "Describe a noir story set in a rainy port city."}
    ]
  }'

Limites à prendre en compte dans la conception

Une clé complète permet 8 requêtes simultanées et 300 requêtes par minute. Une clé d’essai permet 2 et 60. Le corps peut faire jusqu’à 8 MB. Chaque réponse inclut X-Request-Id, X-Balance-USD, X-RateLimit-Limit-Requests et X-RateLimit-Limit-Concurrency, utiles pour les logs.

Lorsque vous dépassez une limite, l’API renvoie un HTTP 429. Le code est rate_limited pour trop de requêtes par minute et concurrency pour trop de requêtes à la fois. Une surcharge temporaire renvoie également un 429, avec Retry-After: 5. Pour une application multi-utilisateurs, placez une petite file d’attente devant l’API : un sémaphore dimensionné en dessous de la limite de concurrence et un réessai qui respecte Retry-After. Pour un agent qui effectue des appels d’outils en parallèle, limitez le fan-out au même nombre.

La liste complète des paramètres et le format d'erreur sont dans la documentation de l'API.

Coût, recharges et traitement des données

La tarification est de 0,15 $ par 1 M de tokens d’entrée et de 0,50 $ par 1 M de tokens de sortie, prélevés sur le crédit prépayé. Il n’y a pas d’abonnement, le crédit n’expire jamais, et les requêtes échouées ou refusées ne sont pas facturées. Un tour de chat de 1 500 tokens d’entrée et 500 tokens de sortie coûte 0,0015 × 0,15 $ + 0,0005 × 0,50 $ = 0,000225 $ + 0,00025 $ = 0,000475 $, donc 20 $ de crédit couvrent environ 42 000 tours de ce type.

Vous pouvez recharger n'importe quel montant entier de 20 $ à 500 $. Le bonus est de +5 % à partir de 50 $, +10 % à partir de 100 $ et +15 % à partir de 200 $. Payez par carte (Visa, Mastercard, Apple Pay, Google Pay) ou crypto (USDT sur TRC20, USDC sur Base). La page tarification présente le tableau actuel.

Concernant les données : les prompts ne sont pas utilisés pour l'entraînement. Lisez la politique de confidentialité pour le libellé complet. Vous restez responsable de ce que vous construisez avec le modèle, et le service est destiné à un usage adulte légal uniquement.

Questions et réponses

Quel ID de modèle utiliser ?

Utilisez uncensored comme ID de modèle dans chaque requête. Définissez l'URL de base sur https://api.uncensoredllmhub.com/v1 et envoyez votre clé en tant que jeton Bearer.

Est-ce compatible avec mon code OpenAI existant ?

Oui. Tout SDK ou client OpenAI fonctionne une fois que vous avez modifié l'URL de base et la clé. Les complétions de chat, le streaming, l'appel de fonctions et le mode JSON sont pris en charge.

Peut-il générer des images ou des embeddings ?

Non. Il s'agit d'une API textuelle uniquement, sans génération d'images, d'audio ou de vidéo, sans embeddings et sans fine-tuning.

Quelle est la taille maximale d'une conversation ?

La fenêtre de contexte est de 100 000 tokens, partagée par le prompt et la réponse. Le corps de la requête peut faire jusqu'à 8 Mo.

Votre clé est à un formulaire de vous

Créez un compte, copiez la clé, modifiez l'URL de base. C'est toute la configuration.

Obtenir une clé API

https://api.uncensoredllmhub.com/v1