Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -28,8 +28,8 @@ client = OpenAI(api_key = key)
|
|
28 |
def genUsageStats(do_reset=False):
|
29 |
result = []
|
30 |
for user in unames:
|
31 |
-
|
32 |
-
|
33 |
fp = dataDir + user + '_log.txt'
|
34 |
if os.path.exists(fp):
|
35 |
accessOk = False
|
@@ -43,41 +43,42 @@ def genUsageStats(do_reset=False):
|
|
43 |
for line in dataList:
|
44 |
(u, t) = line.split(':')
|
45 |
(t, m) = t.split('-')
|
46 |
-
if '
|
47 |
-
|
48 |
else:
|
49 |
-
|
50 |
accessOk = True
|
51 |
break
|
52 |
except:
|
53 |
sleep(3)
|
54 |
if not accessOk:
|
55 |
return f'File access failed reading stats for user: {user}'
|
56 |
-
|
57 |
-
# total = 0
|
58 |
-
result.append([user, str(tokens3), str(tokens4)])
|
59 |
return result
|
60 |
|
61 |
def clear():
|
62 |
return [None, [], None]
|
63 |
|
64 |
def updatePassword(txt):
|
65 |
-
return [txt.lower(), "*********"]
|
66 |
|
67 |
# def setModel(val):
|
68 |
# return val
|
69 |
|
70 |
def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
71 |
-
user_window = user_window.lower()
|
72 |
isBoss = False
|
73 |
if user_window == unames[0] and pwd_window == pwdList[0]:
|
74 |
isBoss = True
|
75 |
if prompt == 'stats':
|
76 |
response = genUsageStats()
|
77 |
-
return [past, response, None]
|
78 |
if prompt == 'reset':
|
79 |
response = genUsageStats(True)
|
80 |
-
return [past, response, None]
|
|
|
|
|
|
|
81 |
if user_window in unames and pwd_window in pwdList:
|
82 |
past.append({"role":"user", "content":prompt})
|
83 |
completion = client.chat.completions.create(model=gptModel,
|
@@ -95,9 +96,9 @@ def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
|
95 |
try:
|
96 |
dataFile = new_func(user_window)
|
97 |
with open(dataFile, 'a') as f:
|
98 |
-
m = '
|
99 |
-
if '
|
100 |
-
m = '
|
101 |
f.write(f'{user_window}: {tokens}-{m}\n')
|
102 |
accessOk = True
|
103 |
break
|
@@ -105,9 +106,9 @@ def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
|
105 |
sleep(3)
|
106 |
if not accessOk:
|
107 |
response += f"\nDATA LOG FAILED, path = {dataFile}"
|
108 |
-
return [past, response , None]
|
109 |
else:
|
110 |
-
return [[], "User name and/or password are incorrect", prompt]
|
111 |
|
112 |
def new_func(user_window):
|
113 |
dataFile = dataDir + user_window + '_log.txt'
|
@@ -132,7 +133,7 @@ with gr.Blocks() as demo:
|
|
132 |
prompt_window = gr.Textbox(label = "Prompt or Question")
|
133 |
output_window = gr.Textbox(label = "Dialog")
|
134 |
submit_window.click(chat, inputs=[prompt_window, user_window, password, history, output_window, model],
|
135 |
-
outputs=[history, output_window, prompt_window])
|
136 |
clear_button.click(clear, inputs=[], outputs=[prompt_window, history, output_window])
|
137 |
# gpt_chooser.input(fn=setModel, inputs=gpt_chooser, outputs=model)
|
138 |
demo.launch()
|
|
|
28 |
def genUsageStats(do_reset=False):
|
29 |
result = []
|
30 |
for user in unames:
|
31 |
+
tokens4o = 0
|
32 |
+
tokens4mini = 0
|
33 |
fp = dataDir + user + '_log.txt'
|
34 |
if os.path.exists(fp):
|
35 |
accessOk = False
|
|
|
43 |
for line in dataList:
|
44 |
(u, t) = line.split(':')
|
45 |
(t, m) = t.split('-')
|
46 |
+
if 'mini' in m:
|
47 |
+
tokens4mini += int(t)
|
48 |
else:
|
49 |
+
tokens4o += int(t)
|
50 |
accessOk = True
|
51 |
break
|
52 |
except:
|
53 |
sleep(3)
|
54 |
if not accessOk:
|
55 |
return f'File access failed reading stats for user: {user}'
|
56 |
+
result.append([user, str(tokens4mini), str(tokens4o)])
|
|
|
|
|
57 |
return result
|
58 |
|
59 |
def clear():
|
60 |
return [None, [], None]
|
61 |
|
62 |
def updatePassword(txt):
|
63 |
+
return [txt.lower().strip(), "*********"]
|
64 |
|
65 |
# def setModel(val):
|
66 |
# return val
|
67 |
|
68 |
def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
69 |
+
user_window = user_window.lower().strip()
|
70 |
isBoss = False
|
71 |
if user_window == unames[0] and pwd_window == pwdList[0]:
|
72 |
isBoss = True
|
73 |
if prompt == 'stats':
|
74 |
response = genUsageStats()
|
75 |
+
return [past, response, None, gptModel]
|
76 |
if prompt == 'reset':
|
77 |
response = genUsageStats(True)
|
78 |
+
return [past, response, None, gptModel]
|
79 |
+
if prompt.startswith('gpt4'):
|
80 |
+
gptModel = 'gpt-4o'
|
81 |
+
prompt = prompt[5:]
|
82 |
if user_window in unames and pwd_window in pwdList:
|
83 |
past.append({"role":"user", "content":prompt})
|
84 |
completion = client.chat.completions.create(model=gptModel,
|
|
|
96 |
try:
|
97 |
dataFile = new_func(user_window)
|
98 |
with open(dataFile, 'a') as f:
|
99 |
+
m = '4o'
|
100 |
+
if 'mini' in gptModel:
|
101 |
+
m = '4omini'
|
102 |
f.write(f'{user_window}: {tokens}-{m}\n')
|
103 |
accessOk = True
|
104 |
break
|
|
|
106 |
sleep(3)
|
107 |
if not accessOk:
|
108 |
response += f"\nDATA LOG FAILED, path = {dataFile}"
|
109 |
+
return [past, response , None, gptModel]
|
110 |
else:
|
111 |
+
return [[], "User name and/or password are incorrect", prompt, gptModel]
|
112 |
|
113 |
def new_func(user_window):
|
114 |
dataFile = dataDir + user_window + '_log.txt'
|
|
|
133 |
prompt_window = gr.Textbox(label = "Prompt or Question")
|
134 |
output_window = gr.Textbox(label = "Dialog")
|
135 |
submit_window.click(chat, inputs=[prompt_window, user_window, password, history, output_window, model],
|
136 |
+
outputs=[history, output_window, prompt_window, model])
|
137 |
clear_button.click(clear, inputs=[], outputs=[prompt_window, history, output_window])
|
138 |
# gpt_chooser.input(fn=setModel, inputs=gpt_chooser, outputs=model)
|
139 |
demo.launch()
|