Spaces:
Running
Running
Update app.py
Browse files
app.py
CHANGED
@@ -11,12 +11,30 @@ users = os.getenv('LOGNAME')
|
|
11 |
unames = users.split(',')
|
12 |
pwds = os.getenv('PASSWORD')
|
13 |
pwdList = pwds.split(',')
|
14 |
-
cwd = os.getcwd()
|
15 |
dp = Path('../data')
|
16 |
dp.mkdir(exist_ok=True)
|
|
|
17 |
|
18 |
client = OpenAI(api_key = key)
|
19 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
20 |
|
21 |
def clear():
|
22 |
return [None, [], None]
|
@@ -25,6 +43,13 @@ def updatePassword(txt):
|
|
25 |
return [txt, "*********"]
|
26 |
|
27 |
def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
28 |
if user_window in unames and pwd_window in pwdList:
|
29 |
past.append({"role":"user", "content":prompt})
|
30 |
completion = client.chat.completions.create(model=gptModel,
|
@@ -35,15 +60,18 @@ def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
|
35 |
response += "\n\nTHIS DIALOG IS GETTING TOO LONG. PLEASE CLEAR IT."
|
36 |
past.append({"role":"assistant", "content": reply})
|
37 |
try:
|
38 |
-
|
39 |
-
|
40 |
-
|
|
|
41 |
response += '\n' + f.read()
|
42 |
except Exception as e:
|
43 |
-
response += f"\nDATA LOG FAILED, path = {
|
44 |
-
|
|
|
|
|
45 |
else:
|
46 |
-
return [[], "User name and/or password are incorrect"
|
47 |
|
48 |
with gr.Blocks() as demo:
|
49 |
history = gr.State([])
|
|
|
11 |
unames = users.split(',')
|
12 |
pwds = os.getenv('PASSWORD')
|
13 |
pwdList = pwds.split(',')
|
|
|
14 |
dp = Path('../data')
|
15 |
dp.mkdir(exist_ok=True)
|
16 |
+
dataDir = '../data/'
|
17 |
|
18 |
client = OpenAI(api_key = key)
|
19 |
+
|
20 |
+
def genUsageStats(do_reset=False):
|
21 |
+
result = []
|
22 |
+
for user in unames:
|
23 |
+
total = 0
|
24 |
+
fp = dataDir + user + '_log.txt'
|
25 |
+
if os.path.exists(fp):
|
26 |
+
with open(fp) as f:
|
27 |
+
dataList = f.readlines()
|
28 |
+
if do_reset:
|
29 |
+
os.remove(fp)
|
30 |
+
for line in dataList:
|
31 |
+
(u, c) = line.split(':')
|
32 |
+
total += int(c)
|
33 |
+
else:
|
34 |
+
total = 0
|
35 |
+
result.append([user, str(total)])
|
36 |
+
|
37 |
+
return result
|
38 |
|
39 |
def clear():
|
40 |
return [None, [], None]
|
|
|
43 |
return [txt, "*********"]
|
44 |
|
45 |
def chat(prompt, user_window, pwd_window, past, response, gptModel):
|
46 |
+
if user_window == 'dave' and pwd_window == 'boss':
|
47 |
+
if prompt == 'stats':
|
48 |
+
response = genUsageStats()
|
49 |
+
return [past, response, None]
|
50 |
+
if prompt == 'reset':
|
51 |
+
response = genUsageStats(True)
|
52 |
+
return [past, response, None]
|
53 |
if user_window in unames and pwd_window in pwdList:
|
54 |
past.append({"role":"user", "content":prompt})
|
55 |
completion = client.chat.completions.create(model=gptModel,
|
|
|
60 |
response += "\n\nTHIS DIALOG IS GETTING TOO LONG. PLEASE CLEAR IT."
|
61 |
past.append({"role":"assistant", "content": reply})
|
62 |
try:
|
63 |
+
dataFile = dataDir + user_window + '_log.txt'
|
64 |
+
with open(dataFile, 'a') as f:
|
65 |
+
f.write(f'{user_window}: {len(response)}\n')
|
66 |
+
with open(dataFile) as f:
|
67 |
response += '\n' + f.read()
|
68 |
except Exception as e:
|
69 |
+
response += f"\nDATA LOG FAILED, path = {dataFile}\nmsg = {e}"
|
70 |
+
# response += f'\npPath = {p.absolute()}'
|
71 |
+
# response += '\nUsers = ' + ','.join(unames)
|
72 |
+
return [past, response , None]
|
73 |
else:
|
74 |
+
return [[], "User name and/or password are incorrect", prompt]
|
75 |
|
76 |
with gr.Blocks() as demo:
|
77 |
history = gr.State([])
|