Models reference
================

AIDBのすべてのモデル関連のファンクションとビューのリファレンス。ガイドスタイルのドキュメントについては、
:ref:`Integrating models <Integrating models>`  を参照してください。

構成モデル
----------

モデルの動作は2つの方法で制御され、特定の設定でどちらを使用するかが重要です。

- **Creation-time ``config``** — プロバイダー固有の :ref:`モデル構成ヘルパー <モデル構成ヘルパー>` 
  ``aidb.bert_config()`` 、\ ``aidb.completions_config()``
  などを使用して、\ ``aidb.create_model()``
  を呼び出したときに設定されます。これは、モデルの永続的な保存された構成です。

- **Call-time ``inference_config``** —
  オプションの呼び出しごとのオーバーライド。
  :ref:`quietb.inference_config() <quietb.inference_config()>` でビルドされ、推論ファンクションに直接渡されます。その1つの呼び出しのみについてモデルに保存されている構成をオーバーライドします。オーバーライドしないものは、作成時に設定された値にフォールバックします。

一部の推論ファンクションのみが呼び出し時オーバーライドを受け入れます。残りはモデルの作成時の\ ``config``
によって完全に修正されます。

.. csv-table::
  :header: Function,Call-time override?
  :widths: 25,20
  :align: left
  :class: longtable

  "`aidb.generate_text()`, `aidb.generate_text_batch()`",Yes — pass `aidb.inference_config()` (or raw JSON) as the `inference_config` argument.
  "`aidb.summarize_text()`, `aidb.summarize_text_aggregate()`",Yes — via the `inference_config` field of  :ref:`AI pipelines <Functions reference>` .
  "`aidb.encode_text()`, `aidb.encode_text_batch()`, `aidb.encode_image()`",No. Behavior is fixed by `config` at creation time.
  `aidb.rerank_text()`,No. Behavior is fixed by `config` at creation time.
  `aidb.perform_ocr()`,"No — its `options` parameter only selects which registered model to run, not inference settings."

この非対称は、各機能のニーズに従っています。テキスト生成には、呼び出しごとに調整する価値のあるランタイムノブがあります温度、システムプロンプトなど。埋め込み、リランキング、およびOCRは行わないため、オーバーライドするものはありません。

カタログビュー
--------------

helpb.model_providers
^^^^^^^^^^^^^^^^^^^^^

システムに登録されている使用可能なモデルプロバイダーをすべてリストします。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `server_name`,name,モデルプロバイダーの名前
  `server_description`,text,プロバイダーの説明
  `server_options`,text[],使用可能な構成オプション

helpb.models
^^^^^^^^^^^^

デフォルトおよびユーザー作成のモデルを含む、レジストリ内のすべてのモデルをリストします。

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,text,モデルのユーザー定義の名前
  `provider`,text,モデルプロバイダー名
  `options`,text[],モデルの設定済みオプション
  `functions`,text[],モデルのプロバイダーがサポートする内部機能識別子たとえば `aidb-openai-text-embeddings`、`aidb-openai-text-completion`

例
^^

.. code:: sql

   SELECT * FROM aidb.models;

   __OUTPUT__
     name  |  provider  |    options    |                      functions
   - -------+------------+---------------+-------------------------------------------------------
    bert   | bert_local | {"config={}"} | {aidb-openai-text-embeddings}
    clip   | clip_local | {"config={}"} | {aidb-openai-text-image-embeddings}
    t5     | t5_local   | {"config={}"} | {aidb-openai-text-embeddings,aidb-openai-text-completion}
   (3 rows)

--------------

モデル管理機能
--------------

promoteb.create_model
^^^^^^^^^^^^^^^^^^^^^

新しいモデルをAIDBモデルレジストリに登録します。

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `name`,TEXT,Required,モデルの一意の名前。
  `provider`,TEXT,Required,プロバイダー名 `aidb.model_providers`を参照してください。
  `config`,JSONB,`'{}'`,プロバイダー固有の構成。  :ref:`モデル構成ヘルパー<モデル構成ヘルパー>` でビルドします。
  `credentials`,JSONB,`'{}'`,"プロバイダーの資格情報たとえば `{""api_key"": ""...""}` 。"
  `replace_credentials`,BOOLEAN,`false`,`true`の場合、モデルを再作成せずに保存されている資格情報を更新します。
  `validate`,BOOLEAN,`true`,`true`の場合、作成時にモデルをプローブして、機能していることを確認します。  :ref:`検証<検証>` を参照してください。
  `credentials_env`,TEXT,NULL,資格情報を保存する代わりに、読み取る環境変数の名前。  :ref:`環境変数からの資格情報<環境変数からの資格情報>` を参照してください。 `credentials`と相互排他的。

環境変数からの資格情報
^^^^^^^^^^^^^^^^^^^^^^

!!!note
プロバイダーのAPIキーまたはパスワードをデータベーステーブルにまったく置いたくないですか、許可が制限されている場合でも。
``credentials`` の代わりに\ ``credentials_env``
を渡し、資格情報を読み取るPostgres環境変数を名前付けます。変数の *名前*
のみが保存されます。値自分自身は、モデルが使用されるたびにPostgresバックエンドプロセスの環境から新しく読み取られ、データベースに永続化されることはありません。

