> ## 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.

# Créer une requête de conversation de chat

Génère une réponse du modèle en fonction de la conversation de chat spécifiée

## En-têtes de requête

<ParamField header="Content-Type" type="string" required={true}>
  Valeurs d’énumération : `application/json`
</ParamField>

<ParamField header="Authorization" type="string" required={true}>
  Format d’authentification Bearer : Bearer \{\{API Key}}.
</ParamField>

## Corps de la requête

<ParamField body="model" type="string" required={true}>
  Nom du modèle à utiliser.
</ParamField>

<ParamField body="messages" type="object[]" required={true}>
  Liste des messages qui composent la conversation actuelle.

  <Expandable title="Propriétés" defaultOpen={false}>
    <ParamField body="content" type="string | object[] | null" required={true}>
      Contenu du message. Tous les messages nécessitent content ; pour les messages assistant contenant des appels de fonction, content peut être null.

      Vous pouvez utiliser les paramètres suivants selon les différentes modalités.

      <Frame>
        <div class="param_frame">
          <Tabs>
            <Tab title="Contenu texte">
              <p class="param_text">Option 1 :</p>
              <p class="param_text">Vous pouvez utiliser le type chaîne pour représenter le contenu textuel du message.</p>

              <br />

              <p class="param_text">Option 2 :</p>
              <p class="param_text">Utilisez un tableau de parties de contenu, object\[]. Les champs détaillés sont les suivants :</p>

              <ParamField body="type" type="string" required={true}>
                Type de la partie de contenu, ici `text`.
              </ParamField>

              <ParamField body="text" type="string" required={true}>
                Contenu texte.
              </ParamField>
            </Tab>

            <Tab title="Contenu image">
              <p class="param_text">Disponible uniquement avec les modèles de langage visuel.</p>
              <p class="param_text">Tableau de parties de contenu, object\[]. Les champs détaillés sont les suivants :</p>

              <ParamField body="type" type="string" required={true}>
                Type de la partie de contenu, ici `image_url`.
              </ParamField>

              <ParamField body="image_url" type="string" required={true}>
                <Expandable title="Propriétés" defaultOpen={true}>
                  <ParamField body="url" type="string" required={true}>
                    URL de l’image ou données d’image encodées en base64 (les modèles de la série claude ne prennent en charge que les données d’image encodées en base64).
                  </ParamField>
                </Expandable>
              </ParamField>
            </Tab>

            <Tab title="Contenu vidéo">
              <p class="param_text">Disponible uniquement avec les modèles prenant en charge la vidéo.</p>
              <p class="param_text">Tableau de parties de contenu, object\[]. Les champs détaillés sont les suivants :</p>

              <ParamField body="type" type="string" required={true}>
                Type de la partie de contenu, ici `video_url`.
              </ParamField>

              <ParamField body="video_url" type="string" required={true}>
                <Expandable title="Propriétés" defaultOpen={true}>
                  <ParamField body="url" type="string" required={true}>
                    URL de la vidéo.
                  </ParamField>
                </Expandable>
              </ParamField>
            </Tab>
          </Tabs>
        </div>
      </Frame>
    </ParamField>

    <ParamField body="role" type="string" required={true}>
      Rôle de l’auteur du message. Peut être system, user ou assistant.

      Valeurs d’énumération : `system`, `user`, `assistant`
    </ParamField>

    <ParamField body="name" type="string">
      Nom de l’auteur de ce message. Peut contenir a-z, A-Z, 0-9 et des traits de soulignement, avec une longueur maximale de 64 caractères.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="max_tokens" type="integer" required={true}>
  Nombre maximal de tokens générés dans la complétion.

  Si votre prompt (messages précédents) plus le nombre de tokens de max\_tokens dépasse la longueur de contexte du modèle, le comportement dépend de context\_length\_exceeded\_behavior. Par défaut, max\_tokens sera réduit pour s’adapter à la fenêtre de contexte, plutôt que de renvoyer une erreur.
</ParamField>

<ParamField body="stream" type="boolean | null" default={false}>
  Indique s’il faut renvoyer la progression partielle en streaming. Si ce paramètre est défini, les tokens seront envoyés sous forme d’événements serveur (SSE) réservés aux données à mesure qu’ils deviennent disponibles, et le flux se terminera par un message `data: [DONE]`.
</ParamField>

