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 モデルの一意の識別子。この値は、 説明 AI モデルの識別子は、アンダースコア (_) で始めることはできません。Polar_AI 拡張機能を作成すると、システムはアンダースコア (_) で始まる一連の組み込み AI モデルを自動的に作成します。AI モデルを表示するには、 |
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>" }。
|
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 モデルが作成されたかどうかを示します。
|
入力関数と出力関数
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 モデルを例として使用して、モデルを登録する方法について説明します。
モデルの入力関数を作成します。
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$;モデルの出力関数を作成します。
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;モデルのメタデータをメタデータテーブルに登録します。次の構成を行います。
model_urlを、呼び出しメソッド/v1/completionsが追加された、PAI にデプロイされているモデルの VPC エンドポイントに設定します。model_configのtokenを、AI モデルへのアクセスに必要なトークンに設定します。model_in_transform_fnをai_text_in_fn関数に設定します。model_out_transform_fnをai_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);結果を表示します。詳細については、「戻り値」をご参照ください。
ai_createmodel ------------------------------------------------------------- (1,my_text_pai_model,polar_ai,DeepSeek-R1-Distill-Qwen-7B,t)(オプション) 作成された 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)