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

# ai_function_* セッション設定

> ai_function_* の自動生成グループ内の ClickHouse セッション設定。

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>ベータ</span>
            </a>;
  }
  return <a href="https://clickhouse.com/docs/reference/settings/beta-and-experimental-features#beta-features" className="betaBadge">
            <span>ベータ機能</span>
        </a>;
};

export const VersionHistory = ({rows = []}) => {
  if (rows.length === 0) {
    return null;
  }
  const headers = ["バージョン", "デフォルト値", "コメント"];
  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
  }}>
        バージョン履歴
      </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
  }}>型</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{type}</div>
      <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>デフォルト値</div>
      <div style={{
    overflowWrap: "anywhere"
  }}>{default_value}</div>
      {changeable_without_restart && <div style={{
    fontWeight: 600,
    opacity: 0.72,
    marginInlineStart: "0.5rem"
  }}>
          再起動せずに変更可能
        </div>}
      {changeable_without_restart && <div style={{
    overflowWrap: "anywhere"
  }}>
          {changeable_without_restart}
        </div>}
    </div>;
};

これらの設定は [system.settings](/ja/reference/system-tables/settings) で確認でき、[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": "AI 関数はデフォルトで、リモートホスト上の安全でない（http）エンドポイントを拒否するようになりました。"}]}]} />

false (デフォルト) の場合、AI 関数は、プロンプトと API キーを暗号化されていない接続でリモートホストに送信する名前付きコレクションの `endpoint` の使用を拒否します。ホストがループバックでない HTTPS 以外のエンドポイントは、例外とともに拒否されます。ループバックエンドポイント (例: ローカルの `http://localhost` モデルサーバー) は常に許可されます。リモートホスト上の平文 `http://` エンドポイントを許可するには、true に設定します。

## ai\_function\_embedding\_default\_credentials

<BetaBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": ""},{"label": "新しい設定"}]}]} />

呼び出し時にパラメータマップで `credentials` が渡されない場合に、埋め込み関数 (`aiEmbed`、`aiSimilarity`) が使用する 名前付きコレクション の名前です。空の場合はデフォルトがないことを意味し、そのような呼び出しでは `credentials` を明示的に渡す必要があります。これらの関数は `model` を必須の位置引数として受け取り、名前付きコレクション からは取得しません。埋め込み用のエンドポイントはチャット用のものとは異なるため、`ai_function_text_default_credentials` とは分けて管理されています。

## 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": "新しい設定"}]}]} />

埋め込み関数 (`aiEmbed`、`aiSimilarity`) が 1 回の HTTP リクエストに含められるテキストの最大数です。API 呼び出しのオーバーヘッドを減らすため、テキストはこのサイズのバッチにまとめられます。たとえば、一意なテキストが 500 件あり、バッチサイズが 100 の場合、HTTP リクエストは 5 回になります。

## 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": "デフォルトでは、クエリごとのアウトバウンド AI 関数 HTTP 呼び出し数を制限（以前は 0、無制限）。"}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "新しい設定"}]}]} />

AI 関数が 1 クエリあたりに送信できる HTTP リクエストの最大数です。各サーバーおよびクエリフラグメントごとに個別に適用されます。1 つの実行コンテキスト内では、その中のすべての AI 関数、block、thread で共有される厳密な上限ですが、分散クエリ (分片または並列レプリカフラグメント間) では、分片/フラグメントごとにこの数までのリクエストを送信できます。最上位クエリで設定する必要があり、サブクエリの オーバーライド は無視されます。無効にするには 0 に設定します。

## 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": "新しい設定"}]}]} />

1 回のクエリ内で、すべての AI 関数の API 呼び出しにおける入力 (プロンプト) トークン総数の上限です。これはプロバイダのレスポンスに基づいて累積的に追跡されます。呼び出しの入力トークン数はレスポンスが到着するまでわからないため、この上限は処理中のリクエストごとに 1 回の呼び出し分の入力トークン数まで超過する可能性がある点に注意してください。他の AI クォータと同様に、これはサーバー / クエリフラグメントごとに適用され、分散クエリ全体で合算されることはありません。また、最上位クエリで設定する必要があり、サブクエリのオーバーライドは無視されます。無効にするには 0 に設定します。

この上限は、レスポンス内で `usage` オブジェクトを返すプロバイダ (OpenAI、Anthropic、vLLM) に対してのみ適用されます。トークン使用量を返さないプロバイダ (特に HuggingFace TEI) の場合、カウンターは 0 のままになるため、そのような呼び出しを制限するには代わりに `ai_function_max_api_calls_per_query` を使用してください。

## 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": "新しい設定"}]}]} />

1 つのクエリ内における、すべての AI 関数 API 呼び出し にまたがる出力 (補完) トークン の合計上限です。これはプロバイダからのレスポンスに基づいて累積的に追跡されます。呼び出しの出力 トークン 数はレスポンスが到着するまでわからないため、処理中のリクエストごとに 1 回の呼び出し分まで、この上限を超過する場合があります。他の AI クォータと同様に、これは server / クエリフラグメント ごとに適用され、分散クエリ全体で合算されることはありません。また、最上位クエリで設定する必要があり、サブクエリの オーバーライド は無視されます。無効にするには 0 に設定します。

この制限が適用されるのは、レスポンス内で usage オブジェクト を返すプロバイダ (OpenAI、Anthropic、vLLM) のみです。埋め込み関数 (`aiEmbed`、`aiSimilarity`) には適用されません。これらは出力 トークン を生成しないためです。

## ai\_function\_max\_retries

<BetaBadge />

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

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.9"},{"label": "1"},{"label": "一時的なAPIエラーはデフォルトで1回再試行されるため、プロバイダからの単一の429または5xxによってクエリが失敗することはありません。"}]}, {"id": "row-2","items": [{"label": "26.4"},{"label": "0"},{"label": "新しい設定"}]}]} />

個々のAPIリクエストに対して、一時的なエラー発生時に行う再試行の最大回数です。各再試行では、`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": "新しい設定"}]}]} />

AI 関数 (AI Chat の補完および埋め込み API 呼び出し) が行う個々の HTTP リクエストのタイムアウトを秒単位で指定します。リクエストがこの時間内に完了しない場合は失敗とみなされ、`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": "新しい設定"}]}]} />

失敗した AI 関数の API リクエストを最初に再試行するまでの初期遅延を、ミリ秒単位で指定します。この遅延は、以降の試行ごとに 2 倍になります (指数バックオフ) 。たとえば、デフォルト設定では 1000ms、2000ms、4000ms です。

## ai\_function\_text\_default\_credentials

<BetaBadge />

<VersionHistory rows={[{"id": "row-1","items": [{"label": "26.8"},{"label": ""},{"label": "新しい設定"}]}]} />

呼び出し時にパラメータマップで `credentials` が渡されない場合、テキスト AI 関数 (`aiGenerate`、`aiClassify`、`aiFilter`、`aiExtract`、`aiTranslate`、`aiRedact`) が使用する名前付きコレクションの名前です。空の場合はデフォルトがないことを意味し、そのような呼び出しでは `credentials` を明示的に渡す必要があります。chat-completions の エンドポイント は 埋め込み 用のものとは異なるため、これは `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": "新しい設定"}]}]} />

true の場合 (デフォルト) 、再試行をすべて使い切っても AI 関数呼び出しが最終的に失敗すると、例外を発生させてクエリを中断します。false の場合、失敗した行にはカラム型のデフォルト値 (String の場合は空文字列) が設定され、処理は継続されます。

## 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": "新しい設定"}]}]} />

true (デフォルト) の場合、AI 関数のクォータ制限 (`ai_function_max_input_tokens_per_query`、`ai_function_max_output_tokens_per_query`、または `ai_function_max_api_calls_per_query`) を超えると、例外が発生してクエリは中止されます。false の場合、残りの行にはカラム型のデフォルト値 (String の場合は空文字列) が設定されます。クォータ制限と同様に、これは最上位クエリで設定する必要があります。サブクエリの オーバーライド は無視されます。
