Skip to content

Commit

Permalink
Merge pull request #661 from RockChinQ/perf/audit-v2
Browse files Browse the repository at this point in the history
Feat: 优化 v2 审计 API 调用逻辑
  • Loading branch information
RockChinQ authored Jan 12, 2024
2 parents 41b3023 + ab8d77c commit 701cb7b
Show file tree
Hide file tree
Showing 5 changed files with 23 additions and 27 deletions.
4 changes: 2 additions & 2 deletions config-template.py
Original file line number Diff line number Diff line change
Expand Up @@ -362,8 +362,8 @@
upgrade_dependencies = False

# 是否上报统计信息
# 用于统计机器人的使用情况,不会收集任何用户信息
# 仅上报时间、字数使用量、绘图使用量,其他信息不会上报
# 用于统计机器人的使用情况,数据不公开,不会收集任何敏感信息。
# 仅实例识别UUID、上报时间、字数使用量、绘图使用量、插件使用情况、用户信息,其他信息不会上报
report_usage = True

# 日志级别
Expand Down
25 changes: 0 additions & 25 deletions pkg/audit/gatherer.py
Original file line number Diff line number Diff line change
Expand Up @@ -37,27 +37,6 @@ def __init__(self):
except:
pass

def report_to_server(self, subservice_name: str, count: int):
"""向中央服务器报告使用量
只会报告此次请求的使用量,不会报告总量。
不包含除版本号、使用类型、使用量以外的任何信息,仅供开发者分析使用情况。
"""

def thread_func():

try:
config = context.get_config_manager().data
if not config['report_usage']:
return
res = requests.get("http://reports.rockchin.top:18989/usage?service_name=qchatgpt.{}&version={}&count={}&msg_source={}".format(subservice_name, self.version_str, count, config['msg_source_adapter']))
if res.status_code != 200 or res.text != "ok":
logging.warning("report to server failed, status_code: {}, text: {}".format(res.status_code, res.text))
except:
return

threading.Thread(target=thread_func).start()

def get_usage(self, key_md5):
return self.usage[key_md5] if key_md5 in self.usage else {}

Expand All @@ -79,8 +58,6 @@ def report_text_model_usage(self, model, total_tokens):
self.usage[key_md5]["text"][model] += length
self.dump_to_db()

self.report_to_server("text", length)

def report_image_model_usage(self, size):
"""调用方报告图片模型请求图片使用量"""

Expand All @@ -98,8 +75,6 @@ def report_image_model_usage(self, size):
self.usage[key_md5]["image"][size] += 1
self.dump_to_db()

self.report_to_server("image", 1)

def get_text_length_of_key(self, key):
"""获取指定api-key (明文) 的文字总使用量(本地记录)"""
key_md5 = hashlib.md5(key.encode('utf-8')).hexdigest()
Expand Down
7 changes: 7 additions & 0 deletions pkg/utils/center/groups/main.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

from .. import apigroup
from ... import context


class V2MainDataAPI(apigroup.APIGroup):
Expand All @@ -9,6 +10,12 @@ class V2MainDataAPI(apigroup.APIGroup):
def __init__(self, prefix: str):
super().__init__(prefix+"/main")

def do(self, *args, **kwargs):
config = context.get_config_manager().data
if not config['report_usage']:
return None
return super().do(*args, **kwargs)

def post_update_record(
self,
spent_seconds: int,
Expand Down
7 changes: 7 additions & 0 deletions pkg/utils/center/groups/plugin.py
Original file line number Diff line number Diff line change
@@ -1,6 +1,7 @@
from __future__ import annotations

from .. import apigroup
from ... import context


class V2PluginDataAPI(apigroup.APIGroup):
Expand All @@ -9,6 +10,12 @@ class V2PluginDataAPI(apigroup.APIGroup):
def __init__(self, prefix: str):
super().__init__(prefix+"/plugin")

def do(self, *args, **kwargs):
config = context.get_config_manager().data
if not config['report_usage']:
return None
return super().do(*args, **kwargs)

def post_install_record(
self,
plugin: dict
Expand Down
7 changes: 7 additions & 0 deletions pkg/utils/center/groups/usage.py
Original file line number Diff line number Diff line change
@@ -1,13 +1,20 @@
from __future__ import annotations

from .. import apigroup
from ... import context


class V2UsageDataAPI(apigroup.APIGroup):
"""使用量数据相关 API"""

def __init__(self, prefix: str):
super().__init__(prefix+"/usage")

def do(self, *args, **kwargs):
config = context.get_config_manager().data
if not config['report_usage']:
return None
return super().do(*args, **kwargs)

def post_query_record(
self,
Expand Down

0 comments on commit 701cb7b

Please sign in to comment.