Sakalti commited on
Commit
5602726
·
verified ·
1 Parent(s): f94eec3

Update App2.py

Browse files
Files changed (1) hide show
  1. App2.py +23 -23
App2.py CHANGED
@@ -86,33 +86,40 @@ def generate_response(message, history, temperature, top_p, top_k, max_output_to
86
  return "", history, history
87
 
88
 
89
- # ===== 起動後にテーマ切替する仕組み =====
90
  THEMES = {
91
  "Eternalstar": "Sakalti/Eternalstar",
92
  "Mountainrainbow": "Sakalti/mountanrainbow"
93
  }
94
 
95
- def theme_js(choice):
96
- css_link = f"https://huggingface.co/spaces/{THEMES[choice]}/resolve/main/theme.css"
97
- return f"""
98
- let old = document.getElementById("dynamic-theme");
99
- if (old) old.remove();
100
- let link = document.createElement("link");
101
- link.id = "dynamic-theme";
102
- link.rel = "stylesheet";
103
- link.href = "{css_link}";
104
- document.head.appendChild(link);
105
- """
106
 
 
 
 
 
107
 
108
- with gr.Blocks(theme=THEMES["Eternalstar"]) as demo:
 
 
 
 
 
 
 
 
 
109
  gr.Markdown("## Gemini AIキャラクターチャット")
110
 
111
- # テーマ切り替えドロップダウン
112
- theme_dropdown = gr.Dropdown(choices=list(THEMES.keys()), value="Eternalstar", label="テーマ切り替え")
 
 
 
113
 
114
  with gr.Tab("チャット"):
115
- chatbot = gr.Chatbot(type="messages") # ← 警告解消のため type を指定
116
  msg = gr.Textbox(placeholder="メッセージを入力...")
117
  state = gr.State([])
118
  system_prompt = gr.Textbox(label="キャラのシステムプロンプト", lines=4)
@@ -159,12 +166,5 @@ with gr.Blocks(theme=THEMES["Eternalstar"]) as demo:
159
  character_list.change(load_prompt, inputs=[character_list], outputs=[system_prompt])
160
  demo.load(refresh_characters, outputs=[character_list])
161
 
162
- # ドロップダウンでテーマ切り替え
163
- theme_dropdown.change(
164
- fn=None,
165
- inputs=[theme_dropdown],
166
- outputs=[],
167
- js=theme_js # ← Gradio v4 は _js ではなく js を直接渡せる
168
- )
169
 
170
  demo.launch()
 
86
  return "", history, history
87
 
88
 
89
+ # ===== 再ロード方式のテーマ設定 =====
90
  THEMES = {
91
  "Eternalstar": "Sakalti/Eternalstar",
92
  "Mountainrainbow": "Sakalti/mountanrainbow"
93
  }
94
 
95
+ # 保存用ファイル
96
+ THEME_FILE = "theme_choice.txt"
 
 
 
 
 
 
 
 
 
97
 
98
+ def save_theme(choice):
99
+ with open(THEME_FILE, "w", encoding="utf-8") as f:
100
+ f.write(choice)
101
+ return f"テーマを「{choice}」に変更しました。再起動してください。"
102
 
103
+ # 前回の選択をロード
104
+ if os.path.exists(THEME_FILE):
105
+ with open(THEME_FILE, "r", encoding="utf-8") as f:
106
+ theme_choice = f.read().strip()
107
+ else:
108
+ theme_choice = "Eternalstar"
109
+
110
+
111
+ # ===== Gradio UI構築 =====
112
+ with gr.Blocks(theme=THEMES[theme_choice]) as demo:
113
  gr.Markdown("## Gemini AIキャラクターチャット")
114
 
115
+ with gr.Row():
116
+ theme_dropdown = gr.Dropdown(choices=list(THEMES.keys()), value=theme_choice, label="テーマ切り替え")
117
+ theme_status = gr.Textbox(label="テーマステータス", interactive=False)
118
+
119
+ theme_dropdown.change(save_theme, inputs=[theme_dropdown], outputs=[theme_status])
120
 
121
  with gr.Tab("チャット"):
122
+ chatbot = gr.Chatbot(type="messages")
123
  msg = gr.Textbox(placeholder="メッセージを入力...")
124
  state = gr.State([])
125
  system_prompt = gr.Textbox(label="キャラのシステムプロンプト", lines=4)
 
166
  character_list.change(load_prompt, inputs=[character_list], outputs=[system_prompt])
167
  demo.load(refresh_characters, outputs=[character_list])
168
 
 
 
 
 
 
 
 
169
 
170
  demo.launch()