> ## Documentation Index
> Fetch the complete documentation index at: https://docs.jiekou.ai/llms.txt
> Use this file to discover all available pages before exploring further.

# Crear solicitud de conversación de chat

Genera una respuesta del modelo según la conversación de chat especificada

## Encabezados de la solicitud

<ParamField header="Content-Type" type="string" required={true}>
  Valores de enumeración: `application/json`
</ParamField>

<ParamField header="Authorization" type="string" required={true}>
  Formato de autenticación Bearer: Bearer \{\{API Key}}.
</ParamField>

## Cuerpo de la solicitud

<ParamField body="model" type="string" required={true}>
  Nombre del modelo que se utilizará.
</ParamField>

<ParamField body="messages" type="object[]" required={true}>
  Lista de mensajes que componen la conversación actual.

  <Expandable title="Propiedades" defaultOpen={false}>
    <ParamField body="content" type="string | object[] | null" required={true}>
      Contenido del mensaje. Todos los mensajes requieren content; para los mensajes de assistant que contienen llamadas a funciones, content puede ser null.

      Puede usar los siguientes parámetros según las distintas modalidades.

      <Frame>
        <div class="param_frame">
          <Tabs>
            <Tab title="Contenido de texto">
              <p class="param_text">Opción 1:</p>
              <p class="param_text">Puede usar el tipo string para representar el contenido de texto del mensaje.</p>

              <br />

              <p class="param_text">Opción 2:</p>
              <p class="param_text">Use un array de partes de contenido, object\[]. Los campos detallados son los siguientes:</p>

              <ParamField body="type" type="string" required={true}>
                Tipo de la parte de contenido; en este caso, `text`.
              </ParamField>

              <ParamField body="text" type="string" required={true}>
                Contenido de texto.
              </ParamField>
            </Tab>

            <Tab title="Contenido de imagen">
              <p class="param_text">Solo se puede usar con modelos de lenguaje visual.</p>
              <p class="param_text">Array de partes de contenido, object\[]. Los campos detallados son los siguientes:</p>

              <ParamField body="type" type="string" required={true}>
                Tipo de la parte de contenido; en este caso, `image_url`.
              </ParamField>

              <ParamField body="image_url" type="string" required={true}>
                <Expandable title="Propiedades" defaultOpen={true}>
                  <ParamField body="url" type="string" required={true}>
                    URL de la imagen o datos de imagen codificados en base64 (los modelos de la serie claude solo admiten datos de imagen codificados en base64).
                  </ParamField>
                </Expandable>
              </ParamField>
            </Tab>

            <Tab title="Contenido de video">
              <p class="param_text">Solo se puede usar con modelos que admiten video.</p>
              <p class="param_text">Array de partes de contenido, object\[]. Los campos detallados son los siguientes:</p>

              <ParamField body="type" type="string" required={true}>
                Tipo de la parte de contenido; en este caso, `video_url`.
              </ParamField>

              <ParamField body="video_url" type="string" required={true}>
                <Expandable title="Propiedades" defaultOpen={true}>
                  <ParamField body="url" type="string" required={true}>
                    URL del video.
                  </ParamField>
                </Expandable>
              </ParamField>
            </Tab>
          </Tabs>
        </div>
      </Frame>
    </ParamField>

    <ParamField body="role" type="string" required={true}>
      Rol del autor del mensaje. Puede ser system, user o assistant.

      Valores de enumeración: `system`, `user`, `assistant`
    </ParamField>

    <ParamField body="name" type="string">
      Nombre del autor de este mensaje. Puede contener a-z, A-Z, 0-9 y guiones bajos, con una longitud máxima de 64 caracteres.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="max_tokens" type="integer" required={true}>
  Número máximo de tokens que se generarán en la completación.

  Si su prompt (mensajes anteriores) más los tokens de max\_tokens supera la longitud de contexto del modelo, el comportamiento depende de context\_length\_exceeded\_behavior. De forma predeterminada, max\_tokens se reducirá para ajustarse a la ventana de contexto, en lugar de devolver un error.
</ParamField>

<ParamField body="stream" type="boolean | null" default={false}>
  Si se debe devolver el progreso parcial en streaming. Si se establece, los tokens se enviarán como eventos enviados por el servidor (SSE) de solo datos a medida que estén disponibles, y el stream finalizará con un mensaje `data: [DONE]`.
