すべてのプロダクト
Search
ドキュメントセンター

PolarDB:AI_CreateModel

最終更新日:Nov 10, 2025

AI モデルを作成し、呼び出しのためにメタデータテーブルに登録します。

構文

table AI_CreateModel(text model_id, text model_url, text model_provider, text model_type, text model_name, json model_config, regprocedure model_headers_fn, regprocedure model_in_transform_fn, regprocedure model_out_transform_fn);

パラメーター

パラメーター

説明

model_id

AI モデルの一意の識別子。この値は、model_name パラメーターの値とは異なる必要があります。

説明

AI モデルの識別子は、アンダースコア (_) で始めることはできません。Polar_AI 拡張機能を作成すると、システムはアンダースコア (_) で始まる一連の組み込み AI モデルを自動的に作成します。AI モデルを表示するには、SELECT * FROM polar_ai._ai_models; 文を実行します。

model_url

AI モデルへのアクセスに使用する URL。値を NULL にすることはできません。サポートされているプロトコルは、HTTP、HTTPS、および FILE です。たとえば、URL は、Platform for AI(PAI)にデプロイされているモデルの呼び出し情報に含まれるエンドポイントです。

model_provider

AI モデルのプロバイダー。値は NULL に設定できます。例: AWS、Alibaba、Baidu、Tencent。

model_type

AI モデルのタイプ。値は NULL に設定できます。例: LSTM、GRU。

model_name

AI モデルの名前。値を NULL にすることはできません。例: text-embedding-v2。

model_config

AI モデルの構成情報。値は JSON 形式で指定します。値を NULL にすることはできません。形式は次のとおりです。{ "author_type":"token", "token":"<YOUR_API_KEY>" }。

  • author_type フィールドと token フィールドを指定する必要があります。author_type は認証タイプを指定します。トークンベースの認証のみがサポートされています。

  • token フィールドには、モデルの呼び出しに使用する API キーが含まれています。API キーは、セキュリティを確保するために保存時に暗号化されます。たとえば、値は、PAI にデプロイされているモデルの呼び出し情報に含まれるトークンです。

model_headers_fn

リクエストヘッダーの構築に使用する関数。戻り値は JSONB 形式です。モデルに特別なヘッダー要件がない場合は、このパラメーターを構成する必要はありません。デフォルト値: NULL。

model_in_transform_fn

入力データを有効なフォーマットに変換するために使用される関数です。値を NULL にすることはできません。

model_out_transform_fn

AI モデルによって返される出力データを解析および変換するために使用される関数です。値を NULL にすることはできません。

戻り値

AI モデルの作成結果を表形式で返します。次の表は、結果パラメーターを示しています。

パラメーター

説明

model_seq

AI モデルのシーケンス番号。

model_schema

AI モデルが属するワークスペース。

model_id

AI モデルの一意の識別子。

model_qname

AI モデルの名前。

created

AI モデルが作成されたかどうかを示します。

t: 作成に成功しました。

f: 作成に失敗しました。

