全部產品
Search
文件中心

:AI_CreateModel

更新時間:May 15, 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

模型自訂名稱,具有唯一性,便於模型管理。注意與model_name區分。

說明

模型自訂名稱不可以底線“_”開頭。在建立Polar_AI外掛程式時,系統預設建立了一批以底線“_”開頭的內建模型。您可以通過以下語句查看已建立的模型:SELECT * FROM polar_ai._ai_models;

model_url

模型的調用地址,不允許為空白。支援HTTP、HTTPS、FILE協議。例如:人工智慧平台PAI上部署服務調用資訊中的訪問地址。

model_provider

模型提供方,允許為空白。樣本如:AWS, Alibaba, Baidu, Tencent等。

model_type

模型類型,允許為空白。樣本如:LSTM, GRU等。

model_name

調用模型名稱,不允許為空白。例如:text-embedding-v2。

model_config

模型配置資訊,使用JSON格式,不允許為空白。格式為:{ "author_type":"token", "token":"<YOUR_API_KEY>" },其中:

  • author_type和token是必須指定的JSON欄位。其中,author_type用於指明認證類型,目前僅支援token認證方式。

  • token為調用模型的API-KEY,儲存時將進行加密處理。例如,人工智慧平台PAI上部署服務的調用資訊Token

model_headers_fn

模型要求標頭函數,用於構建要求標頭,傳回型別必須為JSONB,如果模型沒有特殊要求無需指定,預設為空白。

model_in_transform_fn

模型輸入轉換函式,不允許為空白。用於構建請求資料。詳細介紹請參考模型輸入轉換函式

model_out_transform_fn

模型輸出轉換函式,不允許為空白。用於解析模型返回資料。詳細介紹請參考模型輸出轉換函式

傳回值

以表結構形式返回AI模型建立後的結果資訊。表結構如下:

參數名稱

描述

model_seq

模型序號。

model_schema

模型所屬的工作空間。

model_id

模型自訂名稱。

model_qname

模型名稱。

created

AI模型是否建立成功:

t:建立成功。

f:建立失敗。

函數說明

  • AI_CreateModel僅將模型中繼資料註冊到中繼資料表中,不執行模型調用。模型調用請參考AI_CallModel

  • 模型輸入轉換函式(model_in_transform_fn)用於將輸入內容轉為模型對應的HTTP請求內容,且傳回型別必須為JSONB。此處以人工智慧平台PAI上部署的DeepSeek-R1-Distill-Qwen-7B模型服務為例,其HTTP請求內容為:

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

    請求體中,參數modelprompt為必填項,則模型輸入函數可定義為:

    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)轉為業務所需的格式。例如,已知模型實際返回的結果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為上述人工智慧平台PAI上部署的模型訪問地址(需為VPC地址),且需拼上調用方式/v1/completions

    • 模型配置資訊model_config中的token為上述人工智慧平台PAI上部署的模型Token。

    • 模型輸入轉換函式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大語言模型','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-32B,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_pai_model | http://xxx.pai-eas.aliyuncs.com/xxx/v1/completions | Alibaba | EAS大語言模型 | DeepSeek-R1-Distill-Qwen-32B
       | {"token": "20E0BE9E5438xxxxxxxxxxxxxxxxxxxx", "author_type": "token"} |  - | ai_text_in_fn(text,text) | ai_text_out_fn(text,jsonb)