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

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +23 -18
app.py CHANGED
@@ -2,7 +2,7 @@ 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
 
8
  # モデルの初期化(Gemini 2.0 Flash)
@@ -11,32 +11,36 @@ model = genai.GenerativeModel(model_name='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
  # UIの構築(Blocks + ChatInterface + テーマ付き)
42
  with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
@@ -46,6 +50,7 @@ with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
46
  chat_interface = gr.ChatInterface(
47
  fn=generate_response,
48
  additional_inputs=[
 
49
  gr.Slider(label="Temperature", minimum=0.0, maximum=1.0, value=0.7, step=0.01),
50
  gr.Slider(label="Top-p", minimum=0.0, maximum=1.0, value=0.9, step=0.01),
51
  gr.Slider(label="Top-k", minimum=1, maximum=100, value=40, step=1),
 
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
  # チャット履歴の初期化
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:
 
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),