Finalizaciones de chat
Envíe solicitudes de chat compatibles con OpenAI con controles claros.
Ejecute flujos de trabajo de chat para asistentes, copilotos y herramientas internas con una forma de solicitud familiar, claves del lado del servidor, seguimiento de uso y comportamiento de reintento seguro.
Última actualización: July 12, 2026. Examples uso safe placeholders y hacer no incluir real clave APIs, secretos, o customer datos.
Ruta predeterminada
Utilice primero solicitudes que no sean de transmisión. Devuelven una respuesta completa de chat.completion y son más fáciles de validar antes de que aumente el tráfico de cara al cliente.
Ruta de implementación
Cuatro pasos de la clave a la respuesta.
Mantenga la primera integración pequeña: autentíquese desde su backend, envíe una matriz de mensajes mínima, analice la respuesta y luego agregue reintentos y manejo de límite de velocidad.
Step 1
Autenticar del lado del servidor
Lea una clave API con alcance de una variable de entorno del lado del servidor y envíela como un token de portador.
Sección abiertaStep 2
Enviar una solicitud de chat
Publique una carga útil compatible con OpenAI con una cadena de modelo y una matriz de mensajes.
Sección abiertaStep 3
Analizar la respuesta
Lea las opciones[0].message.content para el mensaje del asistente y el uso para la contabilidad de solicitudes.
Sección abiertaStep 4
Manejar límites y errores
Vuelva a intentar fallas transitorias con retroceso, pero corrija los errores de autenticación, carga útil, capacidad y funciones no compatibles antes de reenviar.
Sección abiertaPunto final
Publique JSON en la ruta de finalización del chat.
El punto final sigue la ruta /v1 compatible con OpenAI. Envíe solicitudes desde un código confiable del lado del servidor con un token de portador con alcance.
| Artículo | Valor | Notas |
|---|---|---|
| Método | POST | Envíe JSON al punto final de finalización del chat. |
| Punto final | https://unlimitedcodex.com/v1/chat/completions | Utilice el mismo patrón base URL que otros puntos finales /v1 compatibles con OpenAI. |
| Autorización | ficha al portador | Utilice una clave API con chat: alcance de escritura desde código confiable del lado del servidor. |
| tipo de contenido | aplicación/json | El cuerpo de la solicitud debe ser válido JSON. |
Solicitud sin transmisión
Comience con una respuesta completa.
Las solicitudes sin transmisión son la primera ruta más segura porque su cliente recibe el objeto de respuesta completo, el estado, los encabezados y el uso en un solo lugar.
Mantenga la clave API en process.env o en un administrador secreto.
Use una instrucción breve del sistema y un mensaje mínimo del usuario.
Establezca max_tokens cuando la interfaz de usuario o el presupuesto de costos necesiten un límite máximo.
Analice el uso para que el seguimiento de solicitudes, tokens y costos sea preciso.
const response = await fetch("https://unlimitedcodex.com/v1/chat/completions", {
method: "POST",
headers: {
Authorization: `Bearer ${process.env.UCX_API_KEY}`,
"Content-Type": "application/json"
},
body: JSON.stringify({
model: "gpt-5.5",
messages: [
{ role: "system", content: "You write concise operational summaries." },
{ role: "user", content: "Summarize the release checklist in three bullets." }
],
temperature: 0.2,
max_tokens: 180
})
});
const body = await response.json();
if (!response.ok) {
throw new Error(body.error?.code ?? "chat_request_failed");
}
console.log(body.choices[0].message.content);
console.log(body.usage);Forma de solicitud y respuesta
Utilice campos de chat familiares y contabilidad de uso.
La forma requerida es pequeña: una cadena modelo y al menos un mensaje. Los campos opcionales pueden ajustar el comportamiento de salida o la planificación de límites de velocidad.
| campo | Estado | Notas |
|---|---|---|
| modelo | Recomendado | Pase el valor del modelo de destino explícitamente. Utilice gpt-5.5 o los valores de modelo ChatGPT 5.5 Ultra y Codex que figuran en los archivos de configuración entregados. |
| mensajes | Requerido | Conjunto de mensajes del sistema, usuario, asistente o herramienta. Incluya sólo el contexto necesario para la tarea. |
| temperatura | Opcional | Utilice un número del 0 al 2 cuando el flujo de trabajo necesite más o menos variación. |
| tokens_max | Opcional | Limite la duración de la respuesta cuando la experiencia del usuario o el presupuesto de costos necesiten un límite predecible. |
| corriente | Opcional | Omítalo o configúrelo como falso para la ruta admitida actual. Vea el comportamiento de transmisión a continuación antes de establecerlo como verdadero. |
{
"id": "chatcmpl_example",
"object": "chat.completion",
"created": 1783372800,
"model": "gpt-5.5",
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "This is an unlimitedcodex chat completion response. Use the delivered setup files for available ChatGPT 5.5 Ultra and Codex model values."
},
"finish_reason": "stop"
}
],
"usage": {
"inputTokens": 24,
"outputTokens": 32,
"totalTokens": 56
}
}Comportamiento de transmisión
Trate la transmisión como una verificación de capacidad explícita.
No asuma que una solicitud de transmisión se comportará como una solicitud que no es de transmisión. Bifurque el código de respuesta y mantenga una ruta alternativa aprobada por el producto.
{
"error": {
"message": "Streaming responses are not enabled for this endpoint.",
"type": "unsupported_feature",
"code": "streaming_not_enabled"
}
}| Modo | Configuración | Comportamiento | Acción del cliente |
|---|---|---|---|
| Sin transmisión | Omitir secuencia o establecer secuencia: falso | Devuelve un objeto chat.completion completo cuando se acepta la solicitud. | Utilice esto como ruta predeterminada para las primeras integraciones y flujos de trabajo de cara al cliente. |
| Transmisión | corriente: verdadero | El punto final actual devuelve 501 streaming_not_enabled. | Recurra a la no transmisión solo cuando la experiencia del usuario sea aceptable. |
Notas de ruta del modelo
Haga visible la política del modelo antes de que aumente el tráfico.
El campo modelo forma parte del contrato de solicitud y del registro operativo. Manténgalo intencional, luego revise la política antes de lanzar cambios de volumen.
Mantener el modelo explícito
Envíe un valor de modelo en cada solicitud para que los registros de uso, el análisis de uso y la escalada de soporte tengan una señal de política estable.
No asumas un respaldo silencioso
Trate el comportamiento de respaldo del modelo como una decisión de producto configurada. Revise la política antes de cambiar los nombres de los modelos de producción.
Registre sólo identificadores seguros
Capture el punto final, el estado, el modelo, el uso y un prefijo de clave enmascarado. No registre mensajes sin procesar, claves API ni datos de clientes.
Reintentos seguros
Reintente sólo el trabajo que pueda recuperarse.
Los reintentos ayudan con la presión temporal y las fallas del servicio. Pueden amplificar los problemas de capacidad, carga útil y facturación cuando nada cambia.
Reintentar errores transitorios
408, 500, 502, 503, 504 y presión de tasa corta 429
Utilice un retroceso exponencial acotado con fluctuación. Respete el Reintento-Después cuando la respuesta lo incluya.
No reintentar cargas útiles sin cambios
400, 401, 402, 403, 501 y presión de capacidad
Corrija la carga útil, la clave, el estado de facturación, el alcance, la opción no admitida o la capacidad del paquete antes de volver a enviar el mismo trabajo.
Mantener los reintentos invisibles para los secretos
Todas las implementaciones de clientes
Vuelva a intentar la función de solicitud, no una carga útil sin procesar registrada. Redactar encabezados de autorización y contenido del cliente de los diagnósticos.
async function runWithChatRetries(runRequest) {
for (let attempt = 0; attempt < 3; attempt += 1) {
const response = await runRequest();
if (response.ok) {
return response;
}
const body = await response.clone().json().catch(() => ({}));
const code = body.error?.code;
const retryable =
[408, 500, 502, 503, 504].includes(response.status) ||
(response.status === 429 && code === "rate_limit_exceeded");
if (!retryable) {
return response;
}
const retryAfter = Number(response.headers.get("retry-after") ?? 0);
const backoffMs = retryAfter > 0 ? retryAfter * 1000 : 500 * 2 ** attempt;
const jitterMs = Math.floor(Math.random() * 150);
await new Promise((resolve) => setTimeout(resolve, backoffMs + jitterMs));
}
return runRequest();
}Lista de verificación de lanzamiento
Verifique la integración antes de que los usuarios dependan de ella.
Un flujo de trabajo de chat listo para su lanzamiento necesita más que una solicitud exitosa. Confirme claves, límites, errores, registros y comportamiento de respaldo mientras el radio de explosión aún sea pequeño.
Utilice claves independientes para desarrollo, puesta en escena y producción.
Confirme el alcance del chat: escritura y el almacenamiento del entorno del lado del servidor.
Decida si streaming_not_enabled debe bloquearse o retroceder.
Supervise el recuento de solicitudes, los tokens de entrada, los tokens de salida, el estado de la tasa y los códigos de estado.
Redactar mensajes, encabezados de autorización, claves sin procesar y datos de clientes de los registros.
Vincule los errores de la interfaz de usuario con acciones de reintento, soporte o actualización en lugar de texto de error genérico.
FAQ
Preguntas sobre finalización del chat.
¿Es compatible el punto final de finalización de chat OpenAI?
Sí. El punto final utiliza la ruta familiar /v1/chat/completions, autenticación de portador, matriz de mensajes, objeto de respuesta chat.completion, opciones y campos de uso.
¿Debería utilizar el streaming para el tráfico de cara al cliente?
Utilice solicitudes que no sean de transmisión a menos que su integración haya confirmado el soporte de transmisión. El punto final actual devuelve 501 streaming_not_enabled cuando la transmisión es verdadera.
¿Qué debo registrar para la depuración?
Registre el punto final, el estado, el código de error, el modelo, el uso, la marca de tiempo, el entorno y el prefijo de clave enmascarada. No registre API claves, secretos, mensajes completos o datos de clientes sin procesar.
¿Cuándo debería mi cliente volver a intentar una solicitud de chat?
Vuelva a intentar las respuestas transitorias 408, presión de velocidad 429 y 5xx con retroceso limitado. No vuelva a intentar fallas de autenticación, carga útil, facturación, capacidad o funciones no compatibles sin cambios.
Herramientas gratuitas
Crear y validar solicitudes de chat
Genere fragmentos, valide JSON, estime tokens y planifique la migración OpenAI antes de su primera llamada en vivo.
Generador de solicitudes
Cree la finalización del chat JSON visualmente y exporte fragmentos de cURL, JavaScript o Python.
Validador de solicitudes
Valide las cargas útiles de chat, incrustaciones y imágenes JSON con reglas compatibles con unlimitedcodex OpenAI.
Estimador de tokens
Calcule el volumen de tokens a partir del mensaje o el texto de respuesta antes de la planificación y el lanzamiento de cuotas.
Generador de migración
Genere o transforme fragmentos de OpenAI SDK en unlimitedcodex base URL, claves y alcances.
Siguiente paso
Combine la finalización del chat con autenticación, límites y manejo de errores.
Antes del lanzamiento, asegúrese de que las claves tengan alcance, que se comprenda el comportamiento del límite de velocidad y que los reintentos del cliente distingan la presión temporal de las correcciones necesarias.