
# 技术原理
#### 系统表实现
本特性在GaussDB中复用系统表GS_MODEL_WAREHOUSE，记录创建的外部模型服务相关信息。通过新添加的CREATE LLM和DROP LLM命令，实现对模型服务的管理。
![](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/public_sys-resources/note_3.0-zh-cn.png)
系统表GS_MODEL_WAREHOUSE具体描述请参见《参考》中"系统表和系统视图 \> 系统表 \> AI \> GS_MODEL_WAREHOUSE"章节。
在CREATE LLM语句中指定的参数会在系统表的下列字段存储，其余参数置为空或默认值，对应关系如下[表1]：
 表1GS_MODEL_WAREHOUSE表存储字段信息 
| 表字段                   | 对应模型信息                                                                                                |
|:---|:---|
| modelname             | gs_model_name，数据库中模型服务的名称。                                                                            |
| modeltype             | 模型服务的类型。llm_query/llm_embed/llm_rerank三类函数中可以调用的模型服务分别记录为 llm_query_api/llm_embed_api/llm_rerank_api。 |
| hyperparametersnames  | 必选和选填的所有参数的名字会被记录在这个字段。                                                                               |
| hyperparametersvalues | 必填和选填的所有参数的值会被记录在这个字段。顺序必须与hyperparametersnames一致。                                                    |
| hyperparametersoids   | 必填和选填的所有参数的类型对应的OID会被记录在这个字段。顺序必须与hyperparametersnames一致。                                             |
   
创建模型服务时，模型侧的api_key信息在存入系统表之前会进行加密，本特性复用OBS传输使用的密钥文件:
```
obsserver.key.cipher
```
加密时读取该密钥文件，使用aes128算法生成API KEY对应的密文，并将密文存于系统表中对应的字典里。
#### DDL实现
本特性为支持模型服务管理，新增CREATE LLM和DROP LLM命令。以CREATE LLM为例，其时序图如图[图1 模型创建序列图]所示：
图1模型创建序列图   
![](https://support.huaweicloud.com/centralized-devg-v10-gaussdb/figure/zh-cn_image_0000002665140975.png "点击放大")
其执行顺序可分解如下：
1. 用户在输入CREATE LLM命令之后，系统会将其解析成一个新增的CREATE LLM的DDL语句，并触发SQL引擎调用对应的执行逻辑。
2. 系统对参数进行解析和校验，并将API KEY进行加密处理。上一步校验通过后，可进入下一步校验模型服务的可用性。
3. GaussDB内核对模型服务发送模拟请求，当收到正常反馈之后则表示校验成功。成功之后会将command模块添加进系统表，并将命令执行成功的提示返回给用户。
 