<ParamField body="stream_options" type="object | null">
  Options de la réponse en streaming. Définissez cet élément uniquement lorsque stream est défini sur true.

  <Expandable title="Propriétés" defaultOpen={false}>
    <ParamField body="include_usage" type="boolean">
      Si ce paramètre est défini, un chunk supplémentaire sera diffusé avant le message data: \[DONE]. Le champ usage de ce chunk affiche les statistiques d’utilisation des tokens pour l’ensemble de la requête, tandis que le champ choices est toujours un tableau vide. Tous les autres chunks contiendront également un champ usage, mais avec la valeur null.
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="n" type="integer | null" default={1}>
  Nombre de complétions générées pour chaque prompt.

  Remarque : comme ce paramètre génère de nombreuses complétions, il peut consommer rapidement votre quota de tokens. Utilisez-le avec prudence et assurez-vous d’avoir des paramètres raisonnables pour max\_tokens et stop.

  Plage requise : `1 < x < 128`
</ParamField>

<ParamField body="seed" type="integer | null">
  Si spécifié, notre système fera de son mieux pour échantillonner de manière déterministe, de sorte que des requêtes répétées avec le même seed et les mêmes paramètres devraient renvoyer le même résultat.
</ParamField>

<ParamField body="frequency_penalty" type="number | null" default={0}>
  Les valeurs positives pénalisent les nouveaux tokens en fonction de leur fréquence existante dans le texte, réduisant la probabilité que le modèle répète mot pour mot les mêmes lignes.

  Si l’objectif est simplement de réduire légèrement les échantillons répétitifs, des valeurs raisonnables se situent entre 0.1 et 1. Si l’objectif est de fortement supprimer les répétitions, le coefficient peut être augmenté à 2, mais cela peut réduire sensiblement la qualité de l’échantillon. Les valeurs négatives peuvent être utilisées pour augmenter la probabilité de répétition.

  Voir aussi presence\_penalty, utilisé pour pénaliser à un taux fixe les tokens apparaissant au moins une fois.

  Plage requise : `-2 < x < 2`
</ParamField>

<ParamField body="presence_penalty" type="number | null" default={0}>
  Les valeurs positives pénalisent les nouveaux tokens selon qu’ils apparaissent ou non dans le texte, augmentant la probabilité que le modèle aborde de nouveaux sujets.

  Si l’objectif est simplement de réduire légèrement les échantillons répétitifs, des valeurs raisonnables se situent entre 0.1 et 1. Si l’objectif est de fortement supprimer les répétitions, le coefficient peut être augmenté à 2, mais cela peut réduire sensiblement la qualité de l’échantillon. Les valeurs négatives peuvent être utilisées pour augmenter la probabilité de répétition.

  Voir aussi `frequency_penalty`, utilisé pour pénaliser les tokens à un taux croissant en fonction de leur fréquence d’apparition.

  Plage requise : `-2 < x < 2`
</ParamField>

<ParamField body="repetition_penalty" type="number | null">
  Applique une pénalité aux tokens répétés afin de décourager ou d’encourager la répétition. Une valeur de 1.0 signifie qu’il n’y a pas de pénalité et que la répétition est libre. Les valeurs supérieures à 1.0 pénalisent la répétition et réduisent la probabilité des tokens répétés. Les valeurs comprises entre 0.0 et 1.0 récompensent la répétition et augmentent la probabilité de tokens répétés. Pour obtenir un bon équilibre, une valeur de 1.2 est généralement recommandée. Notez que la pénalité s’applique à la sortie générée ainsi qu’au prompt dans les modèles à décodeur seul.

  Plage requise : `0 < x < 2`
</ParamField>

<ParamField body="stop" type="string | null">
  Jusqu’à 4 séquences pour lesquelles l’API cessera de générer des tokens supplémentaires. Le texte renvoyé inclura la séquence d’arrêt.
</ParamField>

<ParamField body="temperature" type="number | null" default={1}>
  Température d’échantillonnage à utiliser, comprise entre 0 et 2. Des valeurs plus élevées comme 0.8 rendent la sortie plus aléatoire, tandis que des valeurs plus faibles comme 0.2 la rendent plus ciblée et déterministe.

  Nous recommandons généralement de modifier ce paramètre ou `top_p`, mais pas les deux en même temps.

  Plage requise : `0 < x < 2`
</ParamField>

<ParamField body="top_p" type="number | null">
  Une méthode alternative à la température d’échantillonnage, appelée échantillonnage par noyau, dans laquelle le modèle considère les résultats des tokens ayant une masse de probabilité top\_p. Ainsi, 0.1 signifie que seuls les tokens constituant les 10 % supérieurs de la masse de probabilité sont pris en compte. Nous recommandons généralement de modifier ce paramètre ou la température, mais pas les deux en même temps.

  Plage requise : `0 < x <= 1`
