当前无论是基础大模型还是 AI 应用开发都发展迅速,云数据库 PostgreSQL 提供了 tencentdb_ai 插件,方便您在云数据库 PostgreSQL 实例中轻松调用网络可通的大模型 API,完成各种场景的应用开发。本插件支持大版本为 PostgreSQL 17 的实例。
说明:
使用
tencentdb_ai
的前提是您已经创建完成了大版本为 PostgreSQL 17 的实例。创建
tencentdb_ai
插件会关联创建 pgcrypto
插件,请知悉。tencentdb_ai 插件函数说明
新增模型
add_model
函数定义如下:tencentdb_ai.add_model(model_name NAME,version TEXT,region TEXT,json_path JSONPATH);
参数解释如下:
model_name:模型名称,如
hunyuan-lite
,deepseek-r1
等。version:该模型的公共参数
version
,如该模型不需要 version
参数则可以不填写。region:该模型的公共参数
region
,如该模型不需要 region
参数则可以不填写。json_path:为调用该模型时,指定如何对模型的
JSON
响应进行提取。相当于对模型输出调用jsonb_path_query_first
函数。如果不指定该参数,默认原样输出模型的原始响应。查看已注册模型
list_models
函数定义如下:tencentdb_ai.list_models(void);
更新模型
update_model_attr
函数定义如下:tencentdb_ai.update_model_attr(model_name NAME,attr_name text,attr_value text);
参数解释如下:
model_name:模型名称。
attr_name:需要更新的模型属性。可更新的模型属性有
version、region、json_path、SecretId、SecretKey
。attr_value:需要更新的属性的值。
删除模型
delete_model
函数定义如下:tencentdb_ai.delete_model(model_name NAME);
参数解释如下:
model_name:模型名称。
模型调用
call_model 函数定义如下:
tencentdb_ai.call_model(model_name NAME,common_params TEXT[],api_params TEXT[]);
参数解释如下:
model_name:模型名称。
common_params:需要调用模型的公共参数,例如
ARRAY['Action: ChatCompletions', 'Version: 2023-09-01']
api_params:需要调用模型的专有参数,例如
ARRAY['"Stream": false', '"Model": "hunyuan-lite"', '"Messages": [{"Role": "user", "Content": "您好"}]']
除了使用
call_model
函数来进行模型调用之外,您还可以使用如下几个接口来进行特定场景的模型调用。固定场景接口
对话
chat_completions
函数定义如下:tencentdb_ai.chat_completions(model_name NAME,content TEXT,args TEXT[] default NULL);
参数解释如下:
model_name:模型名称。
content:对话内容。
args:调用模型的其他参数,默认为 NULL。
调用示例:
SELECT tencentdb_ai.chat_completions('hunyuan-lite', '您好');chat_completions----------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------{"Response":{"RequestId":"*******-****-****-****-***********","Note":"以上内容为AI生成,不代表开发者立场,请勿删除或修改本标记","Choices":[{"Index":0,"Message":{"Role":"assistant","Content":"您好呀!很高兴能和您聊天,今天有什么想和我分享的吗"},"FinishReason":"stop"}],"Created":1739786393,"Id":"*******-****-****-****-*********","Usage":{"PromptTokens":3,"CompletionTokens":17,"TotalTokens":20}}}(1 row)
文本转向量
get_embedding
函数定义如下:tencentdb_ai.get_embedding(model_name NAME,content TEXT[]);
参数解释如下:
model_name:模型名称。
content:转化内容。
调用示例:
damoxing1=> SELECT tencentdb_ai.get_embedding('hunyuan-embedding',ARRAY['您好', 'PostgreSQL']);
文本排序
run_rerank
函数定义如下:tencentdb_ai.run_rerank(model_name NAME,query TEXT,documents TEXT[],args TEXT[] DEFAULT NULL);
参数解释如下:
model_name:模型名称。
query:文本排序的问题。
documents:待文本排序的内容。
args:特定模型的指定参数。
damoxing1=> SELECT COUNT(*) FROM tencentdb_ai.run_rerank('lke-reranker-base', '知识引擎大模型', ARRAY['混元大模型', '腾讯知识引擎']);count-------2(1 row)
插件使用示例
下面为您一一描述插件使用过程:
1. 创建插件
damoxing=> CREATE EXTENSION tencentdb_ai CASCADE;NOTICE: installing required extension "pgcrypto"CREATE EXTENSION
检查插件创建完成
damoxing=> SELECT * FROM pg_extension;oid | extname | extowner | extnamespace | extrelocatable | extversion | extconfig | extcondition-------+--------------+----------+--------------+----------------+------------+-----------+--------------14275 | plpgsql | 10 | 11 | f | 1.0 | |16440 | pgcrypto | 16437 | 2200 | t | 1.3 | |16477 | tencentdb_ai | 16437 | 2200 | t | 1.0 | {16479} | {""}(3 rows)
2. 添加大模型
damoxing=> SELECT tencentdb_ai.add_model('hunyuan-lite','2023-09-01', NULL, NULL);add_model-----------(1 row)
3. 添加大模型 API 调用的 SecretId 和 SecretKey
damoxing=> SELECT tencentdb_ai.update_model_attr('hunyuan-lite', 'SecretId', 'AKID***************');update_model_attr-------------------(1 row)damoxing=> SELECT tencentdb_ai.update_model_attr('hunyuan-lite', 'SecretKey', '********************');update_model_attr-------------------(1 row)
4. 查看当前添加的模型列表
damoxing=> SELECT * FROM tencentdb_ai.list_models();-[ RECORD 1 ]--------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------model_name | hunyuan-litejson_path |secretid | ***************************secretkey | ***************************version |region |id_random | 516234453022key_random | 134577899689
5. 调用大模型
聊天场景下,您可以使用
call_model
接口。damoxing=> SELECT tencentdb_ai.call_model('hunyuan-lite',ARRAY['Action: ChatCompletions', 'Version: 2023-09-01'],ARRAY['"Stream": false', '"Model": "hunyuan-lite"', '"Messages": [{"Role": "user", "Content": "您好"}]']);damoxing(> damoxing(>call_model------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------------{"Response":{"RequestId":"*******-****-****-****-***********","Note":"以上内容为AI生成,不代表开发者立场,请勿删除或修改本标记","Choices":[{"Index":0,"Message":{"Role":"assistant","Content":"您好!很高兴与您交流。请问有什么我可以帮助您的吗?无论是关于生活、工作、学习还是其他方面的问题,我都会尽力为您提供帮助。"},"FinishReason":"stop"}],"Created":1739793838,"Id":"*******-****-****-****-***********","Usage":{"PromptTokens":3,"CompletionTokens":33,"TotalTokens":36}}}(1 row)damoxing=>