Sakalti commited on
Commit
bbc84e6
·
verified ·
1 Parent(s): c7f11d5

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +22 -15
app.py CHANGED
@@ -2,16 +2,22 @@ import os
2
  import gradio as gr
3
  import google.generativeai as genai
4
 
 
5
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
6
  model = genai.GenerativeModel(model_name='gemini-2.0-flash')
7
 
8
- chat_history = []
 
 
 
 
 
 
 
9
 
10
- def generate_response(message, temperature, top_p, top_k, max_output_tokens):
11
- global chat_history
12
- chat_history.append({"role": "user", "parts": [message]})
13
  response = model.generate_content(
14
- chat_history,
15
  generation_config={
16
  "temperature": temperature,
17
  "top_p": top_p,
@@ -19,14 +25,17 @@ def generate_response(message, temperature, top_p, top_k, max_output_tokens):
19
  "max_output_tokens": int(max_output_tokens),
20
  }
21
  )
22
- chat_history.append({"role": "model", "parts": [response.text]})
23
- return response.text
24
 
 
 
 
 
25
  with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
26
  gr.Markdown("## Gemini Chatbot - Gemini 2.0 Flash + 調整可能パラメータ")
27
 
28
  chatbot = gr.Chatbot()
29
  msg = gr.Textbox(placeholder="メッセージを入力...")
 
30
 
31
  with gr.Row():
32
  temperature = gr.Slider(0.0, 1.0, value=0.7, step=0.05, label="Temperature")
@@ -36,16 +45,14 @@ with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
36
 
37
  clear = gr.Button("会話をリセット")
38
 
39
- def respond(user_message, temperature, top_p, top_k, max_output_tokens):
40
- response = generate_response(user_message, temperature, top_p, top_k, max_output_tokens)
41
- return "", chatbot.append((user_message, response))
42
-
43
  msg.submit(
44
- respond,
45
- inputs=[msg, temperature, top_p, top_k, max_output_tokens],
46
- outputs=[msg, chatbot]
47
  )
48
 
49
- clear.click(lambda: ([], []), None, outputs=[chatbot, msg])
 
50
 
51
  demo.launch()
 
2
  import gradio as gr
3
  import google.generativeai as genai
4
 
5
+ # APIキー設定
6
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
7
  model = genai.GenerativeModel(model_name='gemini-2.0-flash')
8
 
9
+ # 応答生成
10
+ def generate_response(message, history, temperature, top_p, top_k, max_output_tokens):
11
+ # Gemini 用チャット履歴の変換
12
+ gemini_history = []
13
+ for user, bot in history:
14
+ gemini_history.append({"role": "user", "parts": [user]})
15
+ gemini_history.append({"role": "model", "parts": [bot]})
16
+ gemini_history.append({"role": "user", "parts": [message]})
17
 
18
+ # 応答生成
 
 
19
  response = model.generate_content(
20
+ gemini_history,
21
  generation_config={
22
  "temperature": temperature,
23
  "top_p": top_p,
 
25
  "max_output_tokens": int(max_output_tokens),
26
  }
27
  )
 
 
28
 
29
+ history.append((message, response.text))
30
+ return "", history
31
+
32
+ # UI構築
33
  with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
34
  gr.Markdown("## Gemini Chatbot - Gemini 2.0 Flash + 調整可能パラメータ")
35
 
36
  chatbot = gr.Chatbot()
37
  msg = gr.Textbox(placeholder="メッセージを入力...")
38
+ state = gr.State([]) # チャット履歴を保持
39
 
40
  with gr.Row():
41
  temperature = gr.Slider(0.0, 1.0, value=0.7, step=0.05, label="Temperature")
 
45
 
46
  clear = gr.Button("会話をリセット")
47
 
48
+ # 入力処理
 
 
 
49
  msg.submit(
50
+ generate_response,
51
+ inputs=[msg, state, temperature, top_p, top_k, max_output_tokens],
52
+ outputs=[msg, chatbot, state]
53
  )
54
 
55
+ # リセット処理
56
+ clear.click(lambda: ([], []), None, outputs=[chatbot, state])
57
 
58
  demo.launch()