oggata commited on
Commit
8b32594
·
verified ·
1 Parent(s): b4434ff

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +26 -91
app.py CHANGED
@@ -22,22 +22,22 @@ model = AutoModelForCausalLM.from_pretrained(
22
  )
23
  print("モデルの読み込みが完了しました。")
24
 
25
- def respond(
26
- message,
27
- history: list[tuple[str, str]],
28
- system_message,
29
- max_tokens,
30
- temperature,
31
- top_p,
32
- ):
33
  """
34
  チャットボットの応答を生成する関数
 
35
  """
36
  try:
37
  # システムメッセージと会話履歴を含むプロンプトを構築
38
  conversation = ""
39
- if system_message.strip():
40
- conversation += f"システム: {system_message}\n"
41
 
42
  # 会話履歴を追加
43
  for user_msg, bot_msg in history:
@@ -60,9 +60,9 @@ def respond(
60
  with torch.no_grad():
61
  outputs = model.generate(
62
  inputs,
63
- max_new_tokens=max_tokens,
64
- temperature=temperature,
65
- top_p=top_p,
66
  do_sample=True,
67
  pad_token_id=tokenizer.eos_token_id,
68
  eos_token_id=tokenizer.eos_token_id,
@@ -84,85 +84,20 @@ def respond(
84
  except Exception as e:
85
  return f"エラーが発生しました: {str(e)}"
86
 
87
- # Gradio Blocksを使用したカスタムチャットインターフェース
88
- with gr.Blocks(
 
89
  title="🤖 Sarashina Chatbot",
90
- theme=gr.themes.Soft()
91
- ) as demo:
92
-
93
- gr.Markdown("# 🤖 Sarashina Chatbot")
94
- gr.Markdown("Sarashina2.2-3b-instruct モデルを使用した日本語チャットボットです。")
95
-
96
- with gr.Row():
97
- with gr.Column(scale=3):
98
- chatbot = gr.Chatbot(height=500)
99
- msg = gr.Textbox(
100
- label="メッセージを入力してください",
101
- placeholder="こんにちは!何かお手伝いできることはありますか?",
102
- lines=2
103
- )
104
- clear = gr.Button("会話をクリア")
105
-
106
- with gr.Column(scale=1):
107
- gr.Markdown("### 設定")
108
- system_message = gr.Textbox(
109
- value="あなたは親切で知識豊富な日本語アシスタントです。ユーザーの質問に丁寧に答えてください。",
110
- label="システムメッセージ",
111
- lines=3
112
- )
113
- max_tokens = gr.Slider(
114
- minimum=1,
115
- maximum=1024,
116
- value=512,
117
- step=1,
118
- label="最大新規トークン数"
119
- )
120
- temperature = gr.Slider(
121
- minimum=0.1,
122
- maximum=2.0,
123
- value=0.7,
124
- step=0.1,
125
- label="Temperature (創造性)"
126
- )
127
- top_p = gr.Slider(
128
- minimum=0.1,
129
- maximum=1.0,
130
- value=0.95,
131
- step=0.05,
132
- label="Top-p (多様性制御)"
133
- )
134
-
135
- # 例文
136
- gr.Examples(
137
- examples=[
138
- ["こんにちは!今日はどんなことを話しましょうか?"],
139
- ["日本の文化について教えてください。"],
140
- ["簡単なレシピを教えてもらえますか?"],
141
- ["プログラミングについて質問があります。"],
142
- ],
143
- inputs=msg,
144
- label="例文"
145
- )
146
-
147
- def user(message, history):
148
- return "", history + [[message, None]]
149
-
150
- def bot(history, system_message, max_tokens, temperature, top_p):
151
- history[-1][1] = respond(
152
- history[-1][0],
153
- history[:-1],
154
- system_message,
155
- max_tokens,
156
- temperature,
157
- top_p
158
- )
159
- return history
160
-
161
- msg.submit(user, [msg, chatbot], [msg, chatbot], queue=False).then(
162
- bot, [chatbot, system_message, max_tokens, temperature, top_p], chatbot
163
- )
164
-
165
- clear.click(lambda: None, None, chatbot, queue=False)
166
 
167
  if __name__ == "__main__":
168
  demo.launch(
 
22
  )
23
  print("モデルの読み込みが完了しました。")
24
 
25
+ # グローバル設定変数
26
+ SYSTEM_MESSAGE = "あなたは親切で知識豊富な日本語アシスタントです。ユーザーの質問に丁寧に答えてください。"
27
+ MAX_TOKENS = 512
28
+ TEMPERATURE = 0.7
29
+ TOP_P = 0.95
30
+
31
+ def respond(message, history):
 
32
  """
33
  チャットボットの応答を生成する関数
34
+ Gradio ChatInterfaceの標準形式に対応
35
  """
36
  try:
37
  # システムメッセージと会話履歴を含むプロンプトを構築
38
  conversation = ""
39
+ if SYSTEM_MESSAGE.strip():
40
+ conversation += f"システム: {SYSTEM_MESSAGE}\n"
41
 
42
  # 会話履歴を追加
43
  for user_msg, bot_msg in history:
 
60
  with torch.no_grad():
61
  outputs = model.generate(
62
  inputs,
63
+ max_new_tokens=MAX_TOKENS,
64
+ temperature=TEMPERATURE,
65
+ top_p=TOP_P,
66
  do_sample=True,
67
  pad_token_id=tokenizer.eos_token_id,
68
  eos_token_id=tokenizer.eos_token_id,
 
84
  except Exception as e:
85
  return f"エラーが発生しました: {str(e)}"
86
 
87
+ # Gradio ChatInterfaceを使用したシンプルなチャットボット
88
+ demo = gr.ChatInterface(
89
+ respond,
90
  title="🤖 Sarashina Chatbot",
91
+ description="Sarashina2.2-3b-instruct モデルを使用した日本語チャットボットです。",
92
+ theme=gr.themes.Soft(),
93
+ examples=[
94
+ ["こんにちは!今日はどんなことを話しましょうか?"],
95
+ ["日本の文化について教えてください。"],
96
+ ["簡単なレシピを教えてもらえますか?"],
97
+ ["プログラミングについて質問があります。"],
98
+ ],
99
+ cache_examples=False,
100
+ )
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
101
 
102
  if __name__ == "__main__":
103
  demo.launch(