Prérequis et configuration
Pour utiliser notre proxy API OpenAI, vous avez besoin du SDK officiel pour votre langage et d'une clé API valide. Inscrivez-vous sur le tableau de bord pour recevoir votre clé immédiatement. Aucune carte bancaire n'est nécessaire pour l'essai. Définissez deux variables d'environnement : OPENAI_API_KEY avec votre clé, et OPENAI_BASE_URL pointant vers notre endpoint. Cette approche garantit que votre code existant fonctionne sans modification, agissant comme un proxy LLM transparent pour vos applications.
Notre service utilise l'ID de modèle standard uncensored. En tant que proxy mono-modèle, vous n'avez pas besoin de gérer une logique de routage complexe. L'URL de base est https://api.openaiapiproxy.com/v1. Une fois configuré, votre client traite notre service comme n'importe quel endpoint compatible OpenAI.
Première requête et configuration Python
Commencez par envoyer une requête simple de complétion de chat. Cela confirme votre authentification et votre connectivité. L'exemple suivant utilise un prompt textuel basique pour vérifier le comportement sans censure. Remplacez les valeurs par défaut par vos identifiants réels.
Pour les développeurs Python, la bibliothèque officielle openai gère la complexité. Vous devez simplement pointer le client vers notre URL de base. Le code ci-dessous illustre une requête synchrone standard. Il envoie un prompt et retourne la réponse du modèle. C'est le moyen le plus rapide de vérifier votre intégration.
Assurez-vous que vos variables d'environnement sont chargées avant de créer l'instance du client. Le SDK utilise automatiquement le format standard OpenAI pour les requêtes et les réponses.
Intégration Node.js
Si vous développez avec Node.js, le processus est identique à celui de Python. Utilisez le package npm @ai-sdk/openai ou le package officiel openai. Pointez le client vers notre URL de base et fournissez votre clé API. Le SDK gère la sérialisation JSON et les requêtes HTTP pour vous.
Cette configuration fonctionne avec n'importe quelle bibliothèque cliente compatible OpenAI. Vous pouvez réutiliser vos modèles de prompt et vos structures de messages existants. Le format de réponse correspond au schéma standard OpenAI, ce qui facilite le changement de fournisseur si nécessaire plus tard.
Pensez à gérer les erreurs de manière appropriée. Les problèmes réseau ou les clés invalides renvoient des codes d'erreur HTTP standards. Consultez la documentation de votre version de SDK spécifique pour la gestion détaillée des erreurs.
Réponses en streaming
Pour les applications en temps réel, activez le streaming pour recevoir les tokens au fur et à mesure de leur génération. Cela réduit la latence perçue pour les utilisateurs finaux. Le SDK prend en charge nativement les Server-Sent Events (SSE). Vous itérez sur le flux de réponse pour traiter chaque token.
Le streaming est idéal pour les interfaces de chat où les utilisateurs attendent une réponse immédiate. Le modèle génère du texte en continu et vous pouvez ajouter chaque token à l'interface utilisateur. Cela offre une expérience utilisateur plus fluide par rapport à l'attente de la réponse complète.
L'endpoint de streaming utilise la même URL de base et la même authentification. Vous devez uniquement activer le drapeau stream dans les paramètres de votre requête. Le SDK gère le cycle de vie de la connexion et la récupération des erreurs.
Limites de débit et contraintes
Notre API impose des limites strictes pour garantir la fiabilité. Vous avez droit à 300 requêtes par minute par clé API. La taille maximale du corps de la requête est de 8 Mo. Si vous dépassez la limite de débit, vous recevrez un code d'état 429. Implémentez un backoff exponentiel dans votre client pour gérer ces erreurs de manière appropriée.
Les erreurs d'authentification retournent un code 401 si la clé est invalide ou révoquée. Les problèmes de paiement retournent un code 402 lorsque votre crédit prépayé est épuisé. Les recharges sont disponibles instantanément via les cryptomonnaies (USDT ou USDC). Votre crédit prépayé n'expire jamais, vous pouvez ainsi payer à l'usage.
La fenêtre de contexte est de 100 000 tokens pour l'entrée et la sortie combinées. Planifiez vos prompts en conséquence pour éviter le troncage. Le modèle arrêtera de générer s'il atteint la limite.
Modèles et politique de contenu
Le seul modèle disponible est uncensored, un modèle à poids ouverts optimisé pour le contenu adulte légal et l'écriture créative. Il ne rejette pas par défaut les sujets controversés ou explicites. Cela le rend idéal pour des cas d'usage où les modèles standards pourraient être trop restrictifs.
Nous ne proposons pas d'embeddings, de génération d'images ni de traitement audio. Il s'agit d'une API textuelle uniquement. Le modèle n'est pas GPT, Claude ou tout autre modèle d'un autre fournisseur. Il est spécifiquement optimisé pour notre infrastructure.
Le contenu sexuel impliquant des mineurs est toujours bloqué. Tout autre contenu légal est autorisé. Nous n'utilisons pas vos prompts pour l'entraînement. Vos données restent privées et sont uniquement utilisées pour générer la réponse à votre requête.
cURL
curl https://api.openaiapiproxy.com/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."}]
}'Python
from openai import OpenAI
client = OpenAI(base_url="https://api.openaiapiproxy.com/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)Node.js
import OpenAI from "openai";
const client = new OpenAI({ baseURL: "https://api.openaiapiproxy.com/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);Streaming
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)