From dfecccfc5688e637c60e917b9375adebc5464842 Mon Sep 17 00:00:00 2001 From: =?UTF-8?q?=E9=9B=85=E8=AF=BA=E7=8B=90?= <212194964+foxcyber907@users.noreply.github.com> Date: Sat, 16 Aug 2025 14:26:18 +0800 Subject: [PATCH] =?UTF-8?q?llm=E7=BB=9F=E8=AE=A1=E8=AE=B0=E5=BD=95?= =?UTF-8?q?=E6=A8=A1=E5=9E=8B=E5=8F=8D=E5=BA=94=E6=97=B6=E9=97=B4?= MIME-Version: 1.0 Content-Type: text/plain; charset=UTF-8 Content-Transfer-Encoding: 8bit --- src/chat/utils/statistic.py | 22 ++++++++++++++++------ src/common/database/sqlalchemy_models.py | 8 ++++++++ src/llm_models/utils_model.py | 4 ++++ 3 files changed, 28 insertions(+), 6 deletions(-) diff --git a/src/chat/utils/statistic.py b/src/chat/utils/statistic.py index 2fa93c797..983a0c1d2 100644 --- a/src/chat/utils/statistic.py +++ b/src/chat/utils/statistic.py @@ -90,6 +90,18 @@ STD_TIME_COST_BY_MODULE = "std_time_costs_by_module" ONLINE_TIME = "online_time" TOTAL_MSG_CNT = "total_messages" MSG_CNT_BY_CHAT = "messages_by_chat" +TIME_COST_BY_TYPE = "time_costs_by_type" +TIME_COST_BY_USER = "time_costs_by_user" +TIME_COST_BY_MODEL = "time_costs_by_model" +TIME_COST_BY_MODULE = "time_costs_by_module" +AVG_TIME_COST_BY_TYPE = "avg_time_costs_by_type" +AVG_TIME_COST_BY_USER = "avg_time_costs_by_user" +AVG_TIME_COST_BY_MODEL = "avg_time_costs_by_model" +AVG_TIME_COST_BY_MODULE = "avg_time_costs_by_module" +STD_TIME_COST_BY_TYPE = "std_time_costs_by_type" +STD_TIME_COST_BY_USER = "std_time_costs_by_user" +STD_TIME_COST_BY_MODEL = "std_time_costs_by_model" +STD_TIME_COST_BY_MODULE = "std_time_costs_by_module" class OnlineTimeRecordTask(AsyncTask): @@ -418,7 +430,7 @@ class StatisticOutputTask(AsyncTask): stats[period_key][COST_BY_USER][user_id] += cost stats[period_key][COST_BY_MODEL][model_name] += cost stats[period_key][COST_BY_MODULE][module_name] += cost - + # 收集time_cost数据 time_cost = record.time_cost or 0.0 if time_cost > 0: # 只记录有效的time_cost @@ -427,8 +439,8 @@ class StatisticOutputTask(AsyncTask): stats[period_key][TIME_COST_BY_MODEL][model_name].append(time_cost) stats[period_key][TIME_COST_BY_MODULE][module_name].append(time_cost) break - - # 计算平均耗时和标准差 + + # 计算平均耗时和标准差 for period_key in stats: for category in [REQ_CNT_BY_TYPE, REQ_CNT_BY_USER, REQ_CNT_BY_MODEL, REQ_CNT_BY_MODULE]: time_cost_key = f"time_costs_by_{category.split('_')[-1]}" @@ -452,7 +464,6 @@ class StatisticOutputTask(AsyncTask): else: stats[period_key][avg_key][item_name] = 0.0 stats[period_key][std_key][item_name] = 0.0 - return stats @staticmethod @@ -687,7 +698,6 @@ class StatisticOutputTask(AsyncTask): data_fmt = "{:<32} {:>10} {:>12} {:>12} {:>12} {:>9.4f}¥ {:>10} {:>10}" output = [ - "按模型分类统计:", " 模型名称 调用次数 输入Token 输出Token Token总量 累计花费 平均耗时(秒) 标准差(秒)", ] for model_name, count in sorted(stats[REQ_CNT_BY_MODEL].items()): @@ -843,7 +853,7 @@ class StatisticOutputTask(AsyncTask):
| 模型名称 | 调用次数 | 输入Token | 输出Token | Token总量 | 累计花费 | 平均耗时(秒) | 标准差(秒) |
|---|---|---|---|---|---|---|---|
| 模块名称 | 调用次数 | 输入Token | 输出Token | Token总量 | 累计花费 | 平均耗时(秒) | 标准差(秒) |