AI_CreateModel

更新时间:2025-02-07 08:57:29

创建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

模型调用API,不允许为空。支持HTTP、HTTPS、FILE协议。

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_typetoken是必须指定的JSON字段。其中,author_type用于指明认证类型,目前仅支持token认证方式。

  • token为调用模型的API-KEY,存储时将进行加密处理。例如申请大模型服务平台百炼的API-KEY,可参考获取API Key

model_headers_fn

模型请求头函数,用于构建请求头,返回类型必须为JSONB,如果模型没有特殊要求无需指定,默认为空。

model_in_transform_fn

模型输入转换函数,不允许为空。用于构建请求数据。详细介绍请参考模型输入转换函数

model_out_transform_fn

模型输出转换函数,不允许为空。用于解析模型返回数据。详细介绍请参考模型输出转换函数

返回值

以表结构形式返回AI模型创建后的结果信息。表结构如下:

model_seq

model_schema

model_id

model_qname

created

model_seq

model_schema

model_id

model_qname

created

模型序号

模型所属的工作空间

模型自定义名称

模型名称

AI模型是否创建成功(t/f)

描述

  • 本函数仅将模型元数据注册到元数据表中,不执行模型调用,模型调用请参考AI_CallModel

  • 模型输入转换函数(model_in_transform_fn)用于将请求内容转为模型对应的HTTP请求,返回类型必须为JSONB。此处以百炼服务中通用文本向量模型为例,其HTTP请求内容为:

    {
        "model": "text-embedding-v2",
        "input": {
            "texts": [
            "风急天高猿啸哀"
            ]
        },
        "parameters": {
                "text_type": "query"
        }
    }

    对应模型输入转换函数定义如下:

    CREATE OR REPLACE FUNCTION ai_text_embedding_in_fn(model_name text, content text)
        RETURNS jsonb
        LANGUAGE plpgsql
        AS $function$
        BEGIN
            RETURN ('{"model": "'|| model_name ||'","input":{"texts":["'|| content ||'"]},"parameters":{"text_type": "query"}}')::jsonb;
        END;
        $function$;

    其中:

    • model_name:调用模型名称。

    • content:请求生成向量的文本内容。

  • 模型输出转换函数(model_out_transform_fn)用于将模型输出结果(通常为JSON)转为业务所需格式。例如,已知模型实际返回的结果JSON格式如下:

    {
    "usage": {
        "total_tokens": 7
    },
    "output": {
        "embeddings": {
            "embedding": [0.004930191827757042, -0.008629344325205105, 0.041976027360927766],
            "text_index": 0
        }
    },
    "request_id": "317ba0d4-6c08-9c24-8725-eebd445def51"
    }

    从返回结果中提取output/embeddings/embedding向量部分,则模型输出转换函数可定义为:

    CREATE OR REPLACE FUNCTION ai_text_embedding_out_fn(model_id text, response_json jsonb)
        RETURNS jsonb
        AS $$ select array(select json_array_elements_text(((((response_json->>'output')::jsonb->>'embeddings')::jsonb)->0->>'embedding')::json))::real[] as result $$
        LANGUAGE 'sql' IMMUTABLE;

    其中:

    • model_id:参数类型必须为TEXT。

    • response_json:参数类型必须为JSONB。

示例

以创建百炼服务中的通用文本向量模型为例,注册的步骤如下:

  1. 创建输入转换函数。

    CREATE OR REPLACE FUNCTION ai_text_embedding_in_fn(model_name text, content text)
        RETURNS jsonb
        LANGUAGE plpgsql
        AS $function$
        BEGIN
            RETURN ('{"model": "'|| model_name ||'","input":{"texts":["'|| content ||'"]},"parameters":{"text_type": "query"}}')::jsonb;
        END;
        $function$;
  2. 创建输出转换函数。

    CREATE OR REPLACE FUNCTION ai_text_embedding_out_fn(model_id text, response_json jsonb)
        RETURNS jsonb
        AS $$ select ((((response_json->>'output')::jsonb->>'embeddings')::jsonb)->0->>'embedding')::jsonb as result $$
        LANGUAGE 'sql' IMMUTABLE;
  3. 创建百炼服务的通用文本向量模型。

    --- 将"your-api-key"替换成您使用的模型服务API-KEY。
    SELECT polar_ai.AI_CreateModel('my_text_embedding_model', 'https://dashscope.aliyuncs.com/api/v1/services/embeddings/text-embedding/text-embedding','Alibaba','通用文本向量模型','text-embedding-v2','{"author_type": "token", "token": "your-api-key"}', NULL,'ai_text_embedding_in_fn'::regproc,'ai_text_embedding_out_fn'::regproc);

    返回结果如下,详细的返回值说明请参考返回值

            ai_createmodel         
    ---
    (1,my_text_embedding_model,polar_ai,text-embedding-v2,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        | 通用文本向量模型 | 
    text-embedding-v2    | {"token": "20E0BE9E5438xxxxxxxxxxxxxxxxxxxx", "author_type": "token"} |  - | ai_text_embedding_in_fn(text,text) | ai_text_embedding_out_fn(text,jsonb)
  • 本页导读 (1)
  • 语法
  • 参数
  • 返回值
  • 描述
  • 示例