Spaces:
Running
on
Zero
Running
on
Zero
test
Browse files- app.py +1 -4
- docs/leaderboard_header.md +6 -6
- indiebot_arena/ui/battle.py +11 -3
- indiebot_arena/ui/leaderboard.py +1 -1
- indiebot_arena/ui/registration.py +3 -3
app.py
CHANGED
@@ -11,10 +11,7 @@ dao = MongoDAO(MONGO_DB_URI, MONGO_DB_NAME)
|
|
11 |
bootstrap_service = BootstrapService(dao)
|
12 |
bootstrap_service.provision_database()
|
13 |
|
14 |
-
with
|
15 |
-
custom_css = f.read()
|
16 |
-
|
17 |
-
with gr.Blocks(css=custom_css) as demo:
|
18 |
with gr.Tabs():
|
19 |
with gr.TabItem("🏆 リーダーボード"):
|
20 |
leaderboard_content(dao, LANGUAGE)
|
|
|
11 |
bootstrap_service = BootstrapService(dao)
|
12 |
bootstrap_service.provision_database()
|
13 |
|
14 |
+
with gr.Blocks(theme=gr.themes.Citrus(primary_hue="sky"), css_paths="style.css") as demo:
|
|
|
|
|
|
|
15 |
with gr.Tabs():
|
16 |
with gr.TabItem("🏆 リーダーボード"):
|
17 |
leaderboard_content(dao, LANGUAGE)
|
docs/leaderboard_header.md
CHANGED
@@ -4,13 +4,13 @@
|
|
4 |
Chatbot Arenaにインスパイアされて開発されましが、以下のような違いがあります。
|
5 |
|
6 |
- 誰でもモデルを登録してコンペに参加可能
|
|
|
7 |
- 階級別にチャットバトルとリーダーボードがある
|
8 |
|
9 |
初期データとして、Google公式のInstruction-Tuning済みモデルを登録しています。
|
10 |
-
|
11 |
-
|
12 |
-
|
13 |
-
Google公式モデルを上回る日本語性能スコアのモデルをぜひ皆で作りましょう!
|
14 |
-
|
15 |
-
|
16 |
|
|
|
|
|
|
4 |
Chatbot Arenaにインスパイアされて開発されましが、以下のような違いがあります。
|
5 |
|
6 |
- 誰でもモデルを登録してコンペに参加可能
|
7 |
+
- 重みのファイルサイズの階級別で戦う
|
8 |
- 階級別にチャットバトルとリーダーボードがある
|
9 |
|
10 |
初期データとして、Google公式のInstruction-Tuning済みモデルを登録しています。
|
11 |
+
[モデルに投票]から匿名のチャットバトルに投票することが出来ます。
|
12 |
+
[モデルの登録]から自分の事後学習済みモデルを登録することも出来ます。
|
13 |
+
Google公式モデルをみんなで倒しましょう!
|
|
|
|
|
|
|
14 |
|
15 |
+
【更新履歴】
|
16 |
+
- 2025/03/31 ベータ版を公開。機能は一通り完成していますが、性能をテスト中。
|
indiebot_arena/ui/battle.py
CHANGED
@@ -1,5 +1,6 @@
|
|
1 |
import concurrent.futures
|
2 |
import hashlib
|
|
|
3 |
import random
|
4 |
import threading
|
5 |
|
@@ -13,6 +14,9 @@ from indiebot_arena.service.arena_service import ArenaService
|
|
13 |
|
14 |
DESCRIPTION = "### 💬 チャットバトル"
|
15 |
|
|
|
|
|
|
|
16 |
_model_cache = {}
|
17 |
_model_lock = threading.Lock()
|
18 |
|
@@ -97,6 +101,7 @@ def get_random_values(model_labels):
|
|
97 |
if MODEL_SELECTION_MODE=="manual":
|
98 |
return model_labels[0], model_labels[0]
|
99 |
|
|
|
100 |
def battle_content(dao, language):
|
101 |
arena_service = ArenaService(dao)
|
102 |
default_weight = "U-5GB"
|
@@ -166,6 +171,9 @@ def battle_content(dao, language):
|
|
166 |
)
|
167 |
|
168 |
with gr.Blocks(css="style.css") as battle_ui:
|
|
|
|
|
|
|
169 |
gr.Markdown(DESCRIPTION)
|
170 |
weight_class_radio = gr.Radio(
|
171 |
choices=["U-5GB", "U-10GB"],
|
@@ -195,8 +203,8 @@ def battle_content(dao, language):
|
|
195 |
chatbot_a = gr.Chatbot(label="Chatbot A")
|
196 |
chatbot_b = gr.Chatbot(label="Chatbot B")
|
197 |
with gr.Row():
|
198 |
-
vote_a_btn = gr.Button("A is better", interactive=False)
|
199 |
-
vote_b_btn = gr.Button("B is better", interactive=False)
|
200 |
user_input = gr.Textbox(
|
201 |
placeholder="日本語でメッセージを入力...",
|
202 |
submit_btn=True,
|
@@ -206,7 +214,7 @@ def battle_content(dao, language):
|
|
206 |
with gr.Column(scale=3):
|
207 |
vote_message = gr.Textbox(show_label=False, interactive=False, visible=False)
|
208 |
with gr.Column(scale=1):
|
209 |
-
next_battle_btn = gr.Button("次のバトルへ", interactive=False, visible=False, elem_id="next_battle_btn")
|
210 |
user_input.submit(
|
211 |
fn=submit_message,
|
212 |
inputs=[user_input, chatbot_a, chatbot_b, model_dropdown_a, model_dropdown_b],
|
|
|
1 |
import concurrent.futures
|
2 |
import hashlib
|
3 |
+
import os
|
4 |
import random
|
5 |
import threading
|
6 |
|
|
|
14 |
|
15 |
DESCRIPTION = "### 💬 チャットバトル"
|
16 |
|
17 |
+
base_dir = os.path.abspath(os.path.join(os.path.dirname(__file__), "..", ".."))
|
18 |
+
docs_path = os.path.join(base_dir, "docs", "battle_header.md")
|
19 |
+
|
20 |
_model_cache = {}
|
21 |
_model_lock = threading.Lock()
|
22 |
|
|
|
101 |
if MODEL_SELECTION_MODE=="manual":
|
102 |
return model_labels[0], model_labels[0]
|
103 |
|
104 |
+
|
105 |
def battle_content(dao, language):
|
106 |
arena_service = ArenaService(dao)
|
107 |
default_weight = "U-5GB"
|
|
|
171 |
)
|
172 |
|
173 |
with gr.Blocks(css="style.css") as battle_ui:
|
174 |
+
with open(docs_path, "r", encoding="utf-8") as f:
|
175 |
+
markdown_content = f.read()
|
176 |
+
gr.Markdown(markdown_content)
|
177 |
gr.Markdown(DESCRIPTION)
|
178 |
weight_class_radio = gr.Radio(
|
179 |
choices=["U-5GB", "U-10GB"],
|
|
|
203 |
chatbot_a = gr.Chatbot(label="Chatbot A")
|
204 |
chatbot_b = gr.Chatbot(label="Chatbot B")
|
205 |
with gr.Row():
|
206 |
+
vote_a_btn = gr.Button("A is better", variant="primary", interactive=False)
|
207 |
+
vote_b_btn = gr.Button("B is better", variant="primary", interactive=False)
|
208 |
user_input = gr.Textbox(
|
209 |
placeholder="日本語でメッセージを入力...",
|
210 |
submit_btn=True,
|
|
|
214 |
with gr.Column(scale=3):
|
215 |
vote_message = gr.Textbox(show_label=False, interactive=False, visible=False)
|
216 |
with gr.Column(scale=1):
|
217 |
+
next_battle_btn = gr.Button("次のバトルへ", variant="primary", interactive=False, visible=False, elem_id="next_battle_btn")
|
218 |
user_input.submit(
|
219 |
fn=submit_message,
|
220 |
inputs=[user_input, chatbot_a, chatbot_b, model_dropdown_a, model_dropdown_b],
|
indiebot_arena/ui/leaderboard.py
CHANGED
@@ -40,7 +40,7 @@ def leaderboard_content(dao, language):
|
|
40 |
headers=["Rank", "Model Name", "Elo Score", "File Size (GB)", "Description", "Last Updated"],
|
41 |
interactive=False
|
42 |
)
|
43 |
-
refresh_btn = gr.Button("更新")
|
44 |
weight_class_radio.change(fn=fetch_leaderboard_data, inputs=weight_class_radio, outputs=leaderboard_table)
|
45 |
refresh_btn.click(fn=fetch_leaderboard_data, inputs=weight_class_radio, outputs=leaderboard_table)
|
46 |
leaderboard_ui.load(fn=fetch_leaderboard_data, inputs=weight_class_radio, outputs=leaderboard_table)
|
|
|
40 |
headers=["Rank", "Model Name", "Elo Score", "File Size (GB)", "Description", "Last Updated"],
|
41 |
interactive=False
|
42 |
)
|
43 |
+
refresh_btn = gr.Button("更新", variant="primary")
|
44 |
weight_class_radio.change(fn=fetch_leaderboard_data, inputs=weight_class_radio, outputs=leaderboard_table)
|
45 |
refresh_btn.click(fn=fetch_leaderboard_data, inputs=weight_class_radio, outputs=leaderboard_table)
|
46 |
leaderboard_ui.load(fn=fetch_leaderboard_data, inputs=weight_class_radio, outputs=leaderboard_table)
|
indiebot_arena/ui/registration.py
CHANGED
@@ -181,9 +181,9 @@ def registration_content(dao, language):
|
|
181 |
output_box = gr.Textbox(label="結果出力", lines=10)
|
182 |
meta_state = gr.State(None)
|
183 |
with gr.Row():
|
184 |
-
test_btn = gr.Button("ロードテスト")
|
185 |
-
chat_test_btn = gr.Button("チャットテスト", interactive=False)
|
186 |
-
register_btn = gr.Button("モデル登録", interactive=False)
|
187 |
clear_btn = gr.Button("クリア")
|
188 |
test_btn.click(fn=load_test, inputs=[model_id_input, reg_weight_class_radio, output_box], outputs=[output_box,
|
189 |
chat_test_btn,
|
|
|
181 |
output_box = gr.Textbox(label="結果出力", lines=10)
|
182 |
meta_state = gr.State(None)
|
183 |
with gr.Row():
|
184 |
+
test_btn = gr.Button("ロードテスト", variant="primary")
|
185 |
+
chat_test_btn = gr.Button("チャットテスト", variant="primary", interactive=False)
|
186 |
+
register_btn = gr.Button("モデル登録", variant="primary", interactive=False)
|
187 |
clear_btn = gr.Button("クリア")
|
188 |
test_btn.click(fn=load_test, inputs=[model_id_input, reg_weight_class_radio, output_box], outputs=[output_box,
|
189 |
chat_test_btn,
|