Sakalti commited on
Commit
e1e3c75
·
verified ·
1 Parent(s): 0e4cbb6

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +56 -0
app.py ADDED
@@ -0,0 +1,56 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import gradio as gr
2
+ from modelscope.pipelines import pipeline
3
+ from modelscope.utils.constant import Tasks
4
+
5
+ # 使用可能なモデルのリスト
6
+ models = ["Qwen/Qwen2.5-7B-Instruct", "Qwen/Qwen2.5-14B-Instruct", "Qwen/Qwen2.5-32B-Instruct"]
7
+
8
+ def respond(
9
+ message,
10
+ history: list[tuple[str, str]],
11
+ system_message,
12
+ max_tokens,
13
+ temperature,
14
+ top_p,
15
+ selected_model
16
+ ):
17
+ # 型変換: selected_modelを文字列に変換
18
+ selected_model = str(selected_model)
19
+
20
+ # 選択したモデルに基づいてPipelineを初期化
21
+ pipe = pipeline(task=Tasks.text_generation, model=selected_model)
22
+
23
+ messages = [{"role": "system", "content": system_message}]
24
+
25
+ for val in history:
26
+ if val[0]:
27
+ messages.append({"role": "user", "content": val[0]})
28
+ if val[1]:
29
+ messages.append({"role": "assistant", "content": val[1]})
30
+
31
+ messages.append({"role": "user", "content": message})
32
+
33
+ response = ""
34
+
35
+ # モデルの推論
36
+ for message in pipe(messages, max_tokens=max_tokens, temperature=temperature, top_p=top_p, stream=True):
37
+ token = message.get("choices", [{}])[0].get("delta", {}).get("content", "")
38
+ response += token
39
+
40
+ return response
41
+
42
+ # インターフェース
43
+ demo = gr.ChatInterface(
44
+ respond,
45
+ additional_inputs=[
46
+ gr.Textbox(value="あなたはフレンドリーなチャットボットです。", label="システムメッセージ"),
47
+ gr.Slider(minimum=1, maximum=2048, value=768, step=1, label="新規トークン最大"),
48
+ gr.Slider(minimum=0.1, maximum=4.0, value=0.7, step=0.1, label="温度"),
49
+ gr.Slider(minimum=0.1, maximum=1.0, value=0.95, step=0.05, label="Top-p (核 sampling)"),
50
+ gr.Dropdown(choices=models, value=models[0], label="モデル"),
51
+ ],
52
+ concurrency_limit=30 # 例: 同時に30つのリクエストを処理
53
+ )
54
+
55
+ if __name__ == "__main__":
56
+ demo.launch(share=True)