</ParamField>

<ParamField body="stream_options" type="object | null">
  Opciones para la respuesta en streaming. Establezca esto solo cuando stream esté configurado en true.

  <Expandable title="Propiedades" defaultOpen={false}>
    <ParamField body="include_usage" type="boolean">
      Si se establece, se transmitirá en streaming un chunk adicional antes del mensaje `data: [DONE]`. El campo usage de este chunk muestra las estadísticas de uso de tokens de toda la solicitud, mientras que el campo choices siempre es un array vacío. Todos los demás chunks también contendrán un campo usage, pero su valor será null.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="n" type="integer | null" default={1}>
  Número de completaciones que se generarán para cada prompt.

  Nota: dado que este parámetro genera muchas completaciones, puede consumir rápidamente su cuota de tokens. Úselo con precaución y asegúrese de tener configuraciones razonables para max\_tokens y stop.

  Rango requerido: `1 < x < 128`
</ParamField>

<ParamField body="seed" type="integer | null">
  Si se especifica, nuestro sistema hará todo lo posible por muestrear de forma determinista, de modo que repetir solicitudes con el mismo seed y los mismos parámetros debería devolver los mismos resultados.
</ParamField>

<ParamField body="frequency_penalty" type="number | null" default={0}>
  Los valores positivos penalizan los nuevos tokens según su frecuencia existente en el texto, lo que reduce la probabilidad de que el modelo repita literalmente la misma línea.

  Si el objetivo es solo reducir ligeramente las muestras repetitivas, los valores razonables están entre 0.1 y 1. Si el objetivo es suprimir fuertemente la repetición, puede aumentar el coeficiente hasta 2, pero esto puede reducir significativamente la calidad de las muestras. Los valores negativos pueden usarse para aumentar la probabilidad de repetición.

  Consulte también presence\_penalty, que penaliza a una tasa fija los tokens que aparecen al menos una vez.

  Rango requerido: `-2 < x < 2`
</ParamField>

<ParamField body="presence_penalty" type="number | null" default={0}>
  Los valores positivos penalizan los nuevos tokens según si aparecen en el texto, lo que aumenta la probabilidad de que el modelo hable de temas nuevos.

  Si el objetivo es solo reducir ligeramente las muestras repetitivas, los valores razonables están entre 0.1 y 1. Si el objetivo es suprimir fuertemente la repetición, puede aumentar el coeficiente hasta 2, pero esto puede reducir significativamente la calidad de las muestras. Los valores negativos pueden usarse para aumentar la probabilidad de repetición.

  Consulte también `frequency_penalty`, que penaliza los tokens a una tasa incremental según la frecuencia con la que aparecen.

  Rango requerido: `-2 < x < 2`
</ParamField>

<ParamField body="repetition_penalty" type="number | null">
  Aplica una penalización a los tokens repetidos para desalentar o fomentar la repetición. Un valor de 1.0 significa que no hay penalización y permite la repetición libre. Los valores superiores a 1.0 penalizan la repetición, reduciendo la probabilidad de tokens repetidos. Los valores entre 0.0 y 1.0 recompensan la repetición, aumentando la probabilidad de tokens repetidos. Para obtener un buen equilibrio, generalmente se recomienda usar un valor de 1.2. Tenga en cuenta que la penalización se aplica tanto a la salida generada como al prompt en modelos solo de decodificador.

  Rango requerido: `0 < x < 2`
</ParamField>

<ParamField body="stop" type="string | null">
  Hasta 4 secuencias en las que la API dejará de generar tokens adicionales. El texto devuelto contendrá la secuencia de parada.
</ParamField>

<ParamField body="temperature" type="number | null" default={1}>
  Temperatura de muestreo que se utilizará, entre 0 y 2. Los valores más altos, como 0.8, hacen que la salida sea más aleatoria, mientras que los valores más bajos, como 0.2, la hacen más enfocada y determinista.

  Por lo general, recomendamos cambiar esto o `top_p`, pero no ambos.

  Rango requerido: `0 < x < 2`
</ParamField>

<ParamField body="top_p" type="number | null">
  Un método alternativo a la temperatura de muestreo, llamado muestreo de núcleo, en el que el modelo considera los resultados de tokens con masa de probabilidad top\_p. Por lo tanto, 0.1 significa que solo se consideran los tokens que componen el 10% superior de la masa de probabilidad. Por lo general, recomendamos cambiar esto o la temperatura, pero no ambos.

  Rango requerido: `0 < x <= 1`
