diff --git a/json/llm_metrics.json b/json/llm_metrics.json new file mode 100644 index 0000000..2a41652 --- /dev/null +++ b/json/llm_metrics.json @@ -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": "查询条件" + } +} diff --git a/json/user_llm_policy.json b/json/user_llm_policy.json new file mode 100644 index 0000000..02a3424 --- /dev/null +++ b/json/user_llm_policy.json @@ -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"} + ] + } + } +} diff --git a/models/llm_metrics.json b/models/llm_metrics.json new file mode 100644 index 0000000..7036a06 --- /dev/null +++ b/models/llm_metrics.json @@ -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"} + ] +} diff --git a/models/user_llm_policy.json b/models/user_llm_policy.json new file mode 100644 index 0000000..023c4b9 --- /dev/null +++ b/models/user_llm_policy.json @@ -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"} + ] +} diff --git a/wwwroot/menu.ui b/wwwroot/menu.ui index bf7d465..376e1d0 100644 --- a/wwwroot/menu.ui +++ b/wwwroot/menu.ui @@ -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')}}" } ] }