> ## Documentation Index
> Fetch the complete documentation index at: https://private-7c7dfe99-parallel-read-in-order-multi-part.mintlify.site/llms.txt
> Use this file to discover all available pages before exploring further.

# paramètres de session ai_function_*

> Paramètres de session ClickHouse dans le groupe généré « ai_function_* ».

export const BetaBadge = ({link, galaxyTrack, galaxyEvent}) => {
  if (link) {
    return <a href={link} target="_blank" rel="noopener noreferrer" className="betaBadge" onClick={galaxyTrack && galaxyEvent ? galaxyOnClick(galaxyEvent) : undefined}>
                <span>Beta</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>Fonctionnalité en bêta</span>
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Version", "Valeur par défaut", "Commentaire"];
  const border = "1px solid rgba(128, 128, 128, 0.3)";
  const cell = {
    border,
    padding: "0.25rem 0.5rem",
    textAlign: "start",
    verticalAlign: "top"
  };
  return <details className="not-prose" style={{
    border,
    borderRadius: "0.5rem",
    margin: "0.5rem 0",
    padding: "0.5rem 0.75rem",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <summary style={{
    cursor: "pointer",
    fontWeight: 600,
    opacity: 0.72
  }}>
        Historique des versions
      </summary>
      <table style={{
    borderCollapse: "collapse",
    width: "100%",
    margin: "0.5rem 0 0"
  }}>
        <thead>
          <tr>
            {headers.map(header => <th key={header} style={{
    ...cell,
    fontWeight: 600,
    opacity: 0.72
  }}>
                {header}
              </th>)}
          </tr>
        </thead>
        <tbody>
          {rows.map((row, row_index) => <tr key={row.id ?? row_index}>
              {(row.items ?? []).map((item, item_index) => <td key={item_index} style={{
    ...cell,
    overflowWrap: "anywhere"
  }}>
                  {item?.label}
                </td>)}
            </tr>)}
        </tbody>
      </table>
    </details>;
};

export const SettingsInfoBlock = ({type, default_value, changeable_without_restart}) => {
  return <div className="not-prose" style={{
    display: "flex",
    flexWrap: "wrap",
    alignItems: "baseline",
    columnGap: "0.5rem",
    rowGap: "0.125rem",
    margin: "0.375rem 0",
    fontSize: "0.8125rem",
    lineHeight: "1.125rem"
  }}>
      <div style={{
    fontWeight: 600,
    opacity: 0.72
  }}>Type</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Par défaut</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modifiable sans redémarrage
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Ces paramètres sont disponibles dans [system.settings](/fr/reference/system-tables/settings) et sont générés automatiquement à partir du [source](https://github.com/ClickHouse/ClickHouse/blob/master/src/Core/Settings.cpp).

## ai\_function\_allow\_insecure\_endpoint

<BetaBadge />

<SettingsInfoBlock type="Bool" default_value="0" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "0"},{"label": "Par défaut, les fonctions d’IA rejettent désormais les endpoints non sécurisés (http) vers des hôtes distants."}]}]} />

Si la valeur est false (valeur par défaut), les fonctions d’IA refusent d’utiliser un `endpoint` d’une collection nommée qui enverrait des prompts et des clés API via une connexion non chiffrée vers un hôte distant : tout endpoint non HTTPS dont l’hôte n’est pas une adresse de bouclage est rejeté avec une exception. Les endpoints de bouclage (par exemple, un serveur de modèle local `http://localhost`) sont toujours autorisés. Définissez cette valeur sur true pour autoriser les endpoints `http://` en clair sur des hôtes distants.

## ai\_function\_embedding\_default\_credentials

<BetaBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": ""},{"label": "Nouveau paramètre"}]}]} />

