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

# ajustes de sesión de ai_function_*

> Ajustes de sesión de ClickHouse en el grupo generado 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>Funcionalidad beta</span>
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["Versión", "Valor predeterminado", "Comentario"];
  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
  }}>
        Historial de versiones
      </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
  }}>Tipo</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>Predeterminado</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          Modificable sin reiniciar
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

Estos ajustes están disponibles en [system.settings](/es/reference/system-tables/settings) y se generan automáticamente a partir del [código fuente](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": "Las funciones de IA ahora rechazan de forma predeterminada los endpoints inseguros (http) en hosts remotos."}]}]} />

Si es false (valor predeterminado), las funciones de IA no permiten usar un `endpoint` de una colección con nombre que enviaría prompts y claves de API mediante una conexión sin cifrar a un host remoto: se rechaza con una excepción cualquier endpoint que no sea HTTPS y cuyo host no sea de loopback. Los endpoints de loopback (por ejemplo, un servidor de modelos local en `http://localhost`) siempre están permitidos. Establézcalo en true para permitir endpoints `http://` sin cifrar en hosts remotos.

## ai\_function\_embedding\_default\_credentials

<BetaBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": ""},{"label": "Nueva configuración"}]}]} />

Nombre de la colección con nombre que usan las funciones de embedding (`aiEmbed`, `aiSimilarity`) cuando la llamada no pasa `credentials` en su mapa de parámetros. Vacío significa que no hay ningún valor predeterminado: esas llamadas deben pasar `credentials` explícitamente. Estas funciones toman `model` como argumento posicional obligatorio, no de la colección con nombre. Se mantiene separado de `ai_function_text_default_credentials` porque un endpoint de embeddings es distinto de uno 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": "Nueva configuración"}]}]} />

Número máximo de textos que se pueden incluir en una sola solicitud HTTP realizada por las funciones de embedding (`aiEmbed`, `aiSimilarity`). Los textos se agrupan en lotes de este tamaño para reducir la sobrecarga de las llamadas a la API. Por ejemplo, 500 textos únicos con un tamaño de lote de 100 dan como resultado 5 solicitudes 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": "Limita de forma predeterminada las llamadas HTTP salientes de funciones de IA por consulta (anteriormente 0: sin límite)."}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "Nueva configuración"}]}]} />

Número máximo de solicitudes HTTP que las funciones de IA pueden realizar por consulta. Se aplica de forma independiente en cada servidor y fragmento de consulta: dentro de un contexto de ejecución, es un límite exacto compartido por todas las funciones de IA, bloques e hilos presentes; sin embargo, una consulta distribuida (entre segmentos o fragmentos de réplicas paralelas) puede realizar hasta este número de solicitudes por segmento/fragmento. Debe establecerse en la consulta de nivel superior; se ignora una sobrescritura de `SETTINGS` en una subconsulta. Establézcalo en 0 para desactivarlo.

## 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": "Nueva configuración"}]}]} />

Número máximo total de tokens de entrada (prompt) sumados entre todas las llamadas a la API de función de IA en una sola consulta. Se contabiliza de forma acumulativa a partir de las respuestas del proveedor. Tenga en cuenta que este límite puede superarse hasta en la cantidad de tokens de entrada de una llamada por cada solicitud en curso, ya que los tokens de entrada de una llamada no se conocen hasta que llega su respuesta. Al igual que las demás cuotas de IA, se aplica por servidor / fragmento de consulta, no se suma en una consulta distribuida y debe establecerse en la consulta de nivel superior; se ignora una sobrescritura de `SETTINGS` en una subconsulta. Establézcalo en 0 para desactivarlo.

Este límite solo se aplica a los proveedores que informan un objeto `usage` en su respuesta (OpenAI, Anthropic, vLLM). Los proveedores que omiten el uso de tokens (en particular, HuggingFace TEI) hacen que el contador permanezca en 0; use `ai_function_max_api_calls_per_query` en su lugar para limitar esas llamadas.

## 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": "Nueva configuración"}]}]} />

Número máximo total de tokens de salida (completion) en el conjunto de llamadas a la API de la función de IA dentro de una sola consulta. Se contabiliza de forma acumulativa a partir de las respuestas del proveedor. Ten en cuenta que este límite puede superarse hasta por el equivalente a los tokens de salida de una llamada por cada solicitud en curso, ya que los tokens de salida de una llamada no se conocen hasta que llega su respuesta. Al igual que las demás cuotas de IA, se aplica por servidor / fragmento de consulta, no se suma en una consulta distribuida y debe establecerse en la consulta de nivel superior; se ignora una sobrescritura de `SETTINGS` en una subconsulta. Establécelo en 0 para desactivarlo.

Este límite solo se aplica a los proveedores que informan un objeto `usage` en su respuesta (OpenAI, Anthropic, vLLM). No se aplica a las funciones de embedding (`aiEmbed`, `aiSimilarity`), que nunca generan tokens de salida.

## ai\_function\_max\_retries

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "Reintenta un error transitorio de la API una vez de forma predeterminada, para que un único error 429 o 5xx del proveedor no haga fallar la consulta."}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "Nueva configuración"}]}]} />

Número máximo de reintentos por errores transitorios para cada solicitud individual a la API. Cada reintento usa backoff exponencial a 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": "Nueva configuración"}]}]} />

Tiempo de espera, en segundos, para cada solicitud HTTP realizada por funciones de IA (completaciones de chat con IA y llamadas a la API de embedding). Si una solicitud no se completa dentro de este tiempo, se considera fallida y se puede reintentar según `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": "Nueva configuración"}]}]} />

Retraso inicial, en milisegundos, antes del primer reintento de una solicitud a la API de una función de IA que ha fallado. El retraso se duplica en cada intento posterior (backoff exponencial). Por ejemplo, con la configuración predeterminada: 1000ms, 2000ms, 4000ms.

## ai\_function\_text\_default\_credentials

<BetaBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": ""},{"label": "Nueva configuración"}]}]} />

Nombre de la colección con nombre que usan las funciones de IA de texto (`aiGenerate`, `aiClassify`, `aiFilter`, `aiExtract`, `aiTranslate`, `aiRedact`) cuando la llamada no incluye `credentials` en su mapa de parámetros. Vacío significa que no hay ningún valor predeterminado: esas llamadas deben pasar `credentials` explícitamente. Un endpoint de chat-completions es distinto de uno de embeddings, por lo que esto es independiente 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": "Nueva configuración"}]}]} />

Si es true (valor predeterminado), una llamada a una función de IA que falle de forma permanente tras agotar todos los reintentos interrumpe la consulta con una excepción. Si es false, la fila fallida recibe el valor predeterminado para el tipo de columna (cadena vacía para String) y el procesamiento continúa.

## 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": "Nueva configuración"}]}]} />

Si es true (valor predeterminado), superar un límite de cuota de una función de IA (`ai_function_max_input_tokens_per_query`, `ai_function_max_output_tokens_per_query` o `ai_function_max_api_calls_per_query`) aborta la consulta con una excepción. Si es false, las filas restantes reciben el valor predeterminado del tipo de columna (cadena vacía para String). Al igual que los límites de cuota, esto debe establecerse en la consulta de nivel superior; se ignora una sobrescritura de `SETTINGS` en una subconsulta.
