fix: add uapiio entries + headers + ioid linkage for GPU services

This commit is contained in:
yumoqing 2026-07-27 12:23:11 +08:00
parent 58b79bff58
commit fa1309f2b8

View File

@ -0,0 +1,79 @@
"""Update uapi entries with proper headers + create uapiio definitions"""
import asyncio
from sqlor.dbpools import DBPools
from appPublic.jsonConfig import getConfig
async def main():
config = getConfig('.')
DBPools(config.databases)
db = DBPools()
async with db.sqlorContext('rag') as sor:
# --- uapiio entries ---
uapiiios = [
('io-vdb-vector', 'VDB向量操作', '向量数据库CRUD输入输出',
'[{"name":"collection","label":"集合名","uitype":"str","required":true},'
'{"name":"data","label":"向量数据","uitype":"json"},'
'{"name":"ids","label":"向量ID列表","uitype":"json"},'
'{"name":"topK","label":"返回数量","uitype":"int"}]'),
('io-reranker', 'Reranker重排序', 'BGE重排序输入输出',
'[{"name":"query","label":"查询文本","uitype":"text","required":true},'
'{"name":"documents","label":"候选文档列表","uitype":"json","required":true}]'),
('io-face', '人脸服务', '人脸检测/识别/比对',
'[{"name":"image_url","label":"图片URL","uitype":"str","required":true},'
'{"name":"image_url1","label":"图片1 URL","uitype":"str"},'
'{"name":"image_url2","label":"图片2 URL","uitype":"str"},'
'{"name":"face_id","label":"人脸ID","uitype":"str"}]'),
('io-graph', '图数据库', '图CRUD输入输出',
'[{"name":"graph","label":"图名","uitype":"str","required":true},'
'{"name":"query","label":"图查询语句","uitype":"text"},'
'{"name":"data","label":"图数据","uitype":"json"}]'),
('io-ner', 'NER实体识别', '命名实体识别',
'[{"name":"text","label":"待识别文本","uitype":"text","required":true}]'),
('io-embedding', 'CLIP向量化', '文本/图片向量化',
'[{"name":"texts","label":"文本列表","uitype":"json","required":true},'
'{"name":"model","label":"模型名","uitype":"str"}]'),
]
for ioid, name, desc, fields in uapiiios:
await sor.sqlExe(
"INSERT INTO uapiio (id, name, description, input_fields) "
"VALUES (${id}$, ${name}$, ${desc}$, ${fields}$) "
"ON DUPLICATE KEY UPDATE description=${desc}$, input_fields=${fields}$",
{"id": ioid, "name": name, "desc": desc, "fields": fields})
print(f'uapiio: {len(uapiiios)} inserted')
# --- Update uapi entries: add headers + link ioid ---
updates = [
# VDB
('vdb-upsert', 'rag-vdb', 'io-vdb-vector'),
('vdb-search', 'rag-vdb', 'io-vdb-vector'),
('vdb-delete', 'rag-vdb', 'io-vdb-vector'),
# Reranker
('reranker-rerank', 'rag-reranker', 'io-reranker'),
# Face
('face-detect', 'rag-face', 'io-face'),
('face-recognize', 'rag-face', 'io-face'),
('face-compare', 'rag-face', 'io-face'),
# Graph
('graph-save', 'rag-graph', 'io-graph'),
('graph-query', 'rag-graph', 'io-graph'),
('graph-delete', 'rag-graph', 'io-graph'),
# NER
('ner-entities', 'rag-ner', 'io-ner'),
# Embedding
('emb-embed', 'rag-embedding', 'io-embedding'),
]
headers_tmpl = '{\n "Content-Type": "application/json"\n}'
for aid, upappid, ioid in updates:
await sor.sqlExe(
"UPDATE uapi SET headers=${h}$, ioid=${ioid}$ WHERE id=${id}$",
{"h": headers_tmpl, "ioid": ioid, "id": aid})
print(f'uapi: {len(updates)} updated (headers + ioid)')
# --- Fix vdb-search data template ---
await sor.sqlExe(
"UPDATE uapi SET data=${d}$ WHERE id='vdb-search'",
{"d": '{"collectionName": "{{collection}}", "vector": {{json.dumps(vector)}}, "topK": {{top_k}}}'})
print('vdb-search data template fixed')
asyncio.run(main())