Prerrequisitos y configuración
Para usar nuestro proxy de API de OpenAI, necesitas el SDK oficial para tu lenguaje y una clave de API válida. Inicia sesión en el panel para recibir tu clave de inmediato. No necesitas tarjeta de crédito para la prueba. Configura dos variables de entorno: OPENAI_API_KEY con tu clave, y OPENAI_BASE_URL apuntando a nuestro endpoint. Este enfoque garantiza que tu código existente funcione sin modificaciones, actuando como un proxy LLM transparente para tus aplicaciones.
Nuestro servicio utiliza el ID de modelo estándar uncensored. Como somos un proxy de modelo único, no necesitas gestionar lógica de enrutamiento compleja. La URL base es https://api.openaiapiproxy.com/v1. Una vez configurado, tu cliente trata nuestro servicio exactamente como cualquier otro endpoint compatible con OpenAI.
Primera petición y configuración de Python
Comienza enviando una petición simple de finalización de chat. Esto confirma tu autenticación y conectividad. El siguiente ejemplo usa un prompt de texto básico para verificar el comportamiento sin censura. Reemplaza los valores de marcador con tus credenciales reales.
Para desarrolladores de Python, la biblioteca oficial openai maneja la complejidad. Simplemente apunta el cliente a nuestra URL base. El siguiente código demuestra una solicitud síncrona estándar. Envía un prompt y devuelve la respuesta del modelo. Esta es la forma más rápida de verificar tu integración.
Asegúrate de que tus variables de entorno estén cargadas antes de crear la instancia del cliente. El SDK usa automáticamente el formato estándar de OpenAI para peticiones y respuestas.
Integración con Node.js
Si estás construyendo con Node.js, el proceso es idéntico al de Python. Usa el paquete npm @ai-sdk/openai o el paquete npm oficial openai. Apunta el cliente a nuestra URL base y proporciona tu clave de API. El SDK maneja la serialización JSON y las solicitudes HTTP por ti.
Esta configuración funciona con cualquier biblioteca de cliente compatible con OpenAI. Puedes reutilizar tus plantillas de prompt y estructuras de mensajes existentes. El formato de respuesta coincide con el esquema estándar de OpenAI, lo que facilita cambiar entre proveedores si es necesario más adelante.
Recuerda manejar los errores de forma elegante. Los problemas de red o las claves inválidas devolverán códigos de error HTTP estándar. Consulta la documentación de tu versión específica de SDK para el manejo detallado de errores.
Respuestas de streaming
Para aplicaciones en tiempo real, habilita el streaming para recibir tokens a medida que se generan. Esto reduce la latencia percibida para los usuarios finales. El SDK admite Server-Sent Events (SSE) de forma nativa. Iteras sobre el flujo de respuesta para procesar cada token.
El streaming es ideal para interfaces de chat donde los usuarios esperan retroalimentación inmediata. El modelo genera texto continuamente y puedes agregar cada token a la interfaz de usuario. Esto proporciona una experiencia de usuario más fluida en comparación con esperar la respuesta completa.
El endpoint de streaming usa la misma URL base y autenticación. Solo necesitas habilitar la bandera de stream en los parámetros de tu petición. El SDK maneja el ciclo de vida de la conexión y la recuperación de errores.
Límites de peticiones y restricciones
Nuestra API aplica límites estrictos para garantizar la fiabilidad. Tienes derecho a 300 peticiones por minuto por clave de API. El tamaño máximo del cuerpo de la petición es de 8 MB. Si excedes el límite de peticiones, recibirás un código de estado 429. Implementa retroceso exponencial en tu cliente para manejar estos errores de forma elegante.
Los errores de autenticación devuelven un estado 401 si la clave no es válida o está revocada. Los problemas de pago devuelven un estado 402 cuando se agota tu crédito prepago. Las recargas están disponibles al instante mediante criptomonedas (USDT o USDC). Tu crédito prepago no caduca, así que puedes pagar por uso.
La ventana de contexto es de 100.000 tokens para la entrada y la salida combinadas. Planifica tus prompts en consecuencia para evitar truncamientos. El modelo dejará de generar si alcanza el límite.
Modelos y política de contenido
El único modelo disponible es uncensored, un modelo de pesos abiertos optimizado para contenido adulto lícito y escritura creativa. No rechaza temas controvertidos o explícitos por defecto. Esto lo hace ideal para casos de uso donde los modelos estándar podrían ser demasiado restrictivos.
No ofrecemos incrustaciones, generación de imágenes ni procesamiento de audio. Esta es una API solo de texto. El modelo no es GPT, Claude ni ningún otro modelo de proveedor. Está ajustado específicamente para nuestra infraestructura.
El contenido sexual que involucra a menores siempre está bloqueado. Todo lo demás lícito está permitido. No usamos tus prompts para entrenamiento. Tus datos permanecen privados y solo se usan para generar la respuesta para tu petición.
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)