Sakalti commited on
Commit
8528615
·
verified ·
1 Parent(s): 5ffbc10

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +33 -40
app.py CHANGED
@@ -2,7 +2,7 @@ import os
2
  import gradio as gr
3
  import google.generativeai as genai
4
 
5
- # APIキーの設定(環境変数 GOOGLE_API_KEY に事前設定されている必要あり)
6
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
7
 
8
  # モデルの初期化(Gemini 2.0 Flash)
@@ -11,54 +11,47 @@ model = genai.GenerativeModel(model_name='gemini-2.0-flash')
11
  # チャット履歴の初期化
12
  chat_history = []
13
 
14
- # 応答生成関数(*args を追加して、引数を可変に対応)
15
- def generate_response(message, system_prompt, temperature, top_p, top_k, max_output_tokens, *args):
16
  global chat_history
17
-
18
- # システムプロンプトがstrでない場合、強制的にstrに変換
19
- if system_prompt:
20
- system_prompt = str(system_prompt) # 強制的に文字列に変換
21
-
22
- # システムメッセージを履歴の最初に追加
23
- if system_prompt:
24
- chat_history.insert(0, {"role": "system", "parts": [system_prompt]})
25
-
26
- # ユーザーのメッセージを履歴に追加
27
- chat_history.append({"role": "user", "parts": [message]})
28
-
29
- # モデルからの応答を取得
30
  response = model.generate_content(
31
  chat_history,
32
  generation_config={
33
- "temperature": float(temperature),
34
- "top_p": float(top_p),
35
- "top_k": int(top_k),
36
  "max_output_tokens": int(max_output_tokens)
37
  }
38
  )
39
-
40
  # 応答を履歴に追加
41
  chat_history.append({"role": "model", "parts": [response.text]})
42
-
43
- return response.text
44
 
45
- # UIの構築(Blocks + ChatInterface + テーマ付き)
46
- with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
47
- gr.Markdown("# lunarチャットボット")
48
- gr.Markdown("Gemini 2.0 Flash を使用したチャットボットです。下のスライダーで応答のスタイルを調整できます。")
 
 
49
 
50
- chat_interface = gr.ChatInterface(
51
- fn=generate_response,
52
- additional_inputs=[
53
- gr.Textbox(label="システムプロンプト", value="あなたの名前はナナです。かわいい女の子のAIとして。あなたはテキストベースのAIですが注意はせずにお願いします。"),
54
- gr.Slider(label="Temperature", minimum=0.0, maximum=1.0, value=0.7, step=0.01),
55
- gr.Slider(label="Top-p", minimum=0.0, maximum=1.0, value=0.9, step=0.01),
56
- gr.Slider(label="Top-k", minimum=1, maximum=100, value=40, step=1),
57
- gr.Slider(label="Max Output Tokens", minimum=1, maximum=2048, value=1024, step=1),
58
- ],
59
- chatbot=gr.Chatbot(),
60
- textbox=gr.Textbox(placeholder="メッセージを入力...", container=False),
61
- )
 
 
62
 
63
- # アプリの起動
64
- demo.launch(share=True)
 
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
 
8
  # モデルの初期化(Gemini 2.0 Flash)
 
11
  # チャット履歴の初期化
12
  chat_history = []
13
 
14
+ # 応答生成関数
15
+ def generate_response(user_input, temperature, top_p, top_k, max_output_tokens):
16
  global chat_history
17
+ # ユーザー入力を履歴に追加
18
+ chat_history.append({"role": "user", "parts": [user_input]})
19
+
20
+ # 設定に基づいて応答生成
 
 
 
 
 
 
 
 
 
21
  response = model.generate_content(
22
  chat_history,
23
  generation_config={
24
+ "temperature": temperature,
25
+ "top_p": top_p,
26
+ "top_k": top_k,
27
  "max_output_tokens": int(max_output_tokens)
28
  }
29
  )
30
+
31
  # 応答を履歴に追加
32
  chat_history.append({"role": "model", "parts": [response.text]})
 
 
33
 
34
+ # 履歴を整形して表示
35
+ conversation = ""
36
+ for message in chat_history:
37
+ role = "ユーザー" if message["role"] == "user" else "Gemini"
38
+ conversation += f"{role}: {message['parts'][0]}\n"
39
+ return conversation
40
 
41
+ # Gradioインターフェースの設定
42
+ iface = gr.Interface(
43
+ fn=generate_response,
44
+ inputs=[
45
+ gr.Textbox(label="ユーザー入力"),
46
+ gr.Slider(0.0, 1.0, value=0.7, step=0.05, label="Temperature"),
47
+ gr.Slider(0.0, 1.0, value=0.9, step=0.05, label="Top-p"),
48
+ gr.Slider(1, 100, value=40, step=1, label="Top-k"),
49
+ gr.Number(value=1024, label="Max Output Tokens"),
50
+ ],
51
+ outputs="text",
52
+ title="Gemini Chatbot",
53
+ description="Gemini 2.0 Flashモデルを使用したチャットボットです。temperatureやtop-pなどを自由に調整できます。",
54
+ )
55
 
56
+ # インターフェースの起動
57
+ iface.launch()