``credentials`` オブジェクトの代わりに変数名を渡します。

.. code:: sql

   SELECT aidb.create_model(
       name            => my_openai,
       provider        => openai_embeddings,
       config          => aidb.embeddings_config(model => text-embedding-3-small),
       credentials_env => AIDB_OPENAI_API_KEY
   );

参照される変数は、ベアシークレット ``api_key``
として使用またはJSONオブジェクト ``{"basic_auth": "..."}`` など
``credentials`` 自分自身が受け入れるのと同じ形状を保持できます。
``credentials`` および\ ``credentials_env``
は相互排他的です。両方を渡すとエラーが発生します。

セキュリティのため、環境変数の名前は :ref:`aidb.env_var_allowed_prefix <Configuring AIDB>` デフォルトでは\ ``AIDB_``
で構成されたプレフィックスで始まる必要があります。これにより、モデルまたはMCPサーバー構成がPostgresホストで任意の無関係の環境変数を命名し、その値を抽出するのを防ぎます。同じメカニズムと同じGUCがMCPサーバー認証に適用されます。
:ref:`headers_env <Tools reference>` を参照してください。

TLS構成
^^^^^^^

HTTPSモデルエンドポイントに接続するには、\ ``config``
内に\ ``tls_config`` フィールドを含めます。

.. code:: json

   "tls_config": {
     "insecure_skip_verify": true,
     "ca_path": "/etc/aidb/myCA.pem"
   }

検証
^^^^

デフォルト\ ``validate => true`` では、\ ``aidb.create_model()``
は登録がコミットする前に最小限のプローブ推論を実行し、モデルが機能していることを確認します。

- **ローカルモデル**
  がダウンロードされてロードされ、テスト推論が実行されるため、不正なモデル識別子またはロード不可の重みは、最初に使用するときではなく作成時に失敗します。

- **外部モデル**
  は小さなテスト要求を受信します。したがって、無効なAPIキー、間違ったURL、または到達不能なエンドポイントがすぐにキャッチされます。

プローブが失敗した場合、\ ``aidb.create_model()``
はエラーを発生させ、何も登録しません。 ``validate => false``
を渡してプローブをスキップします。たとえば、大規模なダウンロードを最初に使用するまで延期したり、エンドポイントまたは資格情報が利用できる前にモデルを登録したりします。モデルは後で
:ref:`aidb.validate_model() <#aidbvalidate_model>`  を使用して検証できます。

.. _例-1:

例
^^

.. code:: sql

   - - Minimal registration
   SELECT aidb.create_model(my_t5, t5_local);

   - - With config and credentials
   SELECT aidb.create_model(
       name        => my_t5,
       provider    => t5_local,
       config      => {"param1": "value1"}::JSONB,
       credentials => {"token": "abcd"}::JSONB
   );

   - - Rotate credentials without re-creating
   SELECT aidb.create_model(
       name                => my_openai,
       provider            => openai_embeddings,
       config              => aidb.embeddings_config(model => text-embedding-3-small),
       credentials         => {"api_key": "<new-key>"}::JSONB,
       replace_credentials => true
   );

--------------

promoteb.get_model
^^^^^^^^^^^^^^^^^^

登録されたモデルの構成を返します。

.. _パラメーター-1:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `model_name`,TEXT,取得するモデルの名前。

返品
^^^^

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,text,モデル名
  `provider`,text,プロバイダー名
  `options`,text[],設定されたオプション

.. _例-2:

例
^^

.. code:: sql

   SELECT * FROM aidb.get_model(t5);

   __OUTPUT__
    name | provider |    options
   - -----+----------+---------------
    t5   | t5_local | {"config={}"}
   (1 row)

--------------

promoteb.delete_model
^^^^^^^^^^^^^^^^^^^^^

レジストリからモデルを削除します。次に実行されるまで、それを参照するパイプラインまたはナレッジベースには影響しません。

.. _パラメーター-2:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `model_name`,TEXT,削除するモデルの名前。

.. _返品-1:

返品
^^^^

削除されたモデルの名前、プロバイダー、およびオプション。

.. _例-3:

例
^^

.. code:: sql

   SELECT aidb.delete_model(t5);

   __OUTPUT__
        delete_model
   - --------------------------------
    (t5,t5_local,"{""config={}""}")
   (1 row)

--------------

promoteb.validate_model
^^^^^^^^^^^^^^^^^^^^^^^

登録されたモデルをプローブして、最小限のテスト推論を実行して、機能していることを確認します。
``validate => false`` 以外の場合、 ``aidb.create_model()``
によって自動的に呼び出されます。直接呼び出して、既存のモデルを再チェックすることもできます。

.. _パラメーター-3:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `model_name`,TEXT,検証するモデルの名前。

.. _返品-2:

返品
^^^^