Nom de la collection nommée utilisée par les fonctions d’embedding (`aiEmbed`, `aiSimilarity`) lorsque l’appel ne fournit pas `credentials` dans son mappage de paramètres. Une valeur vide signifie qu’il n’existe aucune valeur par défaut : ces appels doivent donc fournir `credentials` explicitement. Ces fonctions prennent `model` comme argument positionnel obligatoire, et non depuis la collection nommée. Ce paramètre est distinct de `ai_function_text_default_credentials`, car un endpoint d’embeddings diffère d’un endpoint de chat.

## ai\_function\_embedding\_max\_batch\_size

<BetaBadge />

<SettingsInfoBlock type="NonZeroUInt64" default_value="100" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.6"},{"label": "100"},{"label": "Nouveau paramètre"}]}]} />

Nombre maximal de textes pouvant être inclus dans une seule requête HTTP envoyée par les fonctions d’embedding (`aiEmbed`, `aiSimilarity`). Les textes sont regroupés en lots de cette taille afin de réduire la surcharge liée aux appels d’API. Par exemple, 500 textes uniques avec une taille de lot de 100 entraînent 5 requêtes HTTP.

## ai\_function\_max\_api\_calls\_per\_query

<BetaBadge />

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": "1000"},{"label": "Limite par défaut le nombre d’appels HTTP sortants des fonctions d’IA par requête (auparavant 0 – illimité)."}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "Nouveau paramètre"}]}]} />

Nombre maximal de requêtes HTTP que les fonctions d’IA peuvent émettre au cours d’une requête. Cette limite est appliquée indépendamment par chaque serveur et fragment de requête : dans un même contexte d’exécution, elle constitue un plafond strict partagé par toutes les fonctions d’IA, tous les blocs et tous les threads concernés. Toutefois, une requête distribuée (sur plusieurs segments ou fragments de répliques parallèles) peut émettre jusqu’à ce nombre de requêtes par segment ou fragment. Elle doit être définie dans la requête de niveau supérieur ; une surcharge `SETTINGS` dans une sous-requête est ignorée. Définissez cette valeur sur 0 pour désactiver.

## ai\_function\_max\_input\_tokens\_per\_query

<BetaBadge />

<SettingsInfoBlock type="UInt64" default_value="1000000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000000"},{"label": "Nouveau paramètre"}]}]} />

Nombre total maximal de tokens d’entrée (`prompt`) sur l’ensemble des appels à l’API des fonctions d’IA dans une seule requête. Comptabilisé de façon cumulative à partir des réponses du fournisseur. Notez que cette limite peut être dépassée à hauteur des tokens d’entrée d’un appel pour chaque requête en cours, car les tokens d’entrée d’un appel ne sont connus qu’à l’arrivée de sa réponse. Comme les autres quotas d’IA, elle est appliquée par serveur / fragment de requête, et non cumulée sur une requête distribuée, et doit être définie dans la requête de niveau supérieur : une surcharge `SETTINGS` dans une sous-requête est ignorée. Définissez-la sur 0 pour la désactiver.

Cette limite n’est appliquée qu’aux fournisseurs qui renvoient un objet `usage` dans leur réponse (OpenAI, Anthropic, vLLM). Les fournisseurs qui n’indiquent pas l’usage des tokens (notamment HuggingFace TEI) laissent le compteur à 0 — utilisez plutôt `ai_function_max_api_calls_per_query` pour plafonner ces appels.

## ai\_function\_max\_output\_tokens\_per\_query

<BetaBadge />

<SettingsInfoBlock type="UInt64" default_value="500000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "500000"},{"label": "Nouveau paramètre"}]}]} />

Nombre total maximal de tokens de sortie (complétion) pour l’ensemble des appels à l’API des fonctions d’IA au sein d’une même requête. Comptabilisé de façon cumulative à partir des réponses du fournisseur. Notez que cette limite peut être dépassée jusqu’à l’équivalent des tokens de sortie d’un appel pour chaque requête en cours, car les tokens de sortie d’un appel ne sont connus qu’à l’arrivée de sa réponse. Comme les autres quotas d’IA, elle est appliquée par serveur / fragment de requête, et non cumulée sur une requête distribuée, et doit être définie dans la requête de niveau supérieur : une surcharge `SETTINGS` dans une sous-requête est ignorée. Définissez-la sur 0 pour la désactiver.

