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) されます。
Configuration
aiGenerate、aiClassify、aiExtract、aiTranslate) で使用する 名前付きコレクション と、異なるエンドポイントが必要で通常は異なるモデルを使用する aiEmbed 関数で使用する 名前付きコレクション を、別々に定義したい場合があります。
プロバイダーの認証情報を含む 名前付きコレクション を作成するための例のステートメントを以下に示します。1 つはチャット用エンドポイント、もう 1 つは埋め込み用エンドポイントです。
名前付きコレクションのパラメータ
provider = 'openai' を設定し、endpoint を利用するサービスに向けることで、任意の OpenAI 互換 API (例: vLLM、Ollama、LiteLLM) を使用できます。認証情報の選択
名前付きコレクション を次の順序で特定します。
- 存在する場合は、パラメータマップの
credentialsキー。 - それ以外の場合は、該当するデフォルト認証情報の設定。
- テキスト関数 (
aiGenerate、aiClassify、aiExtract、aiTranslate) ではai_function_text_default_credentials。 aiEmbedではai_function_embedding_default_credentials。
- テキスト関数 (
パラメータマップ
Map(String, String) のパラメータマップを受け取れます。すべての値は文字列です (数値も '0.2' のようにクォートしてください) 。不明なキーは受け付けられません。指定されたキーは、対応する 名前付きコレクション の値を上書きします。指定されていないキーは、名前付きコレクション (model/max_tokens の場合) または組み込みのデフォルト値が使われます。例外は aiEmbed で、model を必須の位置引数として受け取り (aiEmbed(text, model[, params]))、代わりにパラメータマップや 名前付きコレクション に設定するとエラーになります。
以下のパラメータは、すべての AI 関数に共通です。
各関数は、これに加えて関数固有の追加パラメータ (
max_tokens、temperature、system_prompt、instructions、dimensions など) を受け付けます。受け付けるパラメータとそのデフォルト値については、以下の各関数のリファレンスを参照してください。
クエリレベルの設定
ai_function_ プレフィックスで Settings に一覧表示されています。
エンドポイントホストの制限
endpoint URL は、サーバーが自身の identity で接続する送信先であり、リクエストヘッダーに named collection の api_key を (指定されている場合に) 含めて送信する可能性があります。デフォルトでは、ClickHouse はすべてのホストへの接続を許可します。関数を特定の provider 群のみに制限するには、サーバー設定で remote_url_allow_hosts を設定します。例:
転送のセキュリティ (HTTP と HTTPS)
endpoint URL のスキームのみによって決まります。リクエストのペイロード自体がアプリケーションレベルで暗号化されることはなく、転送中データの保護はスキームに完全に依存します。
https://— 接続に TLS が使用されます。リクエストボディ (入力テキスト、プロンプト) と、リクエストヘッダー内のapi_keyは転送中に暗号化され、プロバイダー の certificate も検証されます。リモートの プロバイダー には必ずこちらを使用してください。http://— 接続は暗号化されません。リクエストボディとapi_keyは平文で送信されます。これは、private network 上の信頼できる プロバイダー (例: ローカルのvLLMまたはOllamaインスタンス) に対してのみ使用してください。
http:// エンドポイント も受け入れられ、データは暗号化されないまま送信されます。現時点では、平文の AI エンドポイント を拒否する server-side の設定はありません。remote_url_allow_hosts は宛先 host のみを制限し、URL スキームは検査しないため、許可された host への http:// エンドポイント は引き続き許可されます。転送を暗号化したい場合は、https:// エンドポイント を使うように 名前付きコレクション を設定してください。
いずれの場合も、プロバイダー は TLS 終端後の入力データを平文で受け取る点に注意してください。TLS が保護するのは、server と プロバイダー の間のネットワーク経路上のデータのみです。
サポートされているプロバイダー
オブザーバビリティ
これらのイベントをクエリします。
aiClassify
{"category": "..."} 形式の JSON オブジェクトとして返された場合は、ラベルが取り出され、その文字列が返されます。
認証情報 (プロバイダー、モデル、エンドポイント、および必要に応じて API key を指定する 名前付きコレクション) は、オプションの パラメータマップ の credentials キーから取得されるか、その map で省略されている場合は ai_function_text_default_credentials 設定から取得されます。
構文
AIClassify
引数
text— 分類するテキスト。Stringcategories— 候補となるカテゴリラベルの定数リスト。Array(String)params— オプションの定数Map(String, String)パラメーター。関数固有のキー:temperature(ランダム性を制御するサンプリング温度。デフォルト0.0)、max_tokens(1 回の呼び出しあたりの最大出力トークン数。デフォルト1024)。共通パラメーターcredentialsとmodelも適用されます (AI 関数 を参照)。Map(String, String)
ai_function_throw_on_error が無効になっている場合はカラム型のデフォルト値 (空文字列) 。String
例
感情を分類
Query
Response
Query
aiEmbed
Array(Float32) として返します。
1つの block 内の行については、呼び出しごとのオーバーヘッドを減らすため、入力は
1回の HTTP request あたり最大
ai_function_embedding_max_batch_size
エントリの batches にグループ化されます。
認証情報 (provider、エンドポイント、必要に応じて API key を指定する 名前付きコレクション)
は、パラメータマップ の credentials キーから取得されるか、
map で省略されている場合は ai_function_embedding_default_credentials 設定から取得されます。aiEmbed では
テキスト関数とは別のデフォルト認証情報設定が使われる点に注意してください。これは、embeddings エンドポイント が
chat エンドポイント とは異なるためです。
model は必須の位置引数 (定数の String) です。テキスト関数とは異なり、
aiEmbed は 名前付きコレクション や パラメータマップ から model を読み取りません。model を定義する 名前付きコレクション は、
暗黙的に無視されるのではなく、拒否されます。
オプションの dimensions parameter は、モデルが対応している場合 (たとえば OpenAI’s text-embedding-3-*) 、
指定したサイズのベクトルを要求します。対応していない場合は、モデル本来のサイズが返されます。
構文
text— 埋め込み対象のテキスト。Stringmodel— 埋め込みモデル名。const Stringparams— 省略可能な定数Map(String, String)パラメーター。関数固有のキー:dimensions(出力ベクトルの目標次元数。0または省略時はモデルのネイティブのサイズを意味します) 。共通パラメーターcredentialsも使用できます (AI 関数 を参照) 。Map(String, String)
ai_function_throw_on_error が無効になっている場合、あるいは ai_function_throw_on_quota_exceeded が無効になっている状態でクォータを超過した場合は、空の配列を返します。Array(Float32)
例
単一の文字列を埋め込む (ai_function_embedding_default_credentials が設定されている場合、credentials は省略できます)
Query
Query
Query
aiExtract
'主な訴え') または
'{"field_a": "field a の説明", "field_b": "field b の説明"}' の形式の JSON エンコードされたスキーマを指定できます。
指示モードでは、この関数は抽出した値をプレーンな文字列として返し、何も見つからなかった場合は空文字列を返します。
スキーマモードでは、この関数は要求されたスキーマに対応するキーを持つ JSON オブジェクト文字列を返します。存在しないフィールドは null になります。
認証情報 (プロバイダー、model、エンドポイント、および必要に応じて API key を指定する 名前付きコレクション)
は、省略可能な パラメータマップ の credentials キーから取得されるか、
map で省略されている場合は ai_function_text_default_credentials setting から取得されます。
構文
AIExtract
引数
text— 情報を抽出するテキスト。Stringinstruction_or_schema— 自由形式の抽出指示、または抽出するフィールドを記述した定数の JSONオブジェクト。const Stringparams— オプションの定数Map(String, String)パラメーター。関数固有のキー:temperature(ランダム性を制御するサンプリング温度。デフォルト0.0)、max_tokens(1 回の呼び出しあたりの最大出力トークン数。デフォルト1024)。共通パラメーターであるcredentialsとmodelも適用されます (AI 関数 を参照)。Map(String, String)
ai_function_throw_on_error が無効になっている場合は、カラム型のデフォルト値 (空文字列) を返します。String
例
自由形式の指示
Query
Response
Query
aiGenerate
credentials キーから取得されるか、
パラメータマップで省略されている場合は ai_function_text_default_credentials 設定から取得されます。
任意のパラメータマップでは、system_prompt (モデルの
動作 (例: tone、format、role) を導く指示) 、temperature、max_tokens、model も設定できます。system_prompt が
設定されていない場合のデフォルト値は次のとおりです: You are a helpful assistant. Provide a clear and concise response.
構文
AIGenerate
引数
prompt— モデルに送信する、ユーザーのプロンプトまたは質問。Stringparams— 省略可能な定数Map(String, String)パラメータ。関数固有のキーは次のとおりです:temperature(ランダム性を制御するサンプリング温度。デフォルトは0.7) 、max_tokens(1 回の呼び出しで生成できる最大トークン数。デフォルトは1024) 、system_prompt(モデルの振る舞いを導く定数のシステムレベル命令。デフォルトは汎用的なアシスタント用プロンプト) 。共通パラメータのcredentialsとmodelも利用できます (AI 関数 を参照) 。Map(String, String)
ai_function_throw_on_error が無効になっている場合は、カラム型のデフォルト値 (空文字列) が返されます。String
例
単純な質問
Query
Response
Query
Query
aiTranslate
instructions キーで渡すことができます (例: '技術用語は翻訳しない') 。
認証情報 (provider、model、endpoint、および必要に応じて API key を指定する 名前付きコレクション)
は、省略可能なパラメータマップの credentials キーから取得され、マップでこれが省略されている場合は
ai_function_text_default_credentials 設定から取得されます。
構文
AITranslate
引数
text— 翻訳するテキスト。Stringtarget_language— 対象言語名または BCP-47 コード (例:'French','es-MX') 。Stringparams— 省略可能な定数Map(String, String)パラメータ。関数固有のキー:temperature(ランダム性を制御するサンプリング温度。デフォルトは0.3) 、max_tokens(1 回の呼び出しで生成される出力トークンの最大数。デフォルトは1024) 、instructions(翻訳向けの追加のスタイルまたは方言に関する指示) 。共通パラメータのcredentialsとmodelも使用できます (AI 関数 を参照) 。Map(String, String)
ai_function_throw_on_error が無効な場合は、カラム型のデフォルト値 (空文字列) を返します。 String
例
フランス語に翻訳
Query
Response
Query