$59 primer mesPlanes

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 abierta

Step 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 abierta

Step 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 abierta

Step 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 abierta

Punto 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.

Notas y requisitos de los puntos finales de finalización del chat.
ArtículoValorNotas
MétodoPOSTEnvíe JSON al punto final de finalización del chat.
Punto finalhttps://unlimitedcodex.com/v1/chat/completionsUtilice el mismo patrón base URL que otros puntos finales /v1 compatibles con OpenAI.
Autorizaciónficha al portadorUtilice una clave API con chat: alcance de escritura desde código confiable del lado del servidor.
tipo de contenidoaplicación/jsonEl 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.

Campos de solicitud de finalización de chat, estado y notas.
campoEstadoNotas
modeloRecomendadoPase 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.
mensajesRequeridoConjunto de mensajes del sistema, usuario, asistente o herramienta. Incluya sólo el contexto necesario para la tarea.
temperaturaOpcionalUtilice un número del 0 al 2 cuando el flujo de trabajo necesite más o menos variación.
tokens_maxOpcionalLimite la duración de la respuesta cuando la experiencia del usuario o el presupuesto de costos necesiten un límite predecible.
corrienteOpcionalOmí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"
  }
}
Configuración del modo de transmisión, comportamiento y acciones del cliente.
ModoConfiguraciónComportamientoAcción del cliente
Sin transmisiónOmitir secuencia o establecer secuencia: falsoDevuelve 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óncorriente: verdaderoEl 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.

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.

compatible con OpenAI Chat API | unlimitedcodex