¡Invita a amigos y gana tokens gratuitos!Saber más

Documentación de la API de Chat Completions

Esta API se utiliza para, dada una serie de mensajes de conversación, hacer que el modelo devuelva uno o más resultados de autocompletado previstos. Soporta salida en streaming (streaming), llamada a herramientas (Function Calling) y ajuste de múltiples parámetros de muestreo.

1. Información del Endpoint

  • Nombre de la API: Prueba N Oficial
  • Método HTTP: POST
  • URL del Endpoint: https://api.codingplanx.ai/v1/chat/completions
  • Content-Type: application/json
  • Autenticación: Bearer {{YOUR_API_KEY}}

2. Encabezados de Petición (Headers)

ParámetroObligatorioTipoDescripciónEjemplo
Content-TypeSístringIdentificador de tipo de medioapplication/json
AcceptSístringFormato de respuesta esperado por el clienteapplication/json
AuthorizationNostringToken de acceso a la APIBearer sk-xxxxxx

3. Cuerpo de la Petición (Request Body)

ParámetroObligatorioTipoDescripción
modelSístringID del modelo a utilizar (ej. gpt-4o, gpt-3.5-turbo).
messagesSíarrayLista de mensajes de la conversación. Cada objeto contiene el rol role (system/user/assistant) y el contenido content.
toolsSíarrayLista de herramientas que el modelo puede invocar. Actualmente solo admite funciones (functions).
tool_choiceSíobjectControla qué función invoca el modelo. none (ninguna), auto (automático), o especifica una función concreta.
temperatureNonumberTemperatura de muestreo (0-2). Valores altos aumentan la aleatoriedad, valores bajos la hacen más determinista. Se recomienda modificar este parámetro o top_p, pero no ambos.
top_pNonumberMuestreo de núcleo (nucleus sampling). 0.1 significa que solo se consideran los tokens que componen el 10% de la masa de probabilidad superior.
nNointegerPor defecto es 1. Número de respuestas generadas por cada mensaje de entrada.
streamNobooleanPor defecto es false. Si es true, envía tokens de forma incremental como lo hace ChatGPT (streaming).
stopNostringSecuencia de parada. El modelo dejará de generar tokens cuando encuentre estos caracteres.
max_tokensNointegerNúmero máximo de tokens a generar. Por defecto es inf.
presence_penaltyNonumberEntre -2.0 y 2.0. Penaliza temas que ya han aparecido, aumentando la probabilidad de hablar sobre nuevos temas.
frequency_penaltyNonumberEntre -2.0 y 2.0. Penaliza las palabras o frases repetidas.
logit_biasNoobjectModifica la probabilidad de que aparezcan tokens específicos.
userNostringIdentificador del usuario final, utilizado para detectar abusos.
response_formatNoobjectEspecifica el formato de respuesta. Por ejemplo, { "type": "json_object" } habilita el modo JSON.
seenNointegerFunción en fase de prueba. Especifica una semilla (Seed) para intentar obtener resultados deterministas.

4. Parámetros de Respuesta (Response Body)

ParámetroTipoDescripción
idstringIdentificador único para esta petición.
objectstringTipo de objeto, normalmente chat.completion.
createdintegerMarca de tiempo de la creación de la petición (en segundos).
choicesarrayLista de opciones de respuesta.
├─ indexintegerÍndice de esta opción en la lista.
├─ messageobjectEl mensaje específico generado por el modelo.
│ ├─ rolestringRol, normalmente assistant.
│ └─ contentstringContenido de texto del mensaje.
└─ finish_reasonstringRazón por la cual el modelo dejó de generar (ej. stop, length, tool_calls).
usageobjectInformación sobre el uso de tokens.
├─ prompt_tokensintegerNúmero de tokens consumidos por el prompt (entrada).
├─ completion_tokensintegerNúmero de tokens consumidos por el autocompletado (salida).
└─ total_tokensintegerConsumo total de tokens.

5. Ejemplos (Examples)

Ejemplo de Petición

{
    "model": "gpt-4o",
    "messages": [
        {
            "role": "user",
            "content": "who are u?"
        }
    ],
    "n": 1,
    "max_tokens": 100,
    "temperature": 0.8,
    "stream": false
}

Ejemplo de Respuesta

{
    "id": "chatcmpl-123",
    "object": "chat.completion",
    "created": 1677652288,
    "choices": [
        {
            "index": 0,
            "message": {
                "role": "assistant",
                "content": "\r
\r
Hello there, how may I assist you today?"
            },
            "finish_reason": "stop"
        }
    ],
    "usage": {
        "prompt_tokens": 9,
        "completion_tokens": 12,
        "total_tokens": 21
    }
}

6. Preguntas Frecuentes (FAQs)

Q: ¿Por qué obtengo un error al configurar response_format: { "type": "json_object" }? A: Al usar el modo JSON, debes indicarle explícitamente al modelo a través de los mensajes del sistema o del usuario en messages que genere un JSON (por ejemplo: "Por favor, responde en formato JSON"). De lo contrario, el modelo podría atascarse o devolver un error al no poder generar un JSON válido.

Q: ¿Se pueden ajustar temperature y top_p al mismo tiempo? A: Técnicamente sí, pero la recomendación oficial suele ser modificar solo uno de ellos. Ajustar uno u otro suele ser suficiente para cambiar la aleatoriedad de la salida; ajustar ambos simultáneamente puede generar resultados difíciles de predecir.

Q: ¿Cómo recibo los datos cuando configuro stream: true? A: Al activar la transmisión en streaming, el servidor enviará una serie de eventos Server-Sent Events (SSE). La porción de datos de cada evento es un objeto JSON, y la transmisión finalizará con data: [DONE]. Necesitas utilizar una biblioteca de análisis de streaming (como response.iter_lines() en Python) para procesar los datos línea por línea.

Q: ¿Cómo se calcula el consumo de Tokens? A: Para el idioma inglés, 1 Token equivale aproximadamente a 4 caracteres o 0.75 palabras; para caracteres chinos, 1 carácter puede corresponder a 1-2 Tokens. El consumo final oficial es el que se indica en el campo usage del cuerpo de la respuesta.

Q: ¿Qué significa que aparezca finish_reason: "length"? A: Esto indica que el contenido generado superó el límite que estableciste en el parámetro max_tokens, o que alcanzó el límite de longitud máxima de contexto del modelo, lo que provocó que el contenido se truncara (se cortara).

Q: ¿La API soporta llamadas a funciones (Function Calling)? A: Sí. Al definir el prototipo de la función mediante el parámetro tools, el modelo evaluará la necesidad y devolverá tool_calls dentro de choices[0].message en lugar del campo content habitual.