80 lines
4.0 KiB
Python
80 lines
4.0 KiB
Python
"""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())
|