Skip to contents

English version: vignette("errors-and-limits", package = "ellmercodex").

El uso del plan de ChatGPT no es lo mismo que la API de OpenAI: es una vista previa con sus propios límites, y algunas funciones de la API no están disponibles. Este artículo enumera lo que no está soportado y muestra cómo manejar errores en código que corre sin supervisión, como scripts programados o apps de Shiny.

Qué no está soportado

ellmercodex soporta el uso interactivo de una conversación a la vez mediante el objeto Chat de ellmer (ellmer 0.5.0 o posterior). Esto no está soportado:

  • parallel_chat() y batch_chat(). El uso del plan de ChatGPT solo funciona con streaming, así que las funciones de ellmer para trabajo en paralelo y por lotes quedan fuera del alcance soportado.
  • Argumentos excluidos. La vista previa rechaza temperature, top_p, max_tokens (max_output_tokens), metadata y previous_response_id, entre otros. ellmercodex falla antes de enviar una solicitud que los use.
  • Conteo de tokens del proveedor y gestión de archivos. Fallan antes de enviar cualquier solicitud.

Los límites del plan y las funciones soportadas pueden cambiar mientras dure la vista previa.

Maneja los errores

ellmercodex emite condiciones estructuradas, así que tu código puede reaccionar según el tipo de error sin analizar los mensajes:

tryCatch(
  chat$chat("Hola"),
  codex_auth_error = function(error) {
    message("Falló la autenticación; vuelve a ejecutar codex_login().")
  },
  codex_usage_limit_error = function(error) {
    message("Se alcanzó el límite de uso del plan de ChatGPT; prueba más tarde.")
  },
  codex_network_error = function(error) {
    message("Error de red; revisa tu conexión y vuelve a intentar.")
  },
  codex_protocol_changed_error = function(error) {
    message("Puede que el protocolo haya cambiado; actualiza ellmercodex.")
  },
  error = function(error) {
    message("La solicitud falló: ", conditionMessage(error))
  }
)

Maneja primero la condición más específica. Las clases principales son:

  • codex_auth_error: la clase padre de todos los errores de inicio de sesión y credenciales, como credenciales ausentes, mal formadas o vencidas.
  • Errores al comunicarse con el servicio: codex_network_error, codex_authentication_error, codex_rate_limit_error, codex_server_error, codex_model_unavailable_error, codex_malformed_request_error, codex_protocol_error y codex_protocol_changed_error, que indica que la forma de la respuesta del servicio puede haber cambiado.
  • Errores del plan de ChatGPT, que también llevan una de las clases anteriores: codex_usage_limit_error (se alcanzó el límite de uso del plan; también es una codex_rate_limit_error), codex_usage_unavailable_error (el uso del plan no está disponible temporalmente; también es una codex_server_error) y codex_plan_ineligible_error (la cuenta o el espacio de trabajo no es elegible; también es una codex_authentication_error).
  • codex_chat_error y codex_chat_argument_error: problemas del lado de ellmer, como un argumento no soportado.

La lista completa está en ?ellmercodex-conditions (en inglés).

Qué contienen los mensajes de error

Los mensajes se depuran antes de emitirse. No incluyen a propósito cuerpos de respuesta sin procesar, bearer tokens, códigos de autorización, el estado de OAuth, identificadores de cuenta ni el contenido del almacén de credenciales, así que puedes registrarlos sin riesgo.