AI 関数は Experimental です。有効にするには
allow_experimental_ai_functions を設定してください。AI 関数は予測不能な出力を返す場合があります。結果は、プロンプトの品質と使用するモデルに大きく依存します。
- クォータの適用: トークン (
ai_function_max_input_tokens_per_query,ai_function_max_output_tokens_per_query) および API 呼び出し (ai_function_max_api_calls_per_query) に対するクエリ単位の上限。 - バックオフ付き再試行: 一時的な障害は、指数バックオフ (
ai_function_retry_initial_delay_ms) を使用して再試行 (ai_function_max_retries) されます。
設定
ai_function_credentials 設定を使用します。
プロバイダー認証情報を含む名前付きコレクションを作成するステートメントの例:
ai_function_credentials 設定で、セッション単位または単一のクエリに対してコレクションを選択します。
ai_function_credentials が空の場合 (デフォルト値) 、例外がスローされます。
名前付きコレクションのパラメータ
| パラメータ | 型 | デフォルト | 説明 |
|---|---|---|---|
provider | String | — | モデルプロバイダー。サポート対象: 'openai', 'anthropic'。以下の注記を参照してください。 |
endpoint | String | — | API エンドポイント URL。 |
model | String | — | モデル名 (例: 'gpt-4o-mini', 'text-embedding-3-small') 。 |
api_key | String | — | プロバイダーの認証用キー。省略可能: 省略した場合、認証ヘッダーは送信されないため、認証を必要としない OpenAI 互換サーバーを対象にできます。 |
max_tokens | UInt64 | 1024 | API 呼び出しごとの出力トークン数の上限。 |
api_version | String | — | API バージョン文字列。Anthropic で使用されます ('2023-06-01') 。 |
provider = 'openai' を設定し、endpoint を利用するサービスに向けることで、任意の OpenAI 互換 API (例: vLLM、Ollama、LiteLLM) を使用できます。クエリレベルの設定
ai_function_credentials 設定で制御されます。その他の AI 関連の設定は、ai_function_ プレフィックスで Settings に一覧表示されています。
DEFAULT および MATERIALIZED カラムでの使用
ai_function_credentials 設定が読み取られるのは、カラムの定義時ではなく、デフォルト式の評価時です。コレクション名はカラム定義には保存されません。
allow_experimental_ai_functions と ai_function_credentials が設定されていることに加え、評価を行うユーザーがそのコレクションに対する GRANT NAMED COLLECTION を持っている必要があります (認証情報の解決時には NAMED COLLECTION へのアクセスチェックが実行されます) 。これらのいずれかが欠けていると、例外 (SUPPORT_IS_DISABLED、認証情報が空であることを示すエラー、または ACCESS_DENIED) が発生します。
DEFAULT カラムは INSERT 時に評価されるため、挿入を行うセッションまたはクエリで両方の設定を有効にしておく必要があります。
MATERIALIZED カラムは、DEFAULT カラムと同様に INSERT 時に計算され、ALTER TABLE ... MATERIALIZE COLUMN のようなミューテーションによっても再計算されます。ミューテーションはユーザーセッションの外で実行されるため、クエリの SETTINGS 句は継承しませんが、設定プロファイルの設定は継承します。ミューテーションによる再計算を正常に行うには、両方の設定を設定プロファイルに含めたうえで、テーブル所有者に NAMED COLLECTION を付与してください。
エンドポイントホストの制限
endpoint URL は、サーバーが自身の identity で接続する送信先であり、リクエストヘッダーに named collection の api_key を (指定されている場合に) 含めて送信する可能性があります。デフォルトでは、ClickHouse はすべてのホストへの接続を許可します。関数を特定の provider 群のみに制限するには、サーバー設定で remote_url_allow_hosts を設定します。例:
サポートされているプロバイダー
| プロバイダー | provider の値 | チャット関数 | 注記 |
|---|---|---|---|
| OpenAI | 'openai' | はい | デフォルトのプロバイダーです。 |
| Anthropic | 'anthropic' | はい | /v1/messages endpoint を使用します。 |
オブザーバビリティ
| ProfileEvent | Description |
|---|---|
AIAPICalls | AI provider に送信された HTTP リクエスト数。 |
AIInputTokens | 消費された入力トークンの合計数。 |
AIOutputTokens | 消費された出力トークンの合計数。 |
AIRowsProcessed | 結果が返された行数。 |
AIRowsSkipped | スキップされた行数 (クォータ超過、または ai_function_throw_on_error = 0 の場合のエラー) 。 |
aiClassify
{"category": "..."} 形式の JSON オブジェクトとして返された場合は、ラベルが取り出され、その文字列が返されます。
provider credentials と設定は、ai_function_credentials 設定で指定された named collection から取得されます。
構文
AIClassify
引数
text— 分類するテキスト。Stringcategories— 候補となるカテゴリラベルの定数リスト。Array(String)temperature— ランダム性を制御するサンプリング温度。デフォルト:0.0。Float64
ai_function_throw_on_error が無効になっている場合はカラム型のデフォルト値 (空文字列) 。String
例
感情を分類
Query
Response
Query
Response
aiEmbed
Array(Float32) として返します。
1つの行ブロック内では、呼び出しごとのオーバーヘッドを減らすため、入力は1回のHTTPリクエストあたり最大
ai_function_embedding_max_batch_size
エントリのバッチにまとめられます。
プロバイダーの認証情報と設定は、ai_function_credentials 設定で指定された named collection から取得されます。
任意の dimensions 引数は、モデルが対応している場合 (例: OpenAI’s text-embedding-3-*) 、
指定したサイズのベクトルを要求します。対応していない場合は、モデル本来のサイズが返されます。
構文
ai_function_throw_on_error が無効になっている場合、またはクォータを超過して ai_function_throw_on_quota_exceeded が無効になっている場合は、空の配列を返します。Array(Float32)
例
単一の文字列を埋め込む
Query
Response
Query
Response
Query
Response
aiExtract
'主な訴え') または
'{"field_a": "field a の説明", "field_b": "field b の説明"}' の形式の JSON エンコードされたスキーマを指定できます。
指示モードでは、この関数は抽出した値をプレーンな文字列として返し、何も見つからなかった場合は空文字列を返します。
スキーマモードでは、この関数は要求されたスキーマに対応するキーを持つ JSON オブジェクト文字列を返します。存在しないフィールドは null になります。
provider credentials と設定は、ai_function_credentials 設定で指定された named collection から取得されます。
構文
AIExtract
引数
text— 情報を抽出するテキスト。Stringinstruction_or_schema— 自由形式の抽出指示、または抽出するフィールドを記述した定数の JSONオブジェクト。const Stringtemperature— ランダム性を制御するサンプリング温度。デフォルト:0.0。const Float64
ai_function_throw_on_error が無効になっている場合は、カラム型のデフォルト値 (空文字列) を返します。String
例
自由形式の指示
Query
Response
Query
Response
aiGenerate
You are a helpful assistant. Provide a clear and concise response.
provider credentials と configuration は、ai_function_credentials setting で指定された named collection から取得されます。
構文
AIGenerate
引数
prompt— モデルに送信するユーザーのプロンプトまたは質問。Stringsystem_prompt— モデルの動作を導く任意の固定のシステムレベル命令 (例: ペルソナ、出力フォーマット) 。各プロンプトとともに送信されます。Stringtemperature— ランダム性を制御するサンプリング温度。デフォルト:0.7。Float64
ai_function_throw_on_error が無効な場合は、カラム型のデフォルト値 (空文字列) が返されます。String
例
簡単な質問
Query
Response
Query
Response
Query
Response
aiTranslate
'keep technical terms untranslated') 。
provider credentials と configuration は、ai_function_credentials setting で指定された named collection から取得されます。
構文
AITranslate
引数
text— 翻訳するテキスト。Stringtarget_language— 翻訳先言語の名前または BCP-47 コード (例:'French'、'es-MX') 。Stringinstructions— 翻訳者への追加指示 (任意の定数) 。Stringtemperature— ランダム性を制御するサンプリング温度。デフォルト:0.3。Float64
ai_function_throw_on_error が無効な場合はカラム型のデフォルト値 (空文字列) 。String
例
フランス語に翻訳
Query
Response
Query
Response