65 lines
3.6 KiB
Plaintext
65 lines
3.6 KiB
Plaintext
# online_check_popup.dspy — 模型上线检查弹窗(2026-09-07 用户定夺)
|
||
# 选择一个模型 → 点击上线检查 → 内部助手按模型配置后的测试过程处理:
|
||
# test_model_call 真实调用(完整治理链)→ check_model_accounting 记账检查
|
||
# (created 等 60~120 秒复查)→ platform_llm_status 复核状态 → 给出最终结论。
|
||
|
||
import json as _json
|
||
import random
|
||
|
||
uid = await get_user()
|
||
if not uid:
|
||
return _json.dumps({
|
||
"widgettype": "PopupWindow",
|
||
"options": {"title": "提示", "cwidth": 30, "cheight": 8, "auto_open": True},
|
||
"subwidgets": [{"widgettype": "Text", "options": {"text": "请先登录", "padding": "20px"}}]
|
||
}, ensure_ascii=False)
|
||
|
||
session_id = 'llmchk' + str(random.randint(100000, 999999))
|
||
chat_url = entire_url('/pipeline_core/api/agent_chat.dspy') + '?session_id=' + session_id + '&pipeline_id=platform_general'
|
||
models_url = entire_url('/pipeline-llm/api/get_llm_online_check_models.dspy')
|
||
|
||
# 上线检查:读模型下拉(UiCode.resultValue = 模型名),下达标准检查指令
|
||
check_script = (
|
||
"var io=bricks.getWidgetById('llm_chk_io',bricks.app);if(!io||!io.inputw)return;"
|
||
"var sel=bricks.getWidgetById('llm_chk_model',bricks.app);"
|
||
"var m=sel&&sel.resultValue?String(sel.resultValue()||'').trim():'';"
|
||
"if(!m){new bricks.Message({title:'缺少输入',message:'请先选择要检查的模型'});return;}"
|
||
"var p='请对模型「'+m+'」执行上线检查,按模型配置后的测试过程处理:"
|
||
"1) test_model_call 真实调用测试(生成类模型缺业务参数时先问我,不要编造);"
|
||
"2) check_model_accounting 用返回的 task_ref 检查记账(created 则等 60~120 秒复查一次);"
|
||
"3) platform_llm_status 复核模型/定价/供应商状态;"
|
||
"4) 最后明确告诉我检查结果:通过 / 不通过 + 各环节明细 + 遗留事项,不要粉饰。';"
|
||
"io.inputw.textw.setValue(p);io.inputw.input_finished();")
|
||
|
||
resp = {
|
||
"widgettype": "PopupWindow",
|
||
"id": "llm_online_chk_pw",
|
||
"options": {"title": "✅ 模型上线检查(内部助手)", "width": "85%", "height": "85%", "auto_open": True},
|
||
"subwidgets": [{
|
||
"widgettype": "VBox",
|
||
"options": {"css": "filler", "width": "100%", "height": "100%", "padding": "12px", "gap": "8px"},
|
||
"subwidgets": [
|
||
{"widgettype": "Text", "options": {
|
||
"text": "选择模型后点击「上线检查」:内部助手执行真实调用测试(完整治理链)→ 记账检查(独立复算金额)→ 状态复核,最后给出通过/不通过结论。",
|
||
"cfontsize": 0.9, "color": "#64748b", "halign": "left"}},
|
||
{"widgettype": "HBox",
|
||
"options": {"gap": "8px", "alignItems": "center"},
|
||
"subwidgets": [
|
||
{"widgettype": "Text", "options": {"text": "模型:", "cfontsize": 0.95, "halign": "left"}},
|
||
{"widgettype": "UiCode", "id": "llm_chk_model",
|
||
"options": {"name": "llm_chk_model", "dataurl": models_url,
|
||
"valueField": "value", "textField": "text",
|
||
"nullable": True, "cwidth": 30}},
|
||
{"widgettype": "Button", "id": "llm_chk_start",
|
||
"options": {"label": "上线检查", "css": "small"},
|
||
"binds": [{"wid": "self", "event": "click", "actiontype": "script",
|
||
"target": "self", "script": check_script}]}]},
|
||
{"widgettype": "AgentIO", "id": "llm_chk_io",
|
||
"options": {"css": "filler", "url": chat_url,
|
||
"model_dataurl": entire_url('/pipeline_core/api/agent_model_options.dspy') + '?session_id=' + session_id + '&pipeline_id=platform_general',
|
||
"model_cwidth": 14,
|
||
"placeholder": "也可以直接对内部助手说话,例如:对模型 xxx 做上线检查"}}
|
||
]}]
|
||
}
|
||
return _json.dumps(resp, ensure_ascii=False)
|