PostgreSQL 接口
应用版通过异步 jev.* 接口提交语义任务。SQL 客户端先提交并提交事务,worker 再处理任务,客户端随后读取结果。
提交一个任务#
安装 SQL 接口并配置客户端权限后,在 psql 的自动提交模式中运行:
SELECT jev.submit(
'JEV.NOUL',
'{"state":"工作已完成。","proposition":"材料说明工作已完成。"}',
limits => '{"max_judgments":1,"max_requests":1}',
idempotency_key => 'completion-check-1'
) AS job_id \gset
SELECT jsonb_pretty(jev.result(:'job_id'));\gset 是 psql 命令,用来保存返回的任务 ID。其他客户端应自行保存 job_id,稍后传给 jev.result。
如果显式开启了事务,提交任务后必须先 COMMIT,worker 才能看到任务。不要在同一个未提交事务里等待模型结果。
读取状态#
任务可能仍在排队或处理中,因此需要稍后再次读取。运行状态与答案状态分开判断:任务失败、预算不足、答案不确定和已得到否定答案并不相同。
幂等键用于识别同一次提交。不要把新的问题误用为旧请求的重试。
权限与服务#
SQL 接口需要扩展文件、对应迁移及运行中的 SQL worker。每个 SQL 客户端应使用独立数据库账户,并按英文参考授予所需权限。应用运行账户不应持有管理员凭据。
与原生接口的区别#
jev_native.* 在安装 Rust 扩展后同步执行,推理期间占用当前数据库后端。它不依赖异步 SQL worker,也不会由默认应用部署自动安装。两种接口的参数与事务行为不能混用。
本页介绍用法与注意事项。完整参数及详细约定请参阅对应英文文档。