</ParamField>

<ParamField body="top_k" type="integer | null">
  El muestreo Top-k es otro método de muestreo en el que se filtran los k tokens siguientes más probables y la masa de probabilidad se redistribuye solo entre esos k tokens siguientes. El valor de k controla la cantidad de candidatos para el siguiente token en cada paso durante la generación de texto.

  Rango requerido: `1 < x < 128`
</ParamField>

<ParamField body="min_p" type="number | null">
  Representa la probabilidad mínima para que se consideren los tokens, relativa a la probabilidad del token más probable.

  Rango requerido: `0 <= x <= 1`
</ParamField>

<ParamField body="logit_bias" type="map[string, integer] | null" required={false}>
  Modifica la probabilidad de que los tokens especificados aparezcan en la completación.

  Acepta un objeto JSON que asigna tokens a valores de sesgo asociados entre -100 y 100.
  Matemáticamente, el sesgo se suma a los logits generados por el modelo antes del muestreo. El efecto exacto varía según el modelo.

  Por ejemplo, establecer `"logit_bias":{"1024": 6}` aumentará la probabilidad de los tokens con el ID de token 1024.
</ParamField>

<ParamField body="logprobs" type="boolean | null" default={false}>
  Si se deben devolver las probabilidades logarítmicas de los tokens de salida. Si es true, se devuelven las probabilidades logarítmicas de cada token de salida en el contenido del mensaje.
</ParamField>

<ParamField body="top_logprobs" type="integer | null">
  Un entero entre 0 y 20 que especifica la cantidad de tokens más probables que se devolverán en cada posición de token, cada uno con una probabilidad logarítmica asociada. Si usa este parámetro, debe establecer `logprobs` en true.

  Rango requerido: `0 <= x <= 20`
</ParamField>

