feat: 新增 llm_metrics 和 user_llm_policy 两张表
llm_metrics: 从 llmusage 抽取的轻量指标表 - userid, llmid, use_date, input/output/total tokens - amount, responsed_seconds, finish_seconds user_llm_policy: 用户模型策略(customer.admin 管理) - 每个用户每个模型可单独设限 - daily/monthly_call_limit, spending_alert/ceiling, max_concurrency - 缺省空=不限 - orgid+userid+llmid 唯一约束 菜单新增: 用户模型策略、模型使用指标
This commit is contained in:
parent
76673bf251
commit
354f556099
21
json/llm_metrics.json
Normal file
21
json/llm_metrics.json
Normal file
@ -0,0 +1,21 @@
|
||||
{
|
||||
"tblname": "llm_metrics",
|
||||
"title": "模型使用指标",
|
||||
"params": {
|
||||
"sortby": "use_time",
|
||||
"logined_userorgid": "userorgid",
|
||||
"browserfields": {
|
||||
"exclouded": ["id", "taskid"],
|
||||
"cwidth": {}
|
||||
},
|
||||
"editexclouded": ["id", "amount", "responsed_seconds", "finish_seconds", "status", "taskid"],
|
||||
"data_filter": {
|
||||
"AND": [
|
||||
{"field": "userorgid", "op": "=", "var": "userorgid"},
|
||||
{"field": "use_date", "op": "between", "var": "use_date"}
|
||||
]
|
||||
},
|
||||
"filter_labels": {"use_date": "使用日期"},
|
||||
"filter_title": "查询条件"
|
||||
}
|
||||
}
|
||||
18
json/user_llm_policy.json
Normal file
18
json/user_llm_policy.json
Normal file
@ -0,0 +1,18 @@
|
||||
{
|
||||
"tblname": "user_llm_policy",
|
||||
"title": "用户模型策略",
|
||||
"params": {
|
||||
"sortby": "userid",
|
||||
"logined_userorgid": "orgid",
|
||||
"browserfields": {
|
||||
"exclouded": ["id", "orgid", "created_at", "updated_at"],
|
||||
"cwidth": {}
|
||||
},
|
||||
"editexclouded": ["id", "orgid", "created_at", "updated_at", "created_by"],
|
||||
"data_filter": {
|
||||
"AND": [
|
||||
{"field": "orgid", "op": "=", "var": "orgid"}
|
||||
]
|
||||
}
|
||||
}
|
||||
}
|
||||
36
models/llm_metrics.json
Normal file
36
models/llm_metrics.json
Normal file
@ -0,0 +1,36 @@
|
||||
{
|
||||
"summary": [
|
||||
{
|
||||
"name": "llm_metrics",
|
||||
"title": "模型使用指标",
|
||||
"primary": ["id"]
|
||||
}
|
||||
],
|
||||
"fields": [
|
||||
{"name": "id", "title": "id", "type": "str", "length": 32},
|
||||
{"name": "userid", "title": "用户id", "type": "str", "length": 32},
|
||||
{"name": "userorgid", "title": "用户机构", "type": "str", "length": 32},
|
||||
{"name": "llmid", "title": "模型", "type": "str", "length": 32},
|
||||
{"name": "use_date", "title": "使用日期", "type": "date"},
|
||||
{"name": "use_time", "title": "使用时间", "type": "timestamp"},
|
||||
{"name": "input_tokens", "title": "输入tokens", "type": "int", "default": "0"},
|
||||
{"name": "output_tokens", "title": "输出tokens", "type": "int", "default": "0"},
|
||||
{"name": "total_tokens", "title": "总tokens", "type": "int", "default": "0"},
|
||||
{"name": "amount", "title": "金额", "type": "float", "length": 18, "dec": 4, "default": "0"},
|
||||
{"name": "responsed_seconds", "title": "响应时长(秒)", "type": "float", "length": 18, "dec": 2, "nullable": true},
|
||||
{"name": "finish_seconds", "title": "完成时长(秒)", "type": "float", "length": 18, "dec": 2, "nullable": true},
|
||||
{"name": "status", "title": "状态", "type": "str", "length": 32, "nullable": true},
|
||||
{"name": "taskid", "title": "任务号", "type": "str", "length": 32, "nullable": true}
|
||||
],
|
||||
"indexes": [
|
||||
{"name": "idx1", "idxtype": "index", "idxfields": ["userid", "use_date"]},
|
||||
{"name": "idx2", "idxtype": "index", "idxfields": ["userorgid", "use_date"]},
|
||||
{"name": "idx3", "idxtype": "index", "idxfields": ["llmid", "use_date"]},
|
||||
{"name": "idx4", "idxtype": "index", "idxfields": ["use_time"]}
|
||||
],
|
||||
"codes": [
|
||||
{"field": "userid", "table": "users", "valuefield": "id", "textfield": "username"},
|
||||
{"field": "llmid", "table": "llm", "valuefield": "id", "textfield": "model"},
|
||||
{"field": "userorgid", "table": "organization", "valuefield": "id", "textfield": "orgname"}
|
||||
]
|
||||
}
|
||||
35
models/user_llm_policy.json
Normal file
35
models/user_llm_policy.json
Normal file
@ -0,0 +1,35 @@
|
||||
{
|
||||
"summary": [
|
||||
{
|
||||
"name": "user_llm_policy",
|
||||
"title": "用户模型策略",
|
||||
"primary": ["id"]
|
||||
}
|
||||
],
|
||||
"fields": [
|
||||
{"name": "id", "title": "id", "type": "str", "length": 32},
|
||||
{"name": "orgid", "title": "所属机构", "type": "str", "length": 32},
|
||||
{"name": "userid", "title": "用户", "type": "str", "length": 32},
|
||||
{"name": "llmid", "title": "模型", "type": "str", "length": 32, "nullable": true},
|
||||
{"name": "daily_call_limit", "title": "日调用上限", "type": "int", "nullable": true},
|
||||
{"name": "monthly_call_limit", "title": "月调用上限", "type": "int", "nullable": true},
|
||||
{"name": "spending_alert", "title": "花费预警", "type": "float", "length": 18, "dec": 2, "nullable": true},
|
||||
{"name": "spending_ceiling", "title": "费用上限", "type": "float", "length": 18, "dec": 2, "nullable": true},
|
||||
{"name": "max_concurrency", "title": "并发上限", "type": "int", "nullable": true},
|
||||
{"name": "status", "title": "状态", "type": "str", "length": 10, "default": "active"},
|
||||
{"name": "created_at", "title": "创建时间", "type": "timestamp", "nullable": true},
|
||||
{"name": "updated_at", "title": "更新时间", "type": "timestamp", "nullable": true},
|
||||
{"name": "created_by", "title": "创建人", "type": "str", "length": 32, "nullable": true},
|
||||
{"name": "remark", "title": "备注", "type": "str", "length": 500, "nullable": true}
|
||||
],
|
||||
"indexes": [
|
||||
{"name": "idx1", "idxtype": "unique", "idxfields": ["orgid", "userid", "llmid"]},
|
||||
{"name": "idx2", "idxtype": "index", "idxfields": ["orgid"]},
|
||||
{"name": "idx3", "idxtype": "index", "idxfields": ["userid"]}
|
||||
],
|
||||
"codes": [
|
||||
{"field": "userid", "table": "users", "valuefield": "id", "textfield": "username"},
|
||||
{"field": "llmid", "table": "llm", "valuefield": "id", "textfield": "model"},
|
||||
{"field": "orgid", "table": "organization", "valuefield": "id", "textfield": "orgname"}
|
||||
]
|
||||
}
|
||||
@ -36,6 +36,16 @@
|
||||
"name":"failed_accounting",
|
||||
"label":"记账失败记录",
|
||||
"url":"{{entire_url('/llmage/failed_accounting.ui')}}"
|
||||
},
|
||||
{
|
||||
"name":"user_llm_policy",
|
||||
"label":"用户模型策略",
|
||||
"url":"{{entire_url('/llmage/user_llm_policy')}}"
|
||||
},
|
||||
{
|
||||
"name":"llm_metrics",
|
||||
"label":"模型使用指标",
|
||||
"url":"{{entire_url('/llmage/llm_metrics')}}"
|
||||
}
|
||||
]
|
||||
}
|
||||
|
||||
Loading…
x
Reference in New Issue
Block a user