Keldos commited on
Commit
8d81d5a
·
1 Parent(s): ccd8f6d

feat: 重新加入将usage显示为进度条功能

Browse files

原功能显示赠金进度条,
本在 ec10bf7faa610cac1d8ff35a420426fd9f60d3b6 引入,
94f0d7d23587384474abc2472c96689144208bba 移除

assets/custom.css CHANGED
@@ -111,7 +111,7 @@ footer {
111
  }
112
  .progress-bar {
113
  background-color: var(--input-background-fill);;
114
- margin: 0 1em;
115
  height: 20px;
116
  border-radius: 10px;
117
  overflow: hidden;
 
111
  }
112
  .progress-bar {
113
  background-color: var(--input-background-fill);;
114
+ margin: .5em 0 !important;
115
  height: 20px;
116
  border-radius: 10px;
117
  overflow: hidden;
config_example.json CHANGED
@@ -2,6 +2,7 @@
2
  // 你的OpenAI API Key,一般必填,
3
  // 若缺省填为 "openai_api_key": "" 则必须再在图形界面中填入API Key
4
  "openai_api_key": "",
 
5
  // 你的xmchat API Key,与OpenAI API Key不同
6
  "xmchat_api_key": "",
7
  "language": "auto",
 
2
  // 你的OpenAI API Key,一般必填,
3
  // 若缺省填为 "openai_api_key": "" 则必须再在图形界面中填入API Key
4
  "openai_api_key": "",
5
+ "usage_limit": 120, // API Key的当月限额,单位:美元
6
  // 你的xmchat API Key,与OpenAI API Key不同
7
  "xmchat_api_key": "",
8
  "language": "auto",
locale/en_US.json CHANGED
@@ -50,6 +50,7 @@
50
  ",本次对话累计消耗了 ": ",Total cost for this dialogue is ",
51
  "**获取API使用情况失败**": "**Failed to get API usage**",
52
  "**本月使用金额** ": "**Monthly usage** ",
 
53
  "获取API使用情况失败:": "Failed to get API usage:",
54
  "API密钥更改为了": "The API key is changed to",
55
  "JSON解析错误,收到的内容: ": "JSON parsing error, received content: ",
 
50
  ",本次对话累计消耗了 ": ",Total cost for this dialogue is ",
51
  "**获取API使用情况失败**": "**Failed to get API usage**",
52
  "**本月使用金额** ": "**Monthly usage** ",
53
+ "本月使用金额": "Monthly usage",
54
  "获取API使用情况失败:": "Failed to get API usage:",
55
  "API密钥更改为了": "The API key is changed to",
56
  "JSON解析错误,收到的内容: ": "JSON parsing error, received content: ",
locale/ja_JP.json CHANGED
@@ -50,6 +50,7 @@
50
  ",本次对话累计消耗了 ": ", 今の会話で消費合計 ",
51
  "**获取API使用情况失败**": "**API使用状況の取得に失敗しました**",
52
  "**本月使用金额** ": "**今月の使用料金** ",
 
53
  "获取API使用情况失败:": "API使用状況の取得に失敗しました:",
54
  "API密钥更改为了": "APIキーが変更されました",
55
  "JSON解析错误,收到的内容: ": "JSON解析エラー、受信内容: ",
 
50
  ",本次对话累计消耗了 ": ", 今の会話で消費合計 ",
51
  "**获取API使用情况失败**": "**API使用状況の取得に失敗しました**",
52
  "**本月使用金额** ": "**今月の使用料金** ",
53
+ "本月使用金额": "今月の使用料金",
54
  "获取API使用情况失败:": "API使用状況の取得に失敗しました:",
55
  "API密钥更改为了": "APIキーが変更されました",
56
  "JSON解析错误,收到的内容: ": "JSON解析エラー、受信内容: ",
modules/config.py CHANGED
@@ -19,6 +19,7 @@ __all__ = [
19
  "advance_docs",
20
  "update_doc_config",
21
  "render_latex",
 
22
  "multi_api_key",
23
  "server_name",
24
  "server_port",
@@ -82,6 +83,8 @@ if render_latex:
82
  else:
83
  os.environ["RENDER_LATEX"] = "no"
84
 
 
 
85
  ## 多账户机制
86
  multi_api_key = config.get("multi_api_key", False) # 是否开启多账户机制
87
  if multi_api_key:
 
19
  "advance_docs",
20
  "update_doc_config",
21
  "render_latex",
22
+ "usage_limit",
23
  "multi_api_key",
24
  "server_name",
25
  "server_port",
 
83
  else:
84
  os.environ["RENDER_LATEX"] = "no"
85
 
86
+ usage_limit = os.environ.get("USAGE_LIMIT", config.get("usage_limit", 120))
87
+
88
  ## 多账户机制
89
  multi_api_key = config.get("multi_api_key", False) # 是否开启多账户机制
90
  if multi_api_key:
modules/models/models.py CHANGED
@@ -25,7 +25,7 @@ from ..presets import *
25
  from ..llama_func import *
26
  from ..utils import *
27
  from .. import shared
28
- from ..config import retrieve_proxy
29
  from modules import config
30
  from .base_model import BaseLLMModel, ModelType
31
 
@@ -90,8 +90,19 @@ class OpenAIClient(BaseLLMModel):
90
  except Exception as e:
91
  logging.error(f"获取API使用情况失败:" + str(e))
92
  return i18n("**获取API使用情况失败**")
93
- rounded_usage = "{:.5f}".format(usage_data["total_usage"] / 100)
94
- return i18n("**本月使用金额** ") + f"\u3000 ${rounded_usage}"
 
 
 
 
 
 
 
 
 
 
 
95
  except requests.exceptions.ConnectTimeout:
96
  status_text = (
97
  STANDARD_ERROR_MSG + CONNECTION_TIMEOUT_MSG + ERROR_RETRIEVE_MSG
 
25
  from ..llama_func import *
26
  from ..utils import *
27
  from .. import shared
28
+ from ..config import retrieve_proxy, usage_limit
29
  from modules import config
30
  from .base_model import BaseLLMModel, ModelType
31
 
 
90
  except Exception as e:
91
  logging.error(f"获取API使用情况失败:" + str(e))
92
  return i18n("**获取API使用情况失败**")
93
+ # rounded_usage = "{:.5f}".format(usage_data["total_usage"] / 100)
94
+ rounded_usage = round(usage_data["total_usage"] / 100, 5)
95
+ usage_percent = round(usage_data["total_usage"] / usage_limit, 2)
96
+ # return i18n("**本月使用金额** ") + f"\u3000 ${rounded_usage}"
97
+ return """\
98
+ <b>""" + i18n("本月使用金额") + f"""</b>
99
+ <div class="progress-bar">
100
+ <div class="progress" style="width: {usage_percent}%;">
101
+ <span class="progress-text">{usage_percent}%</span>
102
+ </div>
103
+ </div>
104
+ <div style="display: flex; justify-content: space-between;"><span>${rounded_usage}</span><span>${usage_limit}</span></div>
105
+ """
106
  except requests.exceptions.ConnectTimeout:
107
  status_text = (
108
  STANDARD_ERROR_MSG + CONNECTION_TIMEOUT_MSG + ERROR_RETRIEVE_MSG