</ParamField>

<ParamField body="top_k" type="integer | null">
  L’échantillonnage Top-k est une autre méthode d’échantillonnage dans laquelle les k prochains tokens les plus probables sont filtrés, et la masse de probabilité est redistribuée uniquement entre ces k prochains tokens. La valeur de k contrôle le nombre de candidats pour le prochain token à chaque étape de la génération de texte.

  Plage requise : `1 < x < 128`
</ParamField>

<ParamField body="min_p" type="number | null">
  Représente la probabilité minimale pour qu’un token soit pris en compte, par rapport à la probabilité du token le plus probable.

  Plage requise : `0 <= x <= 1`
</ParamField>

<ParamField body="logit_bias" type="map[string, integer] | null" required={false}>
  Modifie la probabilité que les tokens spécifiés apparaissent dans la complétion.

  Accepte un objet JSON qui mappe des tokens à des valeurs de biais associées comprises entre -100 et 100.
  Mathématiquement, le biais est ajouté aux logits générés par le modèle avant l’échantillonnage. L’effet exact varie selon le modèle.

  Par exemple, définir `"logit_bias":{"1024": 6}` augmentera la probabilité des tokens dont l’ID de token est 1024.
</ParamField>

<ParamField body="logprobs" type="boolean | null" default={false}>
  Indique s’il faut renvoyer les probabilités logarithmiques des tokens de sortie. Si true, les probabilités logarithmiques de chaque token de sortie dans le contenu du message sont renvoyées.
</ParamField>

<ParamField body="top_logprobs" type="integer | null">
  Un entier compris entre 0 et 20 qui spécifie le nombre de tokens les plus probables à renvoyer à chaque position de token, chacun avec une probabilité logarithmique associée. Si ce paramètre est utilisé, `logprobs` doit être défini sur true.

  Plage requise : `0 <= x <= 20`
</ParamField>

