fukugawa commited on
Commit
9aef39d
·
1 Parent(s): a52d2d5
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 open("style.css", "r") as f:
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,