Cette limite n’est appliquée qu’aux fournisseurs qui renvoient un objet `usage` dans leur réponse (OpenAI, Anthropic, vLLM). Elle ne s’applique pas aux fonctions d’embedding (`aiEmbed`, `aiSimilarity`), qui ne produisent jamais de tokens de sortie.

## ai\_function\_max\_retries

<BetaBadge />

<SettingsInfoBlock type="UInt64" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "Réessayer par défaut une fois une erreur d’API transitoire, afin qu’un seul code 429 ou 5xx du fournisseur n’entraîne pas l’échec de la requête."}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "Nouveau paramètre"}]}]} />

Nombre maximal de tentatives en cas d'erreurs transitoires pour chaque requête d’API. Chaque tentative utilise un backoff exponentiel à partir de `ai_function_retry_initial_delay_ms`.

## ai\_function\_request\_timeout\_sec

<BetaBadge />

<SettingsInfoBlock type="UInt64" default_value="60" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "60"},{"label": "Nouveau paramètre"}]}]} />

Délai d’expiration, en secondes, pour chaque requête HTTP effectuée par les fonctions d’IA (complétions de chat AI Chat et appels à l’API d’embedding). Si une requête ne se termine pas dans ce délai, elle est considérée comme échouée et peut être retentée conformément à `ai_function_max_retries`.

## ai\_function\_retry\_initial\_delay\_ms

<BetaBadge />

<SettingsInfoBlock type="UInt64" default_value="1000" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1000"},{"label": "Nouveau paramètre"}]}]} />

Délai initial, en millisecondes, avant la première nouvelle tentative d’une requête d’API de fonction d’IA ayant échoué. Le délai est doublé à chaque tentative suivante (backoff exponentiel). Par exemple, avec les paramètres par défaut : 1000ms, 2000ms, 4000ms.

## ai\_function\_text\_default\_credentials

<BetaBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": ""},{"label": "Nouveau paramètre"}]}]} />

Nom de la collection nommée utilisée par les fonctions d’IA de texte (`aiGenerate`, `aiClassify`, `aiFilter`, `aiExtract`, `aiTranslate`, `aiRedact`) lorsque l'appel ne transmet pas `credentials` dans son mappage de paramètres. Une valeur vide signifie qu'il n'y a pas de valeur par défaut : ces appels doivent donc transmettre `credentials` explicitement. Un endpoint de chat-completions étant différent d'un endpoint d'embeddings, ce paramètre est distinct de `ai_function_embedding_default_credentials`.

## ai\_function\_throw\_on\_error

<BetaBadge />

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nouveau paramètre"}]}]} />

Si true (par défaut), un appel à une fonction d’IA qui échoue de façon définitive après épuisement de toutes les tentatives interrompt la requête en générant une exception. Si false, la ligne en échec reçoit la valeur par défaut du type de colonne (chaîne vide pour String) et le traitement se poursuit.

## ai\_function\_throw\_on\_quota\_exceeded

<BetaBadge />

<SettingsInfoBlock type="Bool" default_value="1" />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.4"},{"label": "1"},{"label": "Nouveau paramètre"}]}]} />

Si true (par défaut), le dépassement d’une limite de quota d’une fonction d’IA (`ai_function_max_input_tokens_per_query`, `ai_function_max_output_tokens_per_query` ou `ai_function_max_api_calls_per_query`) interrompt la requête en levant une exception. Si false, les lignes restantes reçoivent la valeur par défaut du type de colonne (chaîne vide pour String). Comme pour les limites de quota, ce paramètre doit être défini dans la requête de niveau supérieur ; une surcharge `SETTINGS` dans une sous-requête est ignorée.
