fix(llm_api_map_manage): 修正uitype规范+VScrollPanel滚动+llmid隐藏字段
- select→code, text→str, number→int 对齐bricks uitype规范 - 表单区域父容器改用VScrollPanel(height:500px)防止超出屏幕 - llmid改为uitype:hidden, 从params_kw.llmid获取值(从llm CRUD tool触发) - 移除llmid的select下拉和label
This commit is contained in:
parent
ca21d5cf25
commit
f1498178cc
12
llmage.egg-info/PKG-INFO
Normal file
12
llmage.egg-info/PKG-INFO
Normal file
@ -0,0 +1,12 @@
|
||||
Metadata-Version: 2.1
|
||||
Name: llmage
|
||||
Version: 0.0.1
|
||||
Summary: Your project description
|
||||
Home-page: UNKNOWN
|
||||
Author: "yu moqing"
|
||||
Author-email: "yumoqing@gmail.com"
|
||||
License: "MIT"
|
||||
Platform: UNKNOWN
|
||||
|
||||
UNKNOWN
|
||||
|
||||
19
llmage.egg-info/SOURCES.txt
Normal file
19
llmage.egg-info/SOURCES.txt
Normal file
@ -0,0 +1,19 @@
|
||||
README.md
|
||||
pyproject.toml
|
||||
setup.cfg
|
||||
llmage/__init__.py
|
||||
llmage/accounting.py
|
||||
llmage/asyncinference.py
|
||||
llmage/callback.py
|
||||
llmage/init.py
|
||||
llmage/jimeng.py
|
||||
llmage/keling.py
|
||||
llmage/llmclient.py
|
||||
llmage/messages.py
|
||||
llmage/syncinference.py
|
||||
llmage/utils.py
|
||||
llmage.egg-info/PKG-INFO
|
||||
llmage.egg-info/SOURCES.txt
|
||||
llmage.egg-info/dependency_links.txt
|
||||
llmage.egg-info/requires.txt
|
||||
llmage.egg-info/top_level.txt
|
||||
1
llmage.egg-info/dependency_links.txt
Normal file
1
llmage.egg-info/dependency_links.txt
Normal file
@ -0,0 +1 @@
|
||||
|
||||
20
llmage.egg-info/requires.txt
Normal file
20
llmage.egg-info/requires.txt
Normal file
@ -0,0 +1,20 @@
|
||||
aiohttp
|
||||
aiohttp
|
||||
aiohttp_socks
|
||||
asyncio
|
||||
asyncssh
|
||||
bcrypt
|
||||
brotli
|
||||
bs4
|
||||
cryptography
|
||||
eventpy
|
||||
jinja2
|
||||
nanoid
|
||||
numpy
|
||||
psutil
|
||||
pyzmq
|
||||
requests
|
||||
rsa
|
||||
ujson
|
||||
xlrd
|
||||
xlwt
|
||||
1
llmage.egg-info/top_level.txt
Normal file
1
llmage.egg-info/top_level.txt
Normal file
@ -0,0 +1 @@
|
||||
llmage
|
||||
BIN
llmage/__pycache__/init.cpython-311.pyc
Normal file
BIN
llmage/__pycache__/init.cpython-311.pyc
Normal file
Binary file not shown.
BIN
llmage/__pycache__/utils.cpython-311.pyc
Normal file
BIN
llmage/__pycache__/utils.cpython-311.pyc
Normal file
Binary file not shown.
56
migrate_catelog.py
Normal file
56
migrate_catelog.py
Normal file
@ -0,0 +1,56 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Migration script: Move llm.llmcatelogid to llm_catalog_rel.
|
||||
Run this AFTER creating the llm_catalog_rel table via build.sh.
|
||||
"""
|
||||
import asyncio
|
||||
from sqlor.dbpools import DBPools
|
||||
from appPublic.jsonConfig import getConfig
|
||||
from appPublic.log import info, error
|
||||
from ahserver.serverenv import ServerEnv
|
||||
|
||||
async def migrate():
|
||||
env = ServerEnv()
|
||||
try:
|
||||
dbname = env.get_module_dbname('llmage')
|
||||
except:
|
||||
dbname = 'default'
|
||||
|
||||
config = getConfig()
|
||||
db = DBPools()
|
||||
db.databases = config.databases
|
||||
|
||||
async with db.sqlorContext(dbname) as sor:
|
||||
# 1. Migrate data
|
||||
print("Migrating data...")
|
||||
# Get all llms with a llmcatelogid
|
||||
# Note: llmcatelogid still exists in DB until we drop it, or we assume it's there.
|
||||
# Assuming it's there.
|
||||
sql = "select id, llmcatelogid from llm where llmcatelogid is not null and llmcatelogid != ''"
|
||||
rows = await sor.sqlExe(sql, {})
|
||||
|
||||
if not rows:
|
||||
print("No data to migrate.")
|
||||
return
|
||||
|
||||
print(f"Found {len(rows)} records to migrate.")
|
||||
|
||||
for r in rows:
|
||||
# Insert into llm_catalog_rel
|
||||
# Use getID() logic or simple uuid, here assuming we can use a function or simple generation
|
||||
# but sqlor insert C() is better
|
||||
data = {
|
||||
'llmid': r['id'],
|
||||
'llmcatelogid': r['llmcatelogid']
|
||||
}
|
||||
await sor.C('llm_catalog_rel', data)
|
||||
|
||||
print("Migration complete.")
|
||||
|
||||
# 2. Drop column (Optional but recommended)
|
||||
# print("Dropping column...")
|
||||
# await sor.sqlExe("alter table llm drop column llmcatelogid", {})
|
||||
# print("Column dropped.")
|
||||
|
||||
if __name__ == '__main__':
|
||||
asyncio.run(migrate())
|
||||
30
migrate_rel.py
Normal file
30
migrate_rel.py
Normal file
@ -0,0 +1,30 @@
|
||||
#!/usr/bin/env python3
|
||||
"""
|
||||
Execute migration via sage environment.
|
||||
Run: cd /home/hermesai/repos/sage && ./py3/bin/python migrate_rel.py
|
||||
"""
|
||||
import asyncio
|
||||
import sys
|
||||
import os
|
||||
|
||||
# Add sage to path
|
||||
sys.path.insert(0, '/home/hermesai/repos/sage/py3/lib/python3.10/site-packages')
|
||||
sys.path.insert(0, '/home/hermesai/repos/sage')
|
||||
|
||||
from ahserver.serverenv import ServerEnv
|
||||
from sqlor.dbpools import DBPools
|
||||
from appPublic.jsonConfig import getConfig
|
||||
|
||||
async def migrate():
|
||||
# Initialize env to get config
|
||||
# Note: This script expects sage to be configured.
|
||||
# We can't easily import sage's init here, but we can try to load config if available.
|
||||
# Alternatively, just use raw sql.
|
||||
pass
|
||||
|
||||
if __name__ == '__main__':
|
||||
# Use a simpler approach: connect directly
|
||||
import pymysql
|
||||
# Assuming config is in sage's config dir
|
||||
# We can read the config file
|
||||
pass
|
||||
@ -14,101 +14,106 @@
|
||||
}
|
||||
},
|
||||
{
|
||||
"widgettype": "VBox",
|
||||
"widgettype": "VScrollPanel",
|
||||
"options": {
|
||||
"width": "calc(100% - 40px)",
|
||||
"margin": "0 20px",
|
||||
"padding": "16px",
|
||||
"bgcolor": "#f5f5f5",
|
||||
"spacing": 12
|
||||
"height": "500px"
|
||||
},
|
||||
"subwidgets": [
|
||||
{
|
||||
"widgettype": "Text",
|
||||
"widgettype": "VBox",
|
||||
"options": {
|
||||
"text": "添加新映射",
|
||||
"fontSize": "16px",
|
||||
"fontWeight": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"widgettype": "Form",
|
||||
"id": "add_form",
|
||||
"options": {
|
||||
"layout": "horizontal",
|
||||
"cols": 3,
|
||||
"fields": [
|
||||
{
|
||||
"name": "llmid",
|
||||
"label": "选择模型",
|
||||
"uitype": "select",
|
||||
"dataurl": "{{entire_url('./api/llm_api_map_options.dspy')}}",
|
||||
"data_field": "llms",
|
||||
"placeholder": "请选择模型"
|
||||
},
|
||||
{
|
||||
"name": "llmcatelogid",
|
||||
"label": "选择分类",
|
||||
"uitype": "select",
|
||||
"dataurl": "{{entire_url('./api/llm_api_map_options.dspy')}}",
|
||||
"data_field": "catelogs",
|
||||
"placeholder": "请选择分类"
|
||||
},
|
||||
{
|
||||
"name": "apiname",
|
||||
"label": "API接口",
|
||||
"uitype": "select",
|
||||
"dataurl": "{{entire_url('./api/llm_api_map_options.dspy')}}",
|
||||
"data_field": "apis",
|
||||
"placeholder": "请选择API接口"
|
||||
},
|
||||
{
|
||||
"name": "query_apiname",
|
||||
"label": "查询API",
|
||||
"uitype": "text",
|
||||
"placeholder": "异步查询API名,多个用逗号分隔"
|
||||
},
|
||||
{
|
||||
"name": "query_period",
|
||||
"label": "查询间隔(秒)",
|
||||
"uitype": "number",
|
||||
"placeholder": "默认30"
|
||||
},
|
||||
{
|
||||
"name": "ppid",
|
||||
"label": "计费项目",
|
||||
"uitype": "select",
|
||||
"dataurl": "{{entire_url('./api/llm_api_map_options.dspy')}}",
|
||||
"data_field": "ppids",
|
||||
"placeholder": "请选择计费项目"
|
||||
}
|
||||
],
|
||||
"buttons": [
|
||||
{
|
||||
"name": "add_btn",
|
||||
"label": "添加映射",
|
||||
"variant": "primary"
|
||||
}
|
||||
]
|
||||
"width": "calc(100% - 40px)",
|
||||
"margin": "0 20px",
|
||||
"padding": "16px",
|
||||
"bgcolor": "#f5f5f5",
|
||||
"spacing": 12
|
||||
},
|
||||
"binds": [
|
||||
"subwidgets": [
|
||||
{
|
||||
"wid": "add_btn",
|
||||
"event": "click",
|
||||
"actiontype": "urlwidget",
|
||||
"target": "PopupWindow",
|
||||
"popup_options": {"archor": "cc", "width": "30%", "height": "20%"},
|
||||
"widgettype": "Text",
|
||||
"options": {
|
||||
"url": "{{entire_url('./api/llm_api_map_create.dspy')}}",
|
||||
"params": {
|
||||
"llmid": "$[add_form.llmid]$",
|
||||
"llmcatelogid": "$[add_form.llmcatelogid]$",
|
||||
"apiname": "$[add_form.apiname]$",
|
||||
"query_apiname": "$[add_form.query_apiname]$",
|
||||
"query_period": "$[add_form.query_period]$",
|
||||
"ppid": "$[add_form.ppid]$"
|
||||
}
|
||||
"text": "添加新映射",
|
||||
"fontSize": "16px",
|
||||
"fontWeight": "bold"
|
||||
}
|
||||
},
|
||||
{
|
||||
"widgettype": "Form",
|
||||
"id": "add_form",
|
||||
"options": {
|
||||
"layout": "horizontal",
|
||||
"cols": 3,
|
||||
"fields": [
|
||||
{
|
||||
"name": "llmid",
|
||||
"uitype": "hidden",
|
||||
"value": "{{params_kw.llmid}}"
|
||||
},
|
||||
{
|
||||
"name": "llmcatelogid",
|
||||
"label": "选择分类",
|
||||
"uitype": "code",
|
||||
"dataurl": "{{entire_url('./api/llm_api_map_options.dspy')}}",
|
||||
"data_field": "catelogs",
|
||||
"placeholder": "请选择分类"
|
||||
},
|
||||
{
|
||||
"name": "apiname",
|
||||
"label": "API接口",
|
||||
"uitype": "code",
|
||||
"dataurl": "{{entire_url('./api/llm_api_map_options.dspy')}}",
|
||||
"data_field": "apis",
|
||||
"placeholder": "请选择API接口"
|
||||
},
|
||||
{
|
||||
"name": "query_apiname",
|
||||
"label": "查询API",
|
||||
"uitype": "str",
|
||||
"placeholder": "异步查询API名,多个用逗号分隔"
|
||||
},
|
||||
{
|
||||
"name": "query_period",
|
||||
"label": "查询间隔(秒)",
|
||||
"uitype": "int",
|
||||
"placeholder": "默认30"
|
||||
},
|
||||
{
|
||||
"name": "ppid",
|
||||
"label": "计费项目",
|
||||
"uitype": "code",
|
||||
"dataurl": "{{entire_url('./api/llm_api_map_options.dspy')}}",
|
||||
"data_field": "ppids",
|
||||
"placeholder": "请选择计费项目"
|
||||
}
|
||||
],
|
||||
"buttons": [
|
||||
{
|
||||
"name": "add_btn",
|
||||
"label": "添加映射",
|
||||
"variant": "primary"
|
||||
}
|
||||
]
|
||||
},
|
||||
"binds": [
|
||||
{
|
||||
"wid": "add_btn",
|
||||
"event": "click",
|
||||
"actiontype": "urlwidget",
|
||||
"target": "PopupWindow",
|
||||
"popup_options": {"archor": "cc", "width": "30%", "height": "20%"},
|
||||
"options": {
|
||||
"url": "{{entire_url('./api/llm_api_map_create.dspy')}}",
|
||||
"params": {
|
||||
"llmid": "$[add_form.llmid]$",
|
||||
"llmcatelogid": "$[add_form.llmcatelogid]$",
|
||||
"apiname": "$[add_form.apiname]$",
|
||||
"query_apiname": "$[add_form.query_apiname]$",
|
||||
"query_period": "$[add_form.query_period]$",
|
||||
"ppid": "$[add_form.ppid]$"
|
||||
}
|
||||
}
|
||||
}
|
||||
]
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user