Crear Chat de Generación de Imágenes (Sin Streaming)
Este endpoint de la API se utiliza para enviar un prompt (que contiene texto o imágenes) al modelo, el cual devolverá una o más respuestas generadas. Es especialmente adecuado para modelos que admiten entradas multimodales (como procesamiento de imágenes, embellecimiento y creación a partir del reconocimiento de imágenes), como gpt-4o-image-vip.
Información del Endpoint
- URL del Endpoint:
https://api.codingplanx.ai/v1/chat/completions - Método de solicitud:
POST - Content-Type:
application/json - Tipo de respuesta:
application/json
Encabezados de la solicitud (Headers)
| Parámetro | Requerido | Tipo | Ejemplo | Descripción |
|---|---|---|---|---|
| Content-Type | Sí | String | application/json | Formato del cuerpo de la solicitud |
| Accept | Sí | String | application/json | Formato de respuesta esperado |
| Authorization | No | String | Bearer {{YOUR_API_KEY}} | Clave API para autenticación |
Parámetros del cuerpo (Body)
El cuerpo de la solicitud es un objeto JSON que contiene los siguientes campos:
| Parámetro | Tipo | Requerido | Valor por defecto | Descripción |
|---|---|---|---|---|
| model | String | Sí | - | ID del modelo a utilizar. Ejemplo: gpt-4o-image-vip. |
| messages | Array | Sí | - | Lista de mensajes del chat. Cada objeto contiene un role (user/assistant/system) y content. El content puede ser un string o una matriz de objetos con el tipo y la URL de la imagen. |
| tools | Array | Sí | - | Lista de herramientas que el modelo puede llamar. Actualmente solo admite funciones. |
| tool_choice | Object | Sí | none | Controla qué función llama el modelo. none para no llamar a ninguna, auto para selección automática. |
| temperature | Number | No | 1 | Temperatura de muestreo (0-2). Valores más altos son más aleatorios, valores más bajos son más enfocados. |
| top_p | Number | No | 1 | Muestreo de núcleo (Nucleus sampling). Solo considera los tokens con la masa de probabilidad del top P. Se recomienda ajustar esto o la temperatura, pero no ambos. |
| n | Integer | No | 1 | Cuántas opciones de finalización de chat generar por cada entrada. |
| stream | Boolean | No | false | Si se debe transmitir de forma continua (streaming). Para este endpoint se define como sin streaming (false). |
| max_tokens | Integer | No | inf | Número máximo de tokens a generar. |
| stop | String/Array | No | null | Secuencia de parada. La API dejará de generar más tokens. |
| presence_penalty | Number | No | 0 | Entre -2.0 y 2.0. Penaliza nuevos tokens en función de si ya han aparecido en el texto, aumentando la probabilidad de hablar sobre nuevos temas. |
| frequency_penalty | Number | No | 0 | Entre -2.0 y 2.0. Penaliza los nuevos tokens según su frecuencia existente en el texto. |
| response_format | Object | No | - | Especifica el formato de salida, ej. { "type": "json_object" } para habilitar el modo JSON. |
| user | String | No | - | Identificador único que representa a su usuario final, utilizado para monitorear abusos. |
| seen | Integer | No | - | (Beta) Valor de la semilla (seed) para intentar lograr un muestreo determinista. |
Parámetros de respuesta
| Parámetro | Tipo | Descripción |
|---|---|---|
| id | String | Identificador único de la solicitud. |
| object | String | Tipo de objeto, fijo como chat.completion. |
| created | Integer | Marca de tiempo Unix (en segundos). |
| choices | Array | Matriz que contiene las opciones de respuesta generadas. |
| └ index | Integer | Índice de la opción. |
| └ message | Object | Objeto de mensaje que contiene role y content. |
| └ finish_reason | String | Razón de parada (ej. stop, length). |
| usage | Object | Estadísticas de uso de tokens. |
| └ prompt_tokens | Integer | Número de tokens consumidos por el prompt. |
| └ completion_tokens | Integer | Número de tokens consumidos por la generación de respuesta. |
| └ total_tokens | Integer | Consumo total de tokens. |
Ejemplos
Ejemplo de Solicitud (Embellecimiento/Creación de Imágenes)
{
"model": "gpt-4o-image-vip",
"messages": [
{
"role": "user",
"content": [
{"type": "text", "text": "Embellece esta imagen, añade las palabras 'Amo a China' y ajusta la proporción a [4:3]"},
{
"type": "image_url",
"image_url": {
"url": "https://lsky.zhongzhuan.chat/i/2024/10/17/6711068a14527.png"
}
}
]
}
],
"tools": [],
"tool_choice": "none"
}
Ejemplo de Respuesta
{
"id": "chatcmpl-123",
"object": "chat.completion",
"created": 1677652288,
"choices": [
{
"index": 0,
"message": {
"role": "assistant",
"content": "Entendido, he procesado la imagen para ti. Puedes ver el resultado generado a continuación: [Enlace/Descripción de la imagen]"
},
"finish_reason": "stop"
}
],
"usage": {
"prompt_tokens": 9,
"completion_tokens": 12,
"total_tokens": 21
}
}
FAQs (Preguntas Frecuentes)
P: ¿Por qué falla la solicitud al usar response_format: { "type": "json_object" }?
R: Al usar el modo JSON, debes indicarle explícitamente al modelo en messages que genere un JSON (por ejemplo, añadiendo "Por favor, responde en formato JSON" en el prompt del sistema). De lo contrario, el modelo puede entrar en un bucle infinito o generar un error por emitir contenido que no es JSON.
P: ¿Cómo asegurar que los resultados generados sean consistentes en cada solicitud?
R: Aunque los modelos de IA son inherentemente estocásticos, puedes intentar configurar el parámetro seen (semilla/seed) y mantener la temperature en 0, mientras observas el campo system_fingerprint en la respuesta para monitorear si el entorno del backend ha cambiado.
P: ¿Cuál es un valor adecuado para max_tokens?
R: Esto depende de tu caso de uso. Para descripciones de imágenes breves, un valor de 100-300 es suficiente; si necesitas análisis detallados o creación de textos largos, se recomienda establecerlo por encima de 1000. Ten en cuenta que la suma de los tokens de entrada (incluidas las imágenes) y los tokens de salida no debe superar el límite de contexto del modelo.
P: ¿Cómo manejo la entrada de imágenes?
R: En el campo content de messages, utiliza type: "image_url". Actualmente, se recomienda utilizar enlaces de imágenes HTTPS que sean de acceso público en Internet.
P: ¿Son obligatorios tools y tool_choice?
R: Según la definición de este endpoint de la API, ambos campos están marcados como requeridos. Si no necesitas llamar a una herramienta específica, configura tools como un array vacío [] y tool_choice como "none".