``TEXT`` — プローブされたモデル機能たとえば ``text embedding``
、\ ``language`` 、\ ``reranking`` 、\ ``image embedding``
、または\ ``OCR`` など。プローブが失敗した場合にエラーを発生します。

.. _例-4:

例
^^

.. code:: sql

   SELECT aidb.validate_model(my_bert);

   __OUTPUT__
    validate_model
   - ---------------
    text embedding
   (1 row)

--------------

HCPモデルファンクション
-----------------------

これらの機能は、EDB Hybrid ManagerHMで実行されているモデルを管理します。

promoteb.list_hcp_models
^^^^^^^^^^^^^^^^^^^^^^^^

HMで現在実行されているモデルをリストします。

.. _返品-3:

返品
^^^^

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,text,HCPでのモデルインスタンス名
  `url`,text,APIエンドポイントURL
  `model`,text,モデル識別子

.. _例-5:

例
^^

.. code:: sql

   SELECT * FROM aidb.list_hcp_models();

   __OUTPUT__
                name              |                         url                          |            model
   - ------------------------------+------------------------------------------------------+------------------------------
    llama-3-1-8b-instruct-1xgpu   | http://llama-3-1-8b-predictor.default.svc.local      | meta/llama-3.1-8b-instruct
   (1 row)

--------------

promoteb.create_hcp_model
^^^^^^^^^^^^^^^^^^^^^^^^^

実行中のインスタンス名を参照することにより、HCPホストモデルを登録します。

.. _パラメーター-4:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `name`,TEXT,AIDB内のモデルのユーザー定義の名前。
  `hcp_model_name`,TEXT,HCPで実行されているモデルインスタンスの名前。

--------------

promoteb.sync_hcp_models
^^^^^^^^^^^^^^^^^^^^^^^^

AIDBモデルレジストリを、現在HCPで実行されているモデルと同期します。新しいHCPモデルのエントリを作成し、そこで実行されなくなったモデルのエントリを削除します。

.. _返品-4:

返品
^^^^

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `status`,text,`created`、`deleted`、`unchanged`、または`skipped`
  `model`,text,同期モデルの名前

--------------

推論ファンクション
------------------

!!!note ``aidb.generate_text()`` および\ ``aidb.generate_text_batch()``
の以前の名前は\ ``aidb.decode_text()``
および\ ``aidb.decode_text_batch()``
でした。古い名前はまだ機能しますが、非推奨であり、将来のバージョンで削除されます。新しいコードでは新しい名前を使用します。

helpb.encode_text
^^^^^^^^^^^^^^^^^

指定されたモデルを使用して、単一のテキスト文字列をベクトルにエンコードします。

.. _パラメーター-5:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `model_name`,TEXT,登録されているモデルの名前。
  `input`,TEXT,エンコードするテキスト。

.. _返品-5:

返品
^^^^

``real[]`` —入力テキストの埋め込み。 ``vector``
にキャストしてpgvector演算子で使用します。

.. _例-6:

例
^^

.. code:: sql

   SELECT aidb.encode_text(bert_local, The quick brown fox);

--------------

helpb.encode_text_batch
^^^^^^^^^^^^^^^^^^^^^^^

1回の呼び出しでテキスト文字列の配列をベクトルにエンコードします。

.. _パラメーター-6:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `model_name`,TEXT,登録されているモデルの名前。
  `input`,TEXT[],エンコードする文字列の配列。

.. _返品-6:

返品
^^^^

``SETOF real[]`` —
入力ごとに1行、入力オーダー。結果列の名前は\ ``encode_text_batch``
です。

.. _例-7:

例
^^

.. code:: sql

   SELECT * FROM aidb.encode_text_batch(bert_local, ARRAY[The quick brown fox, Lorem ipsum dolor sit amet]);

--------------

promoteb.encode_image
^^^^^^^^^^^^^^^^^^^^^

マルチモーダルモデルCLIPなどを使用して、バイナリイメージをベクトルにエンコードします。

.. _パラメーター-7:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `model_name`,TEXT,登録されているモデルの名前。
  `input`,BYTEA,Raw画像バイト。

.. _返品-7:

返品
^^^^

``real[]`` —入力画像の埋め込み。 ``vector``
にキャストしてpgvector演算子で使用します。

.. _例-8:

例
^^

.. code:: sql

   SELECT aidb.encode_image(clip_local, pg_read_binary_file(/tmp/photo.jpg)::BYTEA);

--------------

promoteb.generate_text
^^^^^^^^^^^^^^^^^^^^^^

指定されたモデルを使用して、プロンプトからテキスト応答を生成します。

.. _パラメーター-8:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model_name`,TEXT,Required,登録されているモデルの名前。
  `input`,TEXT,Required,テキストプロンプトまたは入力。
  `inference_config`,JSON,NULL,実行時推論設定。  :ref:``aidb.inference_config()` <#aidbinference_config>` を使用します。結果を`json`にキャストします。

.. _返品-8:

返品
^^^^

``TEXT`` — 生成されたレスポンス

.. _例-9:

例
^^

