/v1/chat/completions para la generación de texto compatible con OpenAI.
Streaming
Establecestream: true para recibir server-sent events. Cada evento es un
chat.completion.chunk de OpenAI, y el flujo termina con data: [DONE].
Parámetros
Se aceptan los parámetros estándar de OpenAI, incluidostemperature, top_p,
max_tokens, max_completion_tokens, stop, n, frequency_penalty, presence_penalty, seed,
response_format, tools, tool_choice, logprobs, top_logprobs,
logit_bias, user y stream.
Intensidad del razonamiento
Establecereasoning_effort en el nivel superior para modelos con razonamiento configurable. También se acepta reasoning.effort de Responses. Si se indican ambos, deben coincidir; de lo contrario, se devuelve 400.
GET /v1/models, dentro de capability_metadata.reasoning, los niveles que acepta, su valor predeterminado y si el razonamiento se puede desactivar, para que los clientes configuren un modelo sin codificar una tabla fija.
Los límites como max_completion_tokens, max_output_tokens y sus equivalentes nativos incluyen tokens de razonamiento y de respuesta final. effort no es un límite de tokens de salida. El presupuesto puede agotarse (finish_reason: "length" en Chat Completions) y dejar la respuesta final incompleta o vacía.
Compatibilidad con Kimi K3
kimi-k3 usa el mismo endpoint compatible con OpenAI, pero su contrato nativo
tiene reglas propias del modelo:
- K3 siempre razona y no se puede desactivar. Acepta
low,highymax; el valor predeterminado esmax, y cuanto más bajo es el nivel, más profundidad de razonamiento se cambia por latencia. El objetothinkingde K2.x se acepta solo como alias de compatibilidad para activar el razonamiento. - Prefiere
max_completion_tokens. APIAny acepta el obsoletomax_tokensy usamax_completion_tokenspara Kimi K3. Si no indicas un límite, se usa el valor predeterminado del modelo. El máximo explícito es 1,048,576 tokens. - Los ajustes de muestreo de K3 son fijos. APIAny elimina
temperature,top_p,frequency_penaltyypresence_penaltysolo para K3;ndebe ser1. reasoning_contentes la traza de razonamiento ycontentes la respuesta final. En streaming se devuelven como deltas separados. No mezcles la traza de razonamiento con la respuesta final.- Reenvía el mensaje assistant completo, incluidos
reasoning_contentytool_calls, en solicitudes multiturno y de llamada a herramientas. - El último mensaje assistant puede usar
partial: true. Un mensaje system sin contenido puede llevartoolspara cargar dinámicamente las herramientas de K3. - Los bloques de contenido de imagen y vídeo de K3 deben usar una URL
data:en Base64 o un ID de archivoms://. Las URL de medios HTTP públicos se rechazan antes de enviar la solicitud al modelo.
finish_reason es length, el presupuesto de salida se agotó. La respuesta
sigue siendo compatible con OpenAI, pero la respuesta final puede faltar o estar
incompleta; aumenta max_completion_tokens o reduce la entrada antes de reintentar.
Notas
- El
modeles un ID de modelo público de APIAny.AI. - El uso de tokens se normaliza al objeto
usageestilo OpenAI cuando hay datos de uso disponibles.
Salida de GPT-6 y finalización del flujo
Engpt-6-astra, los bloques iniciales de reflexión reconocibles se separan de la respuesta final. Lea content / output_text para la respuesta y los campos de razonamiento o eventos summary para la reflexión. Se conservan los ejemplos explícitos de etiquetas y los casos ambiguos. El formato no cambia el esfuerzo de razonamiento ni los límites de tokens.
Un flujo HTTP 200 no garantiza una generación correcta. Gestione los eventos de error y marque las respuestas parciales como incompletas. En Chat, lea el último usage antes de [DONE]; en Responses, distinga response.completed, response.incomplete y response.failed / error.
En GPT-6 Chat, [DONE] finaliza el flujo, pero no anula un error anterior ni garantiza una respuesta completa. Compruebe también finish_reason: length indica que se alcanzó el límite de salida y content_filter indica contenido filtrado. Ninguno se cambia a stop. Si la conexión se cierra antes de finalizar o se recibe un evento de error, no trate el texto parcial como una respuesta completa.