Spaces:
Runtime error
Runtime error
Update app.py
Browse files
app.py
CHANGED
@@ -9,15 +9,24 @@ enable_btn = gr.Button.update(interactive=True)
|
|
9 |
|
10 |
import sqlite3
|
11 |
|
|
|
|
|
12 |
def init_database():
|
13 |
-
|
14 |
-
|
15 |
-
|
16 |
-
|
17 |
-
|
18 |
-
|
19 |
-
|
20 |
-
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
21 |
|
22 |
# Load chatbot URLs and model names from a JSON file
|
23 |
# Load chatbot model adapter names from a text file
|
@@ -39,25 +48,7 @@ from datasets import load_dataset,DatasetDict,Dataset
|
|
39 |
import requests
|
40 |
import os
|
41 |
|
42 |
-
|
43 |
-
conn = sqlite3.connect('elo_ratings.db')
|
44 |
-
c = conn.cursor()
|
45 |
-
c.execute("SELECT * FROM elo_ratings")
|
46 |
-
rows = c.fetchall()
|
47 |
-
conn.close()
|
48 |
-
if rows:
|
49 |
-
return {row[0]: {'elo_rating': row[1], 'games_played': row[2]} for row in rows}
|
50 |
-
else:
|
51 |
-
return {"default": {'elo_rating': 1200, 'games_played': 0}}
|
52 |
-
def update_elo_rating(updated_ratings, winner, loser):
|
53 |
-
conn = sqlite3.connect('elo_ratings.db')
|
54 |
-
c = conn.cursor()
|
55 |
-
c.execute("INSERT OR REPLACE INTO elo_ratings (bot_name, elo_rating, games_played) VALUES (?, ?, ?)",
|
56 |
-
(winner, updated_ratings[winner]['elo_rating'], updated_ratings[winner]['games_played']))
|
57 |
-
c.execute("INSERT OR REPLACE INTO elo_ratings (bot_name, elo_rating, games_played) VALUES (?, ?, ?)",
|
58 |
-
(loser, updated_ratings[loser]['elo_rating'], updated_ratings[loser]['games_played']))
|
59 |
-
conn.commit()
|
60 |
-
conn.close()
|
61 |
# Function to get bot response
|
62 |
def format_alpaca_prompt(state):
|
63 |
alpaca_prompt = "Below is an instruction that describes a task. Write a response that appropriately completes the request."
|
@@ -124,21 +115,22 @@ async def chat_with_bots(user_input, state):
|
|
124 |
)
|
125 |
|
126 |
return bot1_response, bot2_response
|
127 |
-
def update_ratings(state, winner_index):
|
128 |
-
elo_ratings = get_user_elo_ratings()
|
129 |
winner = state['last_bots'][winner_index]
|
130 |
loser = state['last_bots'][1 - winner_index]
|
131 |
|
132 |
elo_ratings = update_elo_ratings(elo_ratings, winner, loser)
|
133 |
-
update_elo_rating(elo_ratings, winner, loser)
|
134 |
-
return [('Winner: ', winner.replace('rwitz/','').replace('-lora','')), ('Loser: ',
|
135 |
-
|
136 |
-
|
|
|
137 |
chatbot.append(update_message[0])
|
138 |
chatbot2.append(update_message[1])
|
139 |
return chatbot, chatbot2,gr.Button.update(interactive=False),gr.Button.update(interactive=False),gr.Textbox.update(interactive=False),gr.Button.update(interactive=False) # Disable voting buttons
|
140 |
-
def vote_down_model(state, chatbot,chatbot2):
|
141 |
-
update_message = update_ratings(state, 1)
|
142 |
chatbot2.append(update_message[0])
|
143 |
chatbot.append(update_message[1])
|
144 |
return chatbot,chatbot2, gr.Button.update(interactive=False),gr.Button.update(interactive=False),gr.Textbox.update(interactive=False),gr.Button.update(interactive=False) # Disable voting buttons
|
@@ -179,13 +171,10 @@ import pandas as pd
|
|
179 |
|
180 |
# Function to generate leaderboard data
|
181 |
|
182 |
-
def generate_leaderboard():
|
183 |
-
|
184 |
-
|
185 |
-
|
186 |
-
rows = c.fetchall()
|
187 |
-
conn.close()
|
188 |
-
leaderboard_data = pd.DataFrame(rows, columns=['Chatbot', 'ELO Score', 'Games Played'])
|
189 |
return leaderboard_data
|
190 |
|
191 |
def refresh_leaderboard():
|
@@ -227,5 +216,7 @@ with gr.Blocks() as demo:
|
|
227 |
|
228 |
# Launch the Gradio interface
|
229 |
if __name__ == "__main__":
|
230 |
-
init_database()
|
|
|
|
|
231 |
demo.launch(share=False)
|
|
|
9 |
|
10 |
import sqlite3
|
11 |
|
12 |
+
import pymongo
|
13 |
+
|
14 |
def init_database():
|
15 |
+
client = pymongo.MongoClient("mongodb+srv://rwitzman:<password>@cluster0.xb2urf6.mongodb.net/?retryWrites=true&w=majority&appName=Cluster0")
|
16 |
+
db = client["elo_ratings"]
|
17 |
+
collection = db["elo_ratings"]
|
18 |
+
return collection
|
19 |
+
|
20 |
+
def get_user_elo_ratings(collection):
|
21 |
+
rows = list(collection.find())
|
22 |
+
if rows:
|
23 |
+
return {row['bot_name']: {'elo_rating': row['elo_rating'], 'games_played': row['games_played']} for row in rows}
|
24 |
+
else:
|
25 |
+
return {"default": {'elo_rating': 1200, 'games_played': 0}}
|
26 |
+
|
27 |
+
def update_elo_rating(collection, updated_ratings, winner, loser):
|
28 |
+
collection.update_one({"bot_name": winner}, {"$set": {"elo_rating": updated_ratings[winner]['elo_rating'], "games_played": updated_ratings[winner]['games_played']}}, upsert=True)
|
29 |
+
collection.update_one({"bot_name": loser}, {"$set": {"elo_rating": updated_ratings[loser]['elo_rating'], "games_played": updated_ratings[loser]['games_played']}}, upsert=True)
|
30 |
|
31 |
# Load chatbot URLs and model names from a JSON file
|
32 |
# Load chatbot model adapter names from a text file
|
|
|
48 |
import requests
|
49 |
import os
|
50 |
|
51 |
+
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
|
52 |
# Function to get bot response
|
53 |
def format_alpaca_prompt(state):
|
54 |
alpaca_prompt = "Below is an instruction that describes a task. Write a response that appropriately completes the request."
|
|
|
115 |
)
|
116 |
|
117 |
return bot1_response, bot2_response
|
118 |
+
def update_ratings(state, winner_index, collection):
|
119 |
+
elo_ratings = get_user_elo_ratings(collection)
|
120 |
winner = state['last_bots'][winner_index]
|
121 |
loser = state['last_bots'][1 - winner_index]
|
122 |
|
123 |
elo_ratings = update_elo_ratings(elo_ratings, winner, loser)
|
124 |
+
update_elo_rating(collection, elo_ratings, winner, loser)
|
125 |
+
return [('Winner: ', winner.replace('rwitz/','').replace('-lora','')), ('Loser: ', loser.replace('rwitz/','').replace('-lora',''))]
|
126 |
+
|
127 |
+
def vote_up_model(state, chatbot, chatbot2, collection):
|
128 |
+
update_message = update_ratings(state, 0, collection)
|
129 |
chatbot.append(update_message[0])
|
130 |
chatbot2.append(update_message[1])
|
131 |
return chatbot, chatbot2,gr.Button.update(interactive=False),gr.Button.update(interactive=False),gr.Textbox.update(interactive=False),gr.Button.update(interactive=False) # Disable voting buttons
|
132 |
+
def vote_down_model(state, chatbot, chatbot2, collection):
|
133 |
+
update_message = update_ratings(state, 1, collection)
|
134 |
chatbot2.append(update_message[0])
|
135 |
chatbot.append(update_message[1])
|
136 |
return chatbot,chatbot2, gr.Button.update(interactive=False),gr.Button.update(interactive=False),gr.Textbox.update(interactive=False),gr.Button.update(interactive=False) # Disable voting buttons
|
|
|
171 |
|
172 |
# Function to generate leaderboard data
|
173 |
|
174 |
+
def generate_leaderboard(collection):
|
175 |
+
rows = list(collection.find())
|
176 |
+
leaderboard_data = pd.DataFrame(rows, columns=['bot_name', 'elo_rating', 'games_played'])
|
177 |
+
leaderboard_data.columns = ['Chatbot', 'ELO Score', 'Games Played']
|
|
|
|
|
|
|
178 |
return leaderboard_data
|
179 |
|
180 |
def refresh_leaderboard():
|
|
|
216 |
|
217 |
# Launch the Gradio interface
|
218 |
if __name__ == "__main__":
|
219 |
+
collection = init_database()
|
220 |
+
upvote_btn_a.click(vote_up_model, inputs=[state, chatbot1, chatbot2, collection], outputs=[chatbot1, chatbot2, upvote_btn_a, upvote_btn_b, textbox, submit_btn])
|
221 |
+
upvote_btn_b.click(vote_down_model, inputs=[state, chatbot1, chatbot2, collection], outputs=[chatbot1, chatbot2, upvote_btn_a, upvote_btn_b, textbox, submit_btn])
|
222 |
demo.launch(share=False)
|