入力関数と出力関数

  • AI_CreateModel は AI モデルのメタデータをメタデータテーブルに登録しますが、モデルを呼び出したり実行したりすることはありません。AI モデルの呼び出し方法については、「AI_CallModel」をご参照ください。

  • model_in_transform_fn パラメーターで指定された入力関数は、ユーザー定義入力を JSONB 形式の HTTP リクエスト本文(AI モデルで必要)に変換します。次の例は、PAI にデプロイされている DeepSeek-R1-Distill-Qwen-7B モデルの入力関数の出力を示しています。

    {
      "model": "DeepSeek-R1-Distill-Qwen-7B",
      "prompt": "Hello!"
    }

    リクエスト本文には、model パラメーターと prompt パラメーターを含める必要があります。入力関数は次のように定義できます。

    CREATE OR REPLACE FUNCTION ai_text_in_fn(model_name text, content text)
        RETURNS jsonb
        LANGUAGE plpgsql
        AS $function$
        BEGIN
            RETURN ('{"model": "'|| model_name ||'","prompt":"'|| content ||'"}')::jsonb;
        END;
        $function$;
  • model_out_transform_fn パラメーターで指定された出力関数は、通常 JSON 形式のモデルの出力を必要な形式に変換します。次のサンプルコードは、既知の AI モデルから返された JSON 形式の実際の結果を示しています。

    {
        "id": "8e44xxxx",
        "object": "text_completion",
        "created": 1744355891,
        "model": "DeepSeek-R1-Distill-Qwen-7B",
        "choices": [
            {
                "index": 0,
                "text": " I have a\n\n\n</think>\n\nHello! How can I assist you today? ",
                "logprobs": null,
                "finish_reason": "stop",
                "matched_stop": 151643
            }
        ],
        "usage": {
            "prompt_tokens": 3,
            "total_tokens": 21,
            "completion_tokens": 18,
            "prompt_tokens_details": null
        }
    }

    返された結果からは、choices[0].text の部分のみが必要です。パラメーターは JSONB 型である必要があります。出力関数は次のように定義できます。

    CREATE OR REPLACE FUNCTION ai_text_out_fn(model_id text, response_json jsonb)
        RETURNS jsonb
        AS $$
        SELECT (response_json->'choices'->0->'text')::jsonb
        $$ LANGUAGE sql IMMUTABLE;

次の手順では、PAI にデプロイされている DeepSeek-R1-Distill-Qwen-7B モデルを例として使用して、モデルを登録する方法について説明します。

  1. モデルの入力関数を作成します。

    CREATE OR REPLACE FUNCTION ai_text_in_fn(model_name text, content text)
        RETURNS jsonb
        LANGUAGE plpgsql
        AS $function$
        BEGIN
            RETURN ('{"model": "'|| model_name ||'","prompt":"'|| content ||'"}')::jsonb;
        END;
        $function$;
  2. モデルの出力関数を作成します。

    CREATE OR REPLACE FUNCTION ai_text_out_fn(model_id text, response_json jsonb)
        RETURNS jsonb
        AS $$
        SELECT (response_json->'choices'->0->'text')::jsonb
        $$ LANGUAGE sql IMMUTABLE;
  3. モデルのメタデータをメタデータテーブルに登録します。次の構成を行います。

    • model_url を、呼び出しメソッド /v1/completions が追加された、PAI にデプロイされているモデルの VPC エンドポイントに設定します。

    • model_configtoken を、AI モデルへのアクセスに必要なトークンに設定します。

    • model_in_transform_fnai_text_in_fn 関数に設定します。

    • model_out_transform_fnai_text_out_fn 関数に設定します。

    SELECT polar_ai.AI_CreateModel('my_text_pai_model', '<EAS Endpoint>/v1/completions','Alibaba','EAS LLM','DeepSeek-R1-Distill-Qwen-32B','{"author_type": "token", "token": "<EAS Token>"}', NULL, 'ai_text_in_fn'::regproc, 'ai_text_out_fn'::regproc);
  4. 結果を表示します。詳細については、「戻り値」をご参照ください。

                      ai_createmodel
    -------------------------------------------------------------
    (1,my_text_pai_model,polar_ai,DeepSeek-R1-Distill-Qwen-7B,t)
  5. (オプション) 作成された AI モデルを表示します。

    SELECT * from polar_ai._ai_models;

    結果例:

     model_seq |    model_id    | model_url | model_provider | model_type | model_name | model_config |  model_headers_fn  |     model_in_transform_fn     |     model_out_transform_fn      
    ---
     1 | my_text_embedding_model | https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding | Alibaba | General-purpose text embedding model | 
    text-embedding-v2    | {"token": "20E0BE9E5438xxxxxxxxxxxxxxxxxxxx", "author_type": "token"} |  - | ai_text_embedding_in_fn(text,text) | ai_text_embedding_out_fn(text,jsonb)