.. code:: sql

   - - Basic usage
   SELECT aidb.generate_text(t5_local, translate to French: Hello, world.);

   - - With inference configuration
   SELECT aidb.generate_text(
       my_llama,
       Explain quantum computing in one sentence.,
       aidb.inference_config(
           system_prompt => Be concise and factual.,
           temperature   => 0.7,
           max_tokens    => 100
       )::json
   );

--------------

helpb.generate_text_batch
^^^^^^^^^^^^^^^^^^^^^^^^^

1回の呼び出しで一連のプロンプトに対するテキスト応答を生成します。

.. _パラメーター-9:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model_name`,TEXT,Required,登録されているモデルの名前。
  `input`,TEXT[],Required,テキストプロンプトの配列。
  `inference_config`,JSON,NULL,実行時推論設定。  :ref:``aidb.inference_config()` <#aidbinference_config>` を使用します。結果を`json`にキャストします。

.. _返品-9:

返品
^^^^

``SETOF TEXT`` —
入力プロンプトごとに1行、入力順。結果列の名前は\ ``generate_text_batch``
です。

.. _例-10:

例
^^

.. code:: sql

   SELECT aidb.generate_text_batch(t5_local, ARRAY[
       translate to German: hello,
       translate to German: goodbye
   ]);

--------------

helpb.rerank_text
^^^^^^^^^^^^^^^^^

リランキングモデルを使用して、クエリに対してテキスト入力セットをスコアリングおよびランク付けします。

