Sakalti commited on
Commit
a2b7908
·
verified ·
1 Parent(s): d911699

Create app.py

Browse files
Files changed (1) hide show
  1. app.py +62 -0
app.py ADDED
@@ -0,0 +1,62 @@
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
 
1
+ import os
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,
24
+ "top_k": top_k,
25
+ "max_output_tokens": int(max_output_tokens),
26
+ }
27
+ )
28
+
29
+ # 履歴を更新して返す
30
+ history.append((message, response.text))
31
+ return "", history, history
32
+
33
+ # Gradio UI の構築
34
+ with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
35
+ gr.Markdown("## Gemini Chatbot - Gemini 2.0 Flash + 調整可能パラメータ")
36
+
37
+ chatbot = gr.Chatbot()
38
+ msg = gr.Textbox(placeholder="メッセージを入力...")
39
+ state = gr.State([]) # チャット履歴保持用
40
+
41
+ # パラメータ調整スライダー
42
+ with gr.Row():
43
+ temperature = gr.Slider(0.0, 1.0, value=0.7, step=0.05, label="Temperature")
44
+ top_p = gr.Slider(0.0, 1.0, value=0.9, step=0.05, label="Top-p")
45
+ top_k = gr.Slider(1, 100, value=40, step=1, label="Top-k")
46
+ max_output_tokens = gr.Number(value=1024, label="Max Output Tokens", precision=0)
47
+
48
+ # 会話のリセットボタン
49
+ clear = gr.Button("会話をリセット")
50
+
51
+ # 入力時の処理
52
+ msg.submit(
53
+ generate_response,
54
+ inputs=[msg, state, temperature, top_p, top_k, max_output_tokens],
55
+ outputs=[msg, chatbot, state]
56
+ )
57
+
58
+ # クリア処理
59
+ clear.click(lambda: ([], []), None, outputs=[chatbot, state])
60
+
61
+ # アプリケーションの起動
62
+ demo.launch()