oggata commited on
Commit
465af28
·
verified ·
1 Parent(s): 2f53857

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +21 -52
app.py CHANGED
@@ -22,30 +22,26 @@ 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
- Gradio ChatInterfaceの標準形式に対応
36
  """
37
  try:
38
- # システムメッセージと会話履歴を含むプロンプトを構築
 
 
 
39
  conversation = ""
40
  if system_message.strip():
41
  conversation += f"システム: {system_message}\n"
42
 
43
- # 会話履歴を追加
44
- for user_msg, bot_msg in history:
45
- if user_msg:
46
- conversation += f"ユーザー: {user_msg}\n"
47
- if bot_msg:
48
- conversation += f"アシスタント: {bot_msg}\n"
49
 
50
  # 現在のメッセージを追加
51
  conversation += f"ユーザー: {message}\nアシスタント: "
@@ -63,9 +59,9 @@ def respond(
63
  # 一度に生成してからストリーミング風に出力
64
  outputs = model.generate(
65
  inputs,
66
- max_new_tokens=max_tokens,
67
- temperature=temperature,
68
- top_p=top_p,
69
  do_sample=True,
70
  pad_token_id=tokenizer.eos_token_id,
71
  eos_token_id=tokenizer.eos_token_id,
@@ -92,46 +88,19 @@ def respond(
92
 
93
  """
94
  Gradio ChatInterfaceを使用したシンプルなチャットボット
95
- カスタマイズ可能なパラメータを含む
96
  """
97
  demo = gr.ChatInterface(
98
  respond,
 
99
  title="🤖 Sarashina Chatbot",
100
  description="Sarashina2.2-3b-instruct モデルを使用した日本語チャットボットです。",
101
- additional_inputs=[
102
- gr.Textbox(
103
- value="あなたは親切で知識豊富な日本語アシスタントです。ユーザーの質問に丁寧に答えてください。",
104
- label="システムメッセージ",
105
- lines=3
106
- ),
107
- gr.Slider(
108
- minimum=1,
109
- maximum=1024,
110
- value=512,
111
- step=1,
112
- label="最大新規トークン数"
113
- ),
114
- gr.Slider(
115
- minimum=0.1,
116
- maximum=2.0,
117
- value=0.7,
118
- step=0.1,
119
- label="Temperature (創造性)"
120
- ),
121
- gr.Slider(
122
- minimum=0.1,
123
- maximum=1.0,
124
- value=0.95,
125
- step=0.05,
126
- label="Top-p (多様性制御)",
127
- ),
128
- ],
129
  theme=gr.themes.Soft(),
130
  examples=[
131
- ["こんにちは!今日はどんなことを話しましょうか?"],
132
- ["日本の文化について教えてください。"],
133
- ["簡単なレシピを教えてもらえますか?"],
134
- ["プログラミングについて質問があります。"],
135
  ],
136
  cache_examples=False,
137
  )
 
22
  )
23
  print("モデルの読み込みが完了しました。")
24
 
25
+ def respond(message, history):
 
 
 
 
 
 
 
26
  """
27
  チャットボットの応答を生成する関数
28
+ type="messages"の場合、historyはメッセージ辞書のリスト形式になります
29
  """
30
  try:
31
+ # システムメッセージとして使用するプロンプト
32
+ system_message = "あなたは親切で知識豊富な日本語アシスタントです。ユーザーの質問に丁寧に答えてください。"
33
+
34
+ # 会話履歴を文字列形式に変換
35
  conversation = ""
36
  if system_message.strip():
37
  conversation += f"システム: {system_message}\n"
38
 
39
+ # 会話履歴を追加(messages形式の場合)
40
+ for msg in history:
41
+ if msg["role"] == "user":
42
+ conversation += f"ユーザー: {msg['content']}\n"
43
+ elif msg["role"] == "assistant":
44
+ conversation += f"アシスタント: {msg['content']}\n"
45
 
46
  # 現在のメッセージを追加
47
  conversation += f"ユーザー: {message}\nアシスタント: "
 
59
  # 一度に生成してからストリーミング風に出力
60
  outputs = model.generate(
61
  inputs,
62
+ max_new_tokens=512, # デフォルト値を使用
63
+ temperature=0.7, # デフォルト値を使用
64
+ top_p=0.95, # デフォルト値を使用
65
  do_sample=True,
66
  pad_token_id=tokenizer.eos_token_id,
67
  eos_token_id=tokenizer.eos_token_id,
 
88
 
89
  """
90
  Gradio ChatInterfaceを使用したシンプルなチャットボット
91
+ type="messages"を設定してOpenAI形式のメッセージを使用
92
  """
93
  demo = gr.ChatInterface(
94
  respond,
95
+ type="messages", # 重要:これによりhistoryがメッセージ辞書形式になります
96
  title="🤖 Sarashina Chatbot",
97
  description="Sarashina2.2-3b-instruct モデルを使用した日本語チャットボットです。",
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
98
  theme=gr.themes.Soft(),
99
  examples=[
100
+ "こんにちは!今日はどんなことを話しましょうか?",
101
+ "日本の文化について教えてください。",
102
+ "簡単なレシピを教えてもらえますか?",
103
+ "プログラミングについて質問があります。",
104
  ],
105
  cache_examples=False,
106
  )