.. _パラメーター-10:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model_name`,TEXT,Required,登録されたリランキングモデルの名前。
  `query`,TEXT,Required,入力をランク付けするクエリー。
  `input`,TEXT[],`[]`,ランク付けの候補テキストの配列。

.. _返品-10:

返品
^^^^

.. csv-table::
  :header: Column,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `text`,text,候補テキスト
  `logit_score`,double precision,関連性スコア高いほど関連性が高い
  `id`,int,入力配列内のテキストの元のインデックス

.. _例-11:

例
^^

.. code:: sql

   SELECT * FROM aidb.rerank_text(
       my_reranker,
       How do I configure AIDB?,
       ARRAY[
           AIDB requires shared_preload_libraries.,
           Postgres supports JSON natively.,
           Run CREATE EXTENSION aidb CASCADE to install.
       ]
   ) ORDER BY logit_score DESC;

--------------

推論構成ヘルパー
----------------

helpb.inference_config
^^^^^^^^^^^^^^^^^^^^^^

ランタイム推論設定のJSONB構成オブジェクトをビルドします。結果\ ``json``
へのキャストを\ ``aidb.generate_text()``
、\ ``aidb.generate_text_batch()`` に渡すか、
``aidb.summarize_text_config()`` で使用します。

すべてのパラメーターはオプショナル - 必要ないものは省略します。

.. _パラメーター-11:

パラメーター
^^^^^^^^^^^^

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `system_prompt`,TEXT,NULL,要求の前に追加されるシステムプロンプト。 T5モデルではサポートされていません。
  `temperature`,DOUBLE PRECISION,NULL,サンプリング温度。 `0.0`は決定的です。値が高いほど多様性が増します。
  `max_tokens`,INTEGER,NULL,生成する最大トークン。
  `top_p`,DOUBLE PRECISION,NULL,nucleusサンプリングしきい値。
  `seed`,BIGINT,NULL,再現可能な出力のランダムシード。
  `repeat_penalty`,REAL,NULL,トークンを繰り返す場合のペナルティ。 `1.0` =ペナルティなし。 NIMまたはOpenAIではサポートされていません。
  `repeat_last_n`,INTEGER,NULL,`repeat_penalty`と考えられる最近のトークンの数。 NIMまたはOpenAIではサポートされていません。
  `thinking`,BOOLEAN,NULL,`<think>`タグの処理を制御します。 `true`/`NULL`はタグを保持します。 `false`はそれらを削除します。
  `extra_args`,JSONB,NULL,APIに直接渡される追加のプロバイダー固有の引数。

.. _返品-11:

返品
^^^^

``JSONB`` — 推論ファンクションに渡す前に\ ``::json`` にキャストします。

.. _例-12:

例
^^

.. code:: sql

   - - With temperature and token limit
   SELECT aidb.generate_text(
       my_llama,
       What is machine learning?,
       aidb.inference_config(temperature => 0.5, max_tokens => 150)::json
   );

   - - Full configuration
   SELECT aidb.generate_text(
       my_llama,
       Explain relativity.,
       aidb.inference_config(
           system_prompt  => You are a physics professor. Be precise.,
           temperature    => 0.3,
           max_tokens     => 200,
           top_p          => 0.9,
           seed           => 42,
           repeat_penalty => 1.1
       )::json
   );

   - - Hide reasoning tags from a thinking model
   SELECT aidb.generate_text(
       my_reasoning_model,
       Solve: 2x + 5 = 15,
       aidb.inference_config(thinking => false)::json
   );

ツール呼び出しと構造化出力
^^^^^^^^^^^^^^^^^^^^^^^^^^

さらに3つの推論設定が存在しますが、 ``aidb.inference_config()``
の名前付けパラメーターとして公開されていません。代わりに生のJSONとしてビルドし、他の設定も必要な場合は\ ``||``
を使用してヘルパーの出力とマージします。 **``llamacpp_generate``
、\ ``openai_responses`` + ``openai_responses_azure``
、および\ ``anthropic_messages`` + ``anthropic_messages_azure``
/``anthropic_messages_bedrock`` のみがこれらを尊重します**
。他のすべてのプロバイダーはそれらを拒否します。

.. csv-table::
  :header: Field,Type,Description
  :widths: 12,15,25
  :align: left
  :class: longtable

  `tools`,JSONB array,OpenAI互換の`tools`配列 — モデルが呼び出すことができるファンクション定義。
  `tool_choice`,JSONB,"OpenAI互換`tool_choice` 特定のツールを強制するための文字列`""auto""`、`""required""`、または`""none""`、または`{""type"": ""function"", ""function"": {""name"": ""...""}}`。"
  `response_format`,JSONB,"構造化された出力。 `{""type"": ""json_schema"", ""json_schema"": {""schema"": {...}}}`は、レスポンスをJSONスキーマにコンストレインします。 `openai_responses`および`anthropic_messages`およびそれらのバリアントでの`tools`/`tool_choice`と相互排他的。"

!!!note ``openai_responses`` および\ ``anthropic_messages``
およびそれらのAzure/Bedrockバリアントは、これらを各APIのネイティブ\ ``tools``
/``tool_choice``
要求フィールドにマッピングし、実際のツールコール応答を解析します。
:ref:`OpenAI Responses API <OpenAI Responses API>` および :ref:`Anthropic Messages API <Anthropic Messages API>` を参照してください。他のすべてのリモートプロバイダー
``openai_completions`` 、\ ``gemini`` 、\ ``nim_completions`` などは、
``tools`` /``tool_choice`` /``response_format``
を完全に拒否します。この拒否は、 ``aidb.generate_text()``
のような直接呼び出しにのみ適用されます。これらのプロバイダー
``t5_local`` を除く は、引き続き :ref:`Agents reference <Agents reference>` 
をバッキングできます。エージェントフレームワークは、これらの3つのフィールドを使用するのではなく、プロンプトに記述しモデルの応答を解析することにより、ツール呼び出しのシミュレーションにフォールバックします。

.. code:: sql

   - - Tool calling
   SELECT aidb.generate_text(
       my_llamacpp_chat,
       What is the weather in Paris?,
       (aidb.inference_config(temperature => 0.2) || jsonb_build_object(
           tools, jsonb_build_array(
               jsonb_build_object(
                   type, function,
                   function, jsonb_build_object(
                       name, get_weather,
                       description, Get current weather for a city,
                       parameters, jsonb_build_object(
                           type, object,
                           properties, jsonb_build_object(city, jsonb_build_object(type, string)),
                           required, jsonb_build_array(city)
                       )
                   )
               )
           ),
           tool_choice, auto
       ))::json
   );

   - - Structured output
   SELECT aidb.generate_text(
       my_llamacpp_chat,
       Extract the city from: I live in Paris.,
       jsonb_build_object(
           response_format, jsonb_build_object(
               type, json_schema,
               json_schema, jsonb_build_object(
                   schema, jsonb_build_object(
                       type, object,
                       properties, jsonb_build_object(city, jsonb_build_object(type, string)),
                       required, jsonb_build_array(city)
                   )
               )
           )
       )::json
   );

--------------

モデル構成ヘルパー
------------------

これらのファンクションは、 ``aidb.create_model()`` の\ ``config``
パラメーターの\ ``JSONB``
構成オブジェクトを結果ます。各ヘルパーは、特定のモデルプロバイダーに対応します。

promoteb.embeddings_config
^^^^^^^^^^^^^^^^^^^^^^^^^^

``openai_embeddings`` およびOpenAI互換の埋め込みエンドポイントの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,モデル識別子。
  `api_key`,TEXT,NULL,APIキー。
  `url`,TEXT,NULL,エンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本認証 `user:password`
  `max_concurrent_requests`,INTEGER,NULL,最大同時要求。
  `max_batch_size`,INTEGER,NULL,バッチごとの最大入力数。
  `input_type`,TEXT,NULL,入力タイプのヒントプロバイダー固有。
  `input_type_query`,TEXT,NULL,クエリ入力タイプのヒントプロバイダー固有。
  `tls_config`,JSONB,NULL,TLS構成。
  `is_hcp_model`,BOOLEAN,NULL,`true` モデルがHCPで実行される場合。

.. _例-13:

例
^^

.. code:: sql

   SELECT aidb.create_model(
       my_embedder,
       openai_embeddings,
       config => aidb.embeddings_config(
           model   => text-embedding-3-small,
           api_key => sk-...,
           url     => https://api.openai.com/v1
       )
   );

--------------

promoteb.completions_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^

``openai_completions``
およびOpenAI互換のコンプリートエンドポイントの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,モデル識別子。
  `api_key`,TEXT,NULL,APIキー。
  `url`,TEXT,NULL,エンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本認証 `user:password`
  `system_prompt`,TEXT,NULL,デフォルトのシステムプロンプト。
  `temperature`,DOUBLE PRECISION,NULL,サンプリング温度。
  `top_p`,DOUBLE PRECISION,NULL,nucleusサンプリングしきい値。
  `seed`,BIGINT,NULL,ランダムシード。
  `thinking`,BOOLEAN,NULL,`<think>`タグの処理。
  `max_tokens`,JSONB,NULL,最大トークン構成  :ref:``aidb.max_tokens_config()` <#aidbmax_tokens_config>` を使用します。
  `max_concurrent_requests`,INTEGER,NULL,最大同時要求。
  `extra_args`,JSONB,NULL,追加のプロバイダー固有の引数。
  `is_hcp_model`,BOOLEAN,NULL,`true` モデルがHCPで実行される場合。

