Sakalti commited on
Commit
cf1ec92
·
verified ·
1 Parent(s): 090a829

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +69 -25
app.py CHANGED
@@ -1,11 +1,9 @@
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
 
 
3
 
4
- """
5
- For more information on `huggingface_hub` Inference API support, please check the docs: https://huggingface.co/docs/huggingface_hub/v0.22.2/en/guides/inference
6
- """
7
  client = InferenceClient("Qwen/Qwen2.5-72B-Instruct")
8
- #応答部分
9
 
10
  def respond(
11
  message,
@@ -39,28 +37,74 @@ def respond(
39
  response += token
40
  yield response
41
 
 
 
 
 
 
42
 
43
- """
44
- For information on how to customize the ChatInterface, peruse the gradio docs: https://www.gradio.app/docs/chatinterface
45
- """
46
- #インターフェース
47
- demo = gr.ChatInterface(
48
- respond,
49
- additional_inputs=[
50
- gr.Textbox(value="あなたは親切なチャットボットでありQwenというLLMです。", label="システムメッセージ"),
51
- gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="新規トークン最大"),
52
- gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="温度"),
53
- gr.Slider(
54
- minimum=0.1,
55
- maximum=1.0,
56
- value=0.95,
57
- step=0.05,
58
- label="Top-p (核 sampling)",
59
- ),
60
- ],
61
- concurrency_limit=30 # 例: 同時に4つのリクエストを処理
62
- )
63
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
64
 
65
  if __name__ == "__main__":
66
- demo.launch()
 
1
  import gradio as gr
2
  from huggingface_hub import InferenceClient
3
+ import json
4
+ import os
5
 
 
 
 
6
  client = InferenceClient("Qwen/Qwen2.5-72B-Instruct")
 
7
 
8
  def respond(
9
  message,
 
37
  response += token
38
  yield response
39
 
40
+ def load_rooms():
41
+ if os.path.exists("rooms.json"):
42
+ with open("rooms.json", "r", encoding="utf-8") as f:
43
+ return json.load(f)
44
+ return {}
45
 
46
+ def save_rooms(rooms):
47
+ with open("rooms.json", "w", encoding="utf-8") as f:
48
+ json.dump(rooms, f, ensure_ascii=False, indent=4)
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
49
 
50
+ def create_room(rooms, room_name):
51
+ if room_name not in rooms:
52
+ rooms[room_name] = []
53
+ save_rooms(rooms)
54
+ return rooms
55
+
56
+ def switch_room(room_name, rooms):
57
+ return rooms.get(room_name, [])
58
+
59
+ def add_message_to_room(room_name, rooms, message, response):
60
+ if room_name in rooms:
61
+ rooms[room_name].append((message, response))
62
+ save_rooms(rooms)
63
+
64
+ def chat_interface(room_name, rooms, message, history, system_message, max_tokens, temperature, top_p):
65
+ response = list(respond(message, history, system_message, max_tokens, temperature, top_p))[-1]
66
+ add_message_to_room(room_name, rooms, message, response)
67
+ return response, history + [(message, response)]
68
+
69
+ def main():
70
+ rooms = load_rooms()
71
+ with gr.Blocks(theme=gr.themes.Default(primary_hue="blue", secondary_hue="green").set(
72
+ body_background_fill="*#1e1e1e",
73
+ body_background_gradient="*#1e1e1e",
74
+ block_background_fill="*#2e2e2e",
75
+ block_background_gradient="*#2e2e2e",
76
+ button_primary_background_fill="*#3e3e3e",
77
+ button_primary_background_gradient="*#3e3e3e",
78
+ button_secondary_background_fill="*#4e4e4e",
79
+ button_secondary_background_gradient="*#4e4e4e",
80
+ input_background_fill="*#3e3e3e",
81
+ input_background_gradient="*#3e3e3e",
82
+ output_background_fill="*#3e3e3e",
83
+ output_background_gradient="*#3e3e3e",
84
+ text_color="*#ffffff"
85
+ )) as demo:
86
+ with gr.Row():
87
+ with gr.Column():
88
+ room_name = gr.Dropdown(list(rooms.keys()), label="会話部屋", value=list(rooms.keys())[0] if rooms else None)
89
+ new_room_name = gr.Textbox(label="新しい会話部屋の名前")
90
+ create_room_button = gr.Button("新しい会話部屋を作成")
91
+ create_room_button.click(fn=lambda name, r: (create_room(r, name), name), inputs=[new_room_name, gr.State(rooms)], outputs=[gr.Dropdown.update(choices=list(rooms.keys())), room_name])
92
+ room_name.change(fn=lambda name, r: switch_room(name, r), inputs=[room_name, gr.State(rooms)], outputs=gr.Chatbot.update())
93
+ with gr.Column(scale=3):
94
+ chatbot = gr.Chatbot(label="会話")
95
+ message = gr.Textbox(label="メッセージ")
96
+ system_message = gr.Textbox(value="あなたは親切なチャットボットでありQwenというLLMです。", label="システムメッセージ")
97
+ max_tokens = gr.Slider(minimum=1, maximum=2048, value=512, step=1, label="新規トークン最大")
98
+ temperature = gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="温度")
99
+ top_p = gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (核 sampling)")
100
+ submit_button = gr.Button("送信")
101
+ submit_button.click(
102
+ fn=chat_interface,
103
+ inputs=[room_name, gr.State(rooms), message, chatbot, system_message, max_tokens, temperature, top_p],
104
+ outputs=[chatbot, chatbot]
105
+ )
106
+
107
+ demo.launch()
108
 
109
  if __name__ == "__main__":
110
+ main()