Documentación de la API de Finalización de Chat (Chat Completions)
Esta interfaz se utiliza para proporcionar un aviso (Prompt), tras lo cual el modelo devolverá uno o más resultados de finalización predictivos (Completions). Puede generar texto basado en el historial de la conversación y controlar la aleatoriedad, la longitud y el formato del proceso de generación.
- Nombre de la interfaz: Listar modelos / Chat Completions
- Método de solicitud:
GET(Nota: según la definición de datos proporcionada) - URL de solicitud:
https://api.codingplanx.ai/v1/models - Estado: Publicado (Released)
1. Parámetros de Solicitud
1.1 Parámetros de Cabecera (Header)
| Nombre del Parámetro | Obligatorio | Tipo | Valor de Ejemplo | Descripción |
|---|---|---|---|---|
| Content-Type | Sí | String | application/json | Formato del cuerpo de la solicitud de la interfaz |
| Accept | Sí | String | application/json | Formato de respuesta de la interfaz |
| Authorization | No | String | Bearer {{YOUR_API_KEY}} | Clave API utilizada para la autenticación |
1.2 Parámetros del Cuerpo (Body)
Aunque la definición original es GET, según la lógica empresarial, los siguientes parámetros generalmente se pasan a través del Body en formato JSON.
| Nombre del Parámetro | Tipo | Obligatorio | Valor Predeterminado | Descripción |
|---|---|---|---|---|
| model | string | Sí | - | ID del modelo a utilizar. Ejemplo: gpt-3.5-turbo. |
| messages | array | Sí | - | Lista de mensajes que componen la conversación hasta el momento. Cada mensaje contiene un role y content. |
| temperature | number | No | 1 | Temperatura de muestreo, entre 0 y 2. Valores más altos hacen que la salida sea más aleatoria. |
| top_p | number | No | 1 | Muestreo de núcleo (Nucleus sampling). 0.1 significa que solo se consideran los tokens que componen el 10% superior de la masa de probabilidad. |
| n | integer | No | 1 | Cuántas opciones de finalización de chat se generan para cada entrada. |
| stream | boolean | No | false | Si se transmite en flujo (streaming). Cuando se establece en true, se enviarán incrementos parciales de mensajes (SSE). |
| stop | string/array | No | null | Secuencias de parada. El modelo dejará de generar cuando encuentre estos caracteres. |
| max_tokens | integer | No | inf | Número máximo de tokens a generar. |
| presence_penalty | number | No | 0 | Número entre -2.0 y 2.0. Los valores positivos aumentan la probabilidad de que el modelo hable sobre nuevos temas. |
| frequency_penalty | number | No | 0 | Número entre -2.0 y 2.0. Los valores positivos reducen la probabilidad de que el modelo repita las mismas líneas. |
| logit_bias | object | No | null | Modifica la probabilidad de que los tokens especificados aparezcan en la finalización. |
| user | string | No | - | Identificador único que representa al usuario final, ayuda a monitorear el abuso. |
| response_format | object | No | - | Especifica el formato de salida del modelo, como { "type": "json_object" } para habilitar el modo JSON. |
| tools | array | No | - | Lista de herramientas (como funciones) que el modelo puede llamar. |
| tool_choice | object | No | auto | Controla qué función llama el modelo. |
2. Parámetros de Respuesta
| Nombre del Parámetro | Tipo | Descripción |
|---|---|---|
| id | string | Identificador único de la solicitud. |
| object | string | Tipo de objeto, generalmente chat.completion. |
| created | integer | Marca de tiempo (en segundos) de cuando se creó la solicitud. |
| choices | array | Lista que contiene los resultados de la finalización. |
| ├─ index | integer | Índice de esta opción en la lista. |
| ├─ message | object | Mensaje específico generado por el modelo. |
| │ ├─ role | string | Rol, generalmente assistant. |
| │ └─ content | string | Contenido del texto del mensaje. |
| └─ finish_reason | string | Motivo de parada, como stop (parada normal) o length (alcanzó la longitud máxima de tokens). |
| usage | object | Estadísticas de uso de tokens. |
| ├─ prompt_tokens | integer | Número de tokens consumidos por la entrada (prompt). |
| ├─ completion_tokens | integer | Número de tokens generados en la salida. |
| └─ total_tokens | integer | Número total de tokens consumidos. |
3. Ejemplos de Solicitud
Ejemplo de Solicitud Exitosa
curl --location --request GET 'https://api.codingplanx.ai/v1/models' \
--header 'Content-Type: application/json' \
--header 'Accept: application/json' \
--header 'Authorization: Bearer YOUR_API_KEY' \
--data '{
"model": "gpt-3.5-turbo",
"messages": [
{
"role": "user",
"content": "Hello there, how may I assist you today?"
}
],
"temperature": 1,
"top_p": 1,
"n": 1,
"stream": false,
"user": "user-1234"
}'
Ejemplo de Respuesta Exitosa
{
"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
}
}
4. Preguntas Frecuentes (FAQs)
P: ¿Por qué la documentación muestra el método GET, pero parece una solicitud POST?
R: En la especificación estándar de OpenAI, la creación de finalizaciones generalmente usa el método POST. Sin embargo, según los metadatos proporcionados, esta interfaz se define como GET. Asegúrese de confirmar la configuración real del lado del servidor al realizar la llamada. Si GET no funciona, intente usar POST.
P: ¿Cómo debo elegir entre temperature y top_p?
R: Recomendamos ajustar solo uno de ellos. Si desea una respuesta más precisa y determinista, reduzca temperature (por ejemplo, a 0.2); si desea una respuesta más diversa y creativa, puede aumentarla.
P: ¿Cómo habilito el modo JSON?
R: Necesita configurar { "type": "json_object" } en response_format y especificar claramente al modelo (en el mensaje de System o User dentro de messages) que debe generar formato JSON. De lo contrario, el modelo puede producir errores de análisis o devolver espacios en blanco infinitos.
P: ¿Qué son presence_penalty y frequency_penalty?
R:
presence_penalty(Penalización por presencia): Se centra en penalizar los temas que ya han aparecido, fomentando que el modelo hable sobre nuevos tópicos.frequency_penalty(Penalización por frecuencia): Se centra en penalizar el vocabulario que se repite, evitando que el modelo repita las mismas oraciones en un corto período de tiempo.
P: ¿Cómo funciona la salida en flujo (stream: true)?
R: Después de habilitar el flujo (streaming), la API devolverá los datos palabra por palabra a través de Server-Sent Events (SSE). Cada bloque de datos es una cadena JSON que comienza con data: y termina con data: [DONE]. Esto es muy útil para la visualización en tiempo real de la generación de textos largos.