.. _例-14:

例
^^

.. code:: sql

   SELECT aidb.create_model(
       my_llm,
       openai_completions,
       config => aidb.completions_config(
           model       => gpt-4o,
           api_key     => sk-...,
           temperature => 0.2
       )
   );

!!!note
OpenAIモデルを呼び出す信頼性の高いネイティブツールでエージェントを使用する場合、代わりに :ref:`promoteb.openai_responses_config <promoteb.openai_responses_config>` を使用します。2つのプロバイダーの違いについては :ref:`ツール呼び出しと構造化出力 <ツール呼び出しと構造化出力>` を参照し、いずれか一方を中心にエージェントを構築するには :ref:`Agents reference <Agents reference>` を参照してください。

--------------

promoteb.max_tokens_config
^^^^^^^^^^^^^^^^^^^^^^^^^^

``aidb.completions_config()`` で使用する\ ``max_tokens``
オブジェクトをビルドします。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `size`,INTEGER,Required,生成する最大トークン。
  `format`,TEXT,NULL,形式 `'default'`、`'legacy'`、または`'both'`

.. _例-15:

例
^^

.. code:: sql

   SELECT aidb.completions_config(
       model      => gpt-4o,
       max_tokens => aidb.max_tokens_config(size => 1024, format => default)
   );

--------------

promoteb.bert_config
^^^^^^^^^^^^^^^^^^^^

``bert_local`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,HuggingFaceモデル識別子。
  `revision`,TEXT,NULL,モデルのリビジョンまたはブランチ。
  `cache_dir`,TEXT,NULL,ローカルキャッシュディレクトリ。

.. _例-16:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_bert, bert_local,
       config => aidb.bert_config(sentence-transformers/all-MiniLM-L6-v2));

--------------

promoteb.clip_config
^^^^^^^^^^^^^^^^^^^^

``clip_local`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,HuggingFaceモデル識別子。
  `revision`,TEXT,NULL,モデルのリビジョンまたはブランチ。
  `cache_dir`,TEXT,NULL,ローカルキャッシュディレクトリ。
  `image_size`,INTEGER,NULL,ピクセル単位の入力画像サイズ。

.. _例-17:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_clip, clip_local,
       config => aidb.clip_config(openai/clip-vit-base-patch32));

--------------

promoteb.llama_config
^^^^^^^^^^^^^^^^^^^^^

``llama_instruct_local`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,モデル識別子またはHuggingFaceパス。
  `revision`,TEXT,NULL,モデルリビジョン。
  `cache_dir`,TEXT,NULL,ローカルキャッシュディレクトリ。
  `model_path`,TEXT,NULL,モデルの重みへの明示的なローカルパス `model`をオーバーライドします。
  `system_prompt`,TEXT,NULL,デフォルトのシステムプロンプト。
  `temperature`,DOUBLE PRECISION,NULL,サンプリング温度。
  `top_p`,DOUBLE PRECISION,NULL,nucleusサンプリングしきい値。
  `seed`,BIGINT,NULL,ランダムシード。
  `sample_len`,INTEGER,NULL,生成する最大トークン。
  `repeat_penalty`,REAL,NULL,リピートペナルティ。
  `repeat_last_n`,INTEGER,NULL,反復ペナルティの対象とされるトークン。
  `use_flash_attention`,BOOLEAN,NULL,フラッシュアテンションを有効にします。
  `use_kv_cache`,BOOLEAN,NULL,KVキャッシュを有効にします。

.. _例-18:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_llama, llama_instruct_local,
       config => aidb.llama_config(
           meta-llama/Llama-3.2-3B-Instruct,
           temperature => 0.5
       )
   );

--------------

promoteb.t5_config
^^^^^^^^^^^^^^^^^^

``t5_local`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,モデル識別子またはHuggingFaceパス。
  `revision`,TEXT,NULL,モデルリビジョン。
  `model_path`,TEXT,NULL,モデルの重みへの明示的なローカルパス。
  `cache_dir`,TEXT,NULL,ローカルキャッシュディレクトリ。
  `temperature`,DOUBLE PRECISION,NULL,サンプリング温度。
  `top_p`,DOUBLE PRECISION,NULL,nucleusサンプリングしきい値。
  `seed`,BIGINT,NULL,ランダムシード。
  `max_tokens`,INTEGER,NULL,生成する最大トークン。
  `repeat_penalty`,REAL,NULL,リピートペナルティ。
  `repeat_last_n`,INTEGER,NULL,反復ペナルティの対象とされるトークン。