<ParamField body="tools" type="object[] | null">
  Lista de herramientas que el modelo puede llamar. Actualmente, solo se admiten funciones como herramientas. Use esto para proporcionar una lista de funciones para las que el modelo puede generar entradas JSON.

  Obtenga más información sobre las llamadas a funciones en la [guía de llamadas a funciones](/es/docs/model/llm-function-calling).

  <Expandable title="Propiedades" defaultOpen={false}>
    <ParamField body="type" type="string" required={true}>
      Tipo de herramienta.

      Tipo admitido: `function`
    </ParamField>

    <ParamField body="function" type="object" required={true}>
      <Expandable title="Propiedades" defaultOpen={false}>
        <ParamField body="name" type="string" required={true}>
          Nombre de la función que se llamará. Debe ser a-z, A-Z, 0-9, o incluir guiones bajos y guiones, con una longitud máxima de 64.
        </ParamField>

        <ParamField body="description" type="string | null">
          Descripción de la función, que el modelo usa para elegir cuándo y cómo llamar a la función.
        </ParamField>

        <ParamField body="parameters" type="object | null">
          Parámetros que acepta la función, descritos como un objeto JSON Schema. Para consultar la documentación del formato, consulte la [referencia de JSON Schema](https://json-schema.org/understanding-json-schema/).
        </ParamField>

        <ParamField body="strict" type="boolean" default={false}>
          Si se debe habilitar el seguimiento estricto del modo al generar llamadas a funciones. Si se establece en true, el modelo seguirá el patrón exacto definido en el campo de parámetros.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="response_format" type="object | null">
  Permite forzar al modelo a generar un formato de salida específico.

  Establézcalo en `{ "type": "json_schema", "json_schema": {...} }` para habilitar salidas estructuradas, asegurando que el modelo coincida con el JSON schema que proporcione.

  Establézcalo en `{ "type": "json_object" }` para habilitar el modo JSON heredado, asegurando que el mensaje generado por el modelo sea JSON válido. Para los modelos que lo admiten, se recomienda usar `json_schema`.

  <Expandable title="Propiedades" defaultOpen={false}>
    <ParamField body="type" type="string" required={true} default="text">
      Valores de enumeración: `text`, `json_object`, `json_schema`
    </ParamField>

    <ParamField body="json_schema" type="object | null">
      Formato de respuesta JSON Schema. Se usa para generar respuestas JSON estructuradas.

      Solo se admite cuando `type` está establecido en `json_schema`, y también es obligatorio cuando `type` está establecido en `json_schema`.

      Obtenga más información en la [guía de salidas estructuradas](/es/docs/model/llm-structured-outputs).

      <Expandable title="Propiedades" defaultOpen={false}>
        <ParamField body="name" type="string" required={true}>
          Nombre del formato de respuesta. Debe ser a-z, A-Z, 0-9, o incluir guiones bajos y guiones, con una longitud máxima de 64.
        </ParamField>

        <ParamField body="description" type="string | null">
          Descripción del formato de respuesta, que el modelo usa para determinar cómo responder en ese formato.
        </ParamField>

        <ParamField body="schema" type="object | null">
          Esquema del formato de respuesta, descrito como un objeto JSON Schema. Aprenda cómo crear un JSON schema [aquí](https://json-schema.org/specification).

          Tipos admitidos: `string`, `number`, `integer`, `boolean`, `array`, `object`, `enum`, `anyOf`.
        </ParamField>

        <ParamField body="strict" type="boolean" default={false}>
          Si se debe habilitar el seguimiento estricto del modo al generar la salida. Si se establece en true, el modelo siempre seguirá el patrón exacto definido en el campo schema. Cuando strict es true, solo se admite un subconjunto de JSON Schema.

          Si habilita salidas estructuradas proporcionando `strict: true` y llama a la API con un JSON Schema no admitido, recibirá un error.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="separate_reasoning" type="boolean | null" default={false}>
  Si se debe separar el razonamiento de "content" en el campo "reasoning\_content".

  Modelos admitidos:

  * `deepseek/deepseek-r1-turbo`
</ParamField>

<ParamField body="enable_thinking" type="boolean | null" default={true}>
  Controla el cambio entre los modos de pensamiento y no pensamiento.

  Modelos admitidos:

  * `zai-org/glm-4.5`
</ParamField>

## Información de la respuesta

<ResponseField name="choices" type="object[]" required={true}>
  Lista de opciones de completación de chat.

  <Expandable title="Propiedades" defaultOpen={false}>
    <ResponseField name="finish_reason" type="string" required={true}>
      Motivo por el que el modelo dejó de generar tokens. Es "stop" si el modelo alcanza un punto de parada natural o una secuencia de parada proporcionada; es "length" si alcanza el número máximo de tokens especificado en la solicitud.

      Opciones disponibles: `stop`, `length`
    </ResponseField>

    <ResponseField name="index" type="integer" required={true}>
      Índice de la opción de completación de chat.
    </ResponseField>

    <ResponseField name="message" type="object" required={true}>
      <Expandable title="Propiedades" defaultOpen={false}>
        <ResponseField name="role" type="string" required={true}>
          Rol del autor de este mensaje.

          Opciones disponibles: `system`, `user`, `assistant`
        </ResponseField>

        <ResponseField name="content" type="string | null">
          Contenido del mensaje.
        </ResponseField>

        <ResponseField name="reasoning_content" type="string | null">
          Contenido de los pasos de razonamiento.

          <Warning>
            Este campo solo está disponible cuando `separate_reasoning` está establecido en true.
          </Warning>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="created" type="integer" required={true}>
  Hora Unix (en segundos) en la que se generó la respuesta.
</ResponseField>

<ResponseField name="id" type="string" required={true}>
  Identificador único de la respuesta.
</ResponseField>

<ResponseField name="model" type="string" required={true}>
  Modelo utilizado para la completación de chat.
</ResponseField>

<ResponseField name="object" type="string" required={true}>
  Tipo de objeto, siempre `chat.completion`.
</ResponseField>

<ResponseField name="usage" type="object">
  Estadísticas de uso.

  Para las respuestas en streaming, el campo usage se incluye en el último bloque de respuesta devuelto.

  <Expandable title="Propiedades" defaultOpen={false}>
    <ResponseField name="completion_tokens" type="integer" required={true}>
      Número de tokens en la completación generada.
    </ResponseField>

    <ResponseField name="prompt_tokens" type="integer" required={true}>
      Número de tokens en el prompt.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer" required={true}>
      Número total de tokens utilizados en la solicitud (prompt + completación).
    </ResponseField>
  </Expandable>
</ResponseField>
