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ámetro | Obligatorio | Tipo | Descripción | Ejemplo |
|---|---|---|---|---|
| Content-Type | Sí | string | Identificador de tipo de medio | application/json |
| Accept | Sí | string | Formato de respuesta esperado por el cliente | application/json |
| Authorization | No | string | Token de acceso a la API | Bearer sk-xxxxxx |
3. Cuerpo de la Petición (Request Body)
| Parámetro | Obligatorio | Tipo | Descripción |
|---|---|---|---|
| model | Sí | string | ID del modelo a utilizar (ej. gpt-4o, gpt-3.5-turbo). |
| messages | Sí | array | Lista de mensajes de la conversación. Cada objeto contiene el rol role (system/user/assistant) y el contenido content. |
| tools | Sí | array | Lista de herramientas que el modelo puede invocar. Actualmente solo admite funciones (functions). |
| tool_choice | Sí | object | Controla qué función invoca el modelo. none (ninguna), auto (automático), o especifica una función concreta. |
| temperature | No | number | Temperatura 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_p | No | number | Muestreo de núcleo (nucleus sampling). 0.1 significa que solo se consideran los tokens que componen el 10% de la masa de probabilidad superior. |
| n | No | integer | Por defecto es 1. Número de respuestas generadas por cada mensaje de entrada. |
| stream | No | boolean | Por defecto es false. Si es true, envía tokens de forma incremental como lo hace ChatGPT (streaming). |
| stop | No | string | Secuencia de parada. El modelo dejará de generar tokens cuando encuentre estos caracteres. |
| max_tokens | No | integer | Número máximo de tokens a generar. Por defecto es inf. |
| presence_penalty | No | number | Entre -2.0 y 2.0. Penaliza temas que ya han aparecido, aumentando la probabilidad de hablar sobre nuevos temas. |
| frequency_penalty | No | number | Entre -2.0 y 2.0. Penaliza las palabras o frases repetidas. |
| logit_bias | No | object | Modifica la probabilidad de que aparezcan tokens específicos. |
| user | No | string | Identificador del usuario final, utilizado para detectar abusos. |
| response_format | No | object | Especifica el formato de respuesta. Por ejemplo, { "type": "json_object" } habilita el modo JSON. |
| seen | No | integer | Función en fase de prueba. Especifica una semilla (Seed) para intentar obtener resultados deterministas. |
4. Parámetros de Respuesta (Response Body)
| Parámetro | Tipo | Descripción |
|---|---|---|
| id | string | Identificador único para esta petición. |
| object | string | Tipo de objeto, normalmente chat.completion. |
| created | integer | Marca de tiempo de la creación de la petición (en segundos). |
| choices | array | Lista de opciones de respuesta. |
| ├─ index | integer | Índice de esta opción en la lista. |
| ├─ message | object | El mensaje específico generado por el modelo. |
| │ ├─ role | string | Rol, normalmente assistant. |
| │ └─ content | string | Contenido de texto del mensaje. |
| └─ finish_reason | string | Razón por la cual el modelo dejó de generar (ej. stop, length, tool_calls). |
| usage | object | Información sobre el uso de tokens. |
| ├─ prompt_tokens | integer | Número de tokens consumidos por el prompt (entrada). |
| ├─ completion_tokens | integer | Número de tokens consumidos por el autocompletado (salida). |
| └─ total_tokens | integer | Consumo 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.