.. _例-19:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_t5, t5_local,
       config => aidb.t5_config(google/flan-t5-base));

--------------

promoteb.gemini_config
^^^^^^^^^^^^^^^^^^^^^^

``gemini`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,Required,Google APIキー。
  `model`,TEXT,NULL,Geminiモデル識別子たとえば `gemini-2.0-flash` 。
  `url`,TEXT,NULL,APIエンドポイントのオーバーライド。
  `max_concurrent_requests`,INTEGER,NULL,最大同時要求。
  `thinking_budget`,INTEGER,NULL,拡張思考トークンの予算Gemini 2.xのみ。

.. _例-20:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_gemini, gemini,
       config => aidb.gemini_config(AIza..., model => gemini-2.0-flash));

!!!note 他のリモートプロバイダーとは異なり、Geminiの\ ``api_key`` は、
``aidb.create_model()`` の別個の\ ``credentials``
パラメーターを介して渡されるのではなく、\ ``config``
のプレーンフィールドです。これは、より制限された資格情報ストアではなく、モデルの構成の一部として保存されます。表示するキーよりも多くのロールに\ ``aidb.models.options``
が可視されている場合に注意してください。

--------------

promoteb.nim_clip_config
^^^^^^^^^^^^^^^^^^^^^^^^

``nim_clip`` プロバイダーNVIDIA NIMマルチモーダル埋め込みの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,NULL,NIM APIキー。
  `model`,TEXT,NULL,NIM CLIPモデル識別子。
  `url`,TEXT,NULL,NIMエンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報。
  `is_hcp_model`,BOOLEAN,NULL,`true` モデルがHCPで実行される場合。

.. _例-21:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_nim_clip, nim_clip,
       config => aidb.nim_clip_config(api_key => nvapi-..., model => nvidia/nvclip));

--------------

promoteb.nim_ocr_config
^^^^^^^^^^^^^^^^^^^^^^^

``nim_ocr`` プロバイダーNVIDIA NIM OCRの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,NULL,NIM APIキー。
  `model`,TEXT,NULL,NIM OCRモデル識別子。
  `url`,TEXT,NULL,NIMエンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報。
  `is_hcp_model`,BOOLEAN,NULL,`true` モデルがHCPで実行される場合。

.. _例-22:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_nim_ocr, nim_ocr,
       config => aidb.nim_ocr_config(api_key => nvapi-...));

--------------

promoteb.nim_reranking_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``nim_reranking`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `api_key`,TEXT,NULL,NIM APIキー。
  `model`,TEXT,NULL,NIMリランキングモデル識別子。
  `url`,TEXT,NULL,NIMエンドポイントURLのオーバーライド。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報。
  `is_hcp_model`,BOOLEAN,NULL,`true` モデルがHCPで実行される場合。

.. _例-23:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_reranker, nim_reranking,
       config => aidb.nim_reranking_config(
           api_key => nvapi-...,
           model   => nvidia/nv-rerankqa-mistral-4b-v3
       )
   );

--------------

promoteb.openrouter_chat_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``openrouter_chat`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,OpenRouterモデル識別子。
  `api_key`,TEXT,NULL,OpenRouter APIキー。
  `url`,TEXT,NULL,APIエンドポイントのオーバーライド。
  `max_concurrent_requests`,INTEGER,NULL,最大同時要求。
  `max_tokens`,JSONB,NULL,最大トークン構成  :ref:``aidb.max_tokens_config()` <#aidbmax_tokens_config>` を使用します。

.. _例-24:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_or_chat, openrouter_chat,
       config => aidb.openrouter_chat_config(
           anthropic/claude-3-5-haiku,
           api_key => sk-or-...
       )
   );

--------------

promoteb.openrouter_embeddings_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``openrouter_embeddings`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,OpenRouterエンベディングモデル識別子。
  `api_key`,TEXT,NULL,OpenRouter APIキー。
  `url`,TEXT,NULL,APIエンドポイントのオーバーライド。
  `max_concurrent_requests`,INTEGER,NULL,最大同時要求。
  `max_batch_size`,INTEGER,NULL,バッチごとの最大入力数。

.. _例-25:

例
^^

.. code:: sql

   SELECT aidb.create_model(my_or_embedder, openrouter_embeddings,
       config => aidb.openrouter_embeddings_config(
           mistral/mistral-embed,
           api_key => sk-or-...
       )
   );

--------------

promoteb.openai_responses_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``openai_responses`` および\ ``openai_responses_azure``
プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,モデル識別子たとえば `gpt-5.1` 。
  `api_key`,TEXT,NULL,認証用のAPIキー。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報 `user:password` 。
  `url`,TEXT,NULL,APIエンドポイントURL。 `openai_responses`のOpenAIのResponsesエンドポイントのデフォルト。 `openai_responses_azure`に必要な普遍的なデフォルトなし-リソースのエンドポイントを使用します。
  `max_concurrent_requests`,INTEGER,`25`,エンドポイントへの最大同時要求。
  `system_prompt`,TEXT,NULL,デフォルトのシステムプロンプト、 Responses APIのネイティブ`instructions`フィールドを介して送信されます。
  `temperature`,DOUBLE PRECISION,NULL,サンプリング温度。
  `max_output_tokens`,INTEGER,NULL,生成する最大トークン。
  `top_p`,DOUBLE PRECISION,NULL,nucleusサンプリングしきい値。
  `extra_args`,JSONB,NULL,APIに直接渡される追加のプロバイダー固有の引数。

.. _例-26:

例
^^

.. code:: sql

   - - OpenAI
   SELECT aidb.create_model(
       my_gpt,
       openai_responses,
       config      => aidb.openai_responses_config(model => gpt-5.1),
       credentials => {"api_key": "sk-..."}::JSONB
   );

   - - Azure AI Foundry
   SELECT aidb.create_model(
       my_gpt_azure,
       openai_responses_azure,
       config      => aidb.openai_responses_config(
           model => gpt-5.1,
           url   => https://<resource>.openai.azure.com/openai/v1/responses
       ),
       credentials => {"api_key": "..."}::JSONB
   );

このプロバイダーは、 :ref:`ツール呼び出しと構造化出力 <ツール呼び出しと構造化出力>` で説明されている\ ``tools``
、\ ``tool_choice`` 、および\ ``response_format``
フィールドをネイティブにサポートしています。

--------------

helpb.anthropic_messages_config
^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^^

``anthropic_messages`` 、\ ``anthropic_messages_azure``
、および\ ``anthropic_messages_bedrock`` プロバイダーの場合。

.. csv-table::
  :header: Parameter,Type,Default,Description
  :widths: 15,12,12,20
  :align: left
  :class: longtable

  `model`,TEXT,Required,モデル識別子たとえば、`claude-opus-4-6`、またはBedrockバリアントのBedrockモデルIDなど。
  `api_key`,TEXT,NULL,認証用のAPIキー。 `anthropic_messages_bedrock`の場合、これはBedrock APIキーベアラートークンであり、AWS SigV4資格情報ではありません。
  `basic_auth`,TEXT,NULL,基本的な認証資格情報 `user:password` 。
  `url`,TEXT,NULL,APIエンドポイントURL。 `anthropic_messages`のデフォルトは`api.anthropic.com`です。 `anthropic_messages_azure`リソースのメッセージエンドポイントと`anthropic_messages_bedrock`リージョンの`bedrock-runtime`ベースエンドポイント-モデルIDは自動的に追加されます。
  `max_concurrent_requests`,INTEGER,`25`,エンドポイントへの最大同時要求。
  `system_prompt`,TEXT,NULL,デフォルトのシステムプロンプト。メッセージAPIのネイティブ`system`フィールドを介して送信されます。
  `temperature`,DOUBLE PRECISION,NULL,サンプリング温度。
  `max_tokens`,INTEGER,`4096`,生成する最大トークン。 AnthropicのMessages APIにはこのフィールドが必要です。 AIDBは省略するとデフォルトします。
  `top_p`,DOUBLE PRECISION,NULL,nucleusサンプリングしきい値。
  `extra_args`,JSONB,NULL,APIに直接渡される追加のプロバイダー固有の引数。

.. _例-27:

例
^^

.. code:: sql

   - - Anthropic direct
   SELECT aidb.create_model(
       my_claude,
       anthropic_messages,
       config      => aidb.anthropic_messages_config(model => claude-opus-4-6),
       credentials => {"api_key": "sk-ant-..."}::JSONB
   );

   - - Azure AI Foundry
   SELECT aidb.create_model(
       my_claude_azure,
       anthropic_messages_azure,
       config      => aidb.anthropic_messages_config(
           model => claude-opus-4-6,
           url   => https://<resource>.services.ai.azure.com/anthropic/v1/messages
       ),
       credentials => {"api_key": "..."}::JSONB
   );

   - - AWS Bedrock
   SELECT aidb.create_model(
       my_claude_bedrock,
       anthropic_messages_bedrock,
       config      => aidb.anthropic_messages_config(
           model => anthropic.claude-opus-4-6-v1:0,
           url   => https://bedrock-runtime.us-east-1.amazonaws.com
       ),
       credentials => {"api_key": "..."}::JSONB
   );

このプロバイダーは、 :ref:`ツール呼び出しと構造化出力 <ツール呼び出しと構造化出力>` で説明されている\ ``tools``
、\ ``tool_choice`` 、および\ ``response_format``
フィールドをネイティブにサポートしています。
AnthropicのメッセージAPIには、ネイティブの構造化出力フィールドがないため、
``response_format``
は合成ツールへの強制呼び出しとして実装されます。機能的には同等ですが、
``response_format`` および\ ``tools`` / ``tool_choice``
は同じ呼び出しで使用できないことを意味します。