<ParamField body="tools" type="object[] | null">
  Liste des outils que le modèle peut appeler. Actuellement, seules les fonctions sont prises en charge comme outils. Utilisez cet élément pour fournir la liste des fonctions pour lesquelles le modèle peut générer des entrées JSON.

  En savoir plus sur l’appel de fonctions dans le [guide d’appel de fonctions](/fr/docs/model/llm-function-calling).

  <Expandable title="Propriétés" defaultOpen={false}>
    <ParamField body="type" type="string" required={true}>
      Type de l’outil.

      Type pris en charge : `function`
    </ParamField>

    <ParamField body="function" type="object" required={true}>
      <Expandable title="Propriétés" defaultOpen={false}>
        <ParamField body="name" type="string" required={true}>
          Nom de la fonction à appeler. Doit être a-z, A-Z, 0-9, ou contenir des traits de soulignement et des traits d’union, avec une longueur maximale de 64.
        </ParamField>

        <ParamField body="description" type="string | null">
          Description de la fonction, utilisée par le modèle pour choisir quand et comment appeler la fonction.
        </ParamField>

        <ParamField body="parameters" type="object | null">
          Paramètres acceptés par la fonction, décrits comme un objet JSON Schema. Pour la documentation du format, consultez la [référence JSON Schema](https://json-schema.org/understanding-json-schema/).
        </ParamField>

        <ParamField body="strict" type="boolean" default={false}>
          Indique s’il faut activer le respect strict du schéma lors de la génération d’appels de fonction. Si défini sur true, le modèle suivra exactement le schéma défini dans le champ parameters.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="response_format" type="object | null">
  Permet de forcer le modèle à générer un format de sortie spécifique.

  Définir sur `{ "type": "json_schema", "json_schema": {...} }` active les sorties structurées, garantissant que le modèle correspondra au JSON schema que vous fournissez.

  Définir sur `{ "type": "json_object" }` active l’ancien mode JSON, garantissant que le message généré par le modèle est un JSON valide. Pour les modèles qui le prennent en charge, il est recommandé d’utiliser `json_schema`.

  <Expandable title="Propriétés" defaultOpen={false}>
    <ParamField body="type" type="string" required={true} default="text">
      Valeurs d’énumération : `text`, `json_object`, `json_schema`
    </ParamField>

    <ParamField body="json_schema" type="object | null">
      Format de réponse JSON Schema. Utilisé pour générer des réponses JSON structurées.

      Pris en charge uniquement lorsque `type` est défini sur `json_schema`, et également requis lorsque `type` est défini sur `json_schema`.

      En savoir plus dans le [guide des sorties structurées](/fr/docs/model/llm-structured-outputs).

      <Expandable title="Propriétés" defaultOpen={false}>
        <ParamField body="name" type="string" required={true}>
          Nom du format de réponse. Doit être a-z, A-Z, 0-9, ou contenir des traits de soulignement et des traits d’union, avec une longueur maximale de 64.
        </ParamField>

        <ParamField body="description" type="string | null">
          Description du format de réponse, utilisée par le modèle pour déterminer comment répondre dans ce format.
        </ParamField>

        <ParamField body="schema" type="object | null">
          Schéma du format de réponse, décrit comme un objet JSON Schema. Découvrez comment créer un JSON schema [ici](https://json-schema.org/specification).

          Types pris en charge : `string`, `number`, `integer`, `boolean`, `array`, `object`, `enum`, `anyOf`.
        </ParamField>

        <ParamField body="strict" type="boolean" default={false}>
          Indique s’il faut activer le respect strict du schéma lors de la génération de la sortie. Si défini sur true, le modèle suivra toujours exactement le schéma défini dans le champ schema. Lorsque strict est true, seul un sous-ensemble de JSON Schema est pris en charge.

          Si vous activez les sorties structurées en fournissant `strict: true` et appelez l’API avec un JSON Schema non pris en charge, vous recevrez une erreur.
        </ParamField>
      </Expandable>
    </ParamField>
  </Expandable>
</ParamField>

<ParamField body="separate_reasoning" type="boolean | null" default={false}>
  Indique s’il faut séparer le raisonnement de "content" dans le champ "reasoning\_content".

  Modèles pris en charge :

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

<ParamField body="enable_thinking" type="boolean | null" default={true}>
  Contrôle le basculement entre les modes réflexion et non-réflexion.

  Modèles pris en charge :

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

## Informations de réponse

<ResponseField name="choices" type="object[]" required={true}>
  Liste des options de complétion de chat.

  <Expandable title="Propriétés" defaultOpen={false}>
    <ResponseField name="finish_reason" type="string" required={true}>
      Raison pour laquelle le modèle a cessé de générer des tokens. Vaut "stop" si le modèle atteint un point d’arrêt naturel ou une séquence d’arrêt fournie ; vaut "length" si le nombre maximal de tokens spécifié dans la requête est atteint.

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

    <ResponseField name="index" type="integer" required={true}>
      Index de l’option de complétion de chat.
    </ResponseField>

    <ResponseField name="message" type="object" required={true}>
      <Expandable title="Propriétés" defaultOpen={false}>
        <ResponseField name="role" type="string" required={true}>
          Rôle de l’auteur de ce message.

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

        <ResponseField name="content" type="string | null">
          Contenu du message.
        </ResponseField>

        <ResponseField name="reasoning_content" type="string | null">
          Contenu des étapes de raisonnement.

          <Warning>
            Ce champ n’est disponible que lorsque `separate_reasoning` est défini sur true.
          </Warning>
        </ResponseField>
      </Expandable>
    </ResponseField>
  </Expandable>
</ResponseField>

<ResponseField name="created" type="integer" required={true}>
  Heure Unix (en secondes) à laquelle la réponse a été générée.
</ResponseField>

<ResponseField name="id" type="string" required={true}>
  Identifiant unique de la réponse.
</ResponseField>

<ResponseField name="model" type="string" required={true}>
  Modèle utilisé pour la complétion de chat.
</ResponseField>

<ResponseField name="object" type="string" required={true}>
  Type d’objet, toujours `chat.completion`.
</ResponseField>

<ResponseField name="usage" type="object">
  Statistiques d’utilisation.

  Pour les réponses en streaming, le champ usage est inclus dans le dernier bloc de réponse renvoyé.

  <Expandable title="Propriétés" defaultOpen={false}>
    <ResponseField name="completion_tokens" type="integer" required={true}>
      Nombre de tokens dans la complétion générée.
    </ResponseField>

    <ResponseField name="prompt_tokens" type="integer" required={true}>
      Nombre de tokens dans le prompt.
    </ResponseField>

    <ResponseField name="total_tokens" type="integer" required={true}>
      Nombre total de tokens utilisés dans la requête (prompt + complétion).
    </ResponseField>
  </Expandable>
</ResponseField>
