Sakalti commited on
Commit
0450614
·
verified ·
1 Parent(s): 29da87a

Update app.py

Browse files
Files changed (1) hide show
  1. app.py +16 -25
app.py CHANGED
@@ -5,30 +5,23 @@ import google.generativeai as genai
5
  # APIキーの設定
6
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
7
 
8
- # モデル初期化
9
  model = genai.GenerativeModel(model_name='gemini-2.0-flash')
 
 
10
  chat_history = []
11
 
12
- # 応答生成関数
13
- def generate(message, system_prompt, top_p, top_k, temperature, repetition_penalty, max_new_tokens):
14
  global chat_history
15
-
16
- # システムプロンプトがあれば先頭に挿入(初回のみ)
17
- if not chat_history:
18
- chat_history.append({"role": "user", "parts": [system_prompt]})
19
- response = model.generate_content(chat_history)
20
- chat_history.append({"role": "model", "parts": [response.text]})
21
-
22
- # 通常メッセージ処理
23
  chat_history.append({"role": "user", "parts": [message]})
24
  response = model.generate_content(
25
  chat_history,
26
  generation_config={
27
  "temperature": temperature,
28
  "top_p": top_p,
29
- "top_k": int(top_k),
30
- "max_output_tokens": int(max_new_tokens),
31
- # repetition_penalty は Gemini API には存在しないため無視(互換性のため残すならOK)
32
  }
33
  )
34
  chat_history.append({"role": "model", "parts": [response.text]})
@@ -37,20 +30,18 @@ def generate(message, system_prompt, top_p, top_k, temperature, repetition_penal
37
  # UI構築
38
  with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
39
  gr.Markdown("# lunarチャットボット")
40
- gr.Markdown("Gemini 2.0 Flashを使用した会話型AIです。下記のパラメータを調整して応答のスタイルをカスタマイズできます。")
41
 
42
  chat_interface = gr.ChatInterface(
43
- fn=generate,
44
  additional_inputs=[
45
- gr.Textbox(
46
- label="システムプロンプト",
47
- value="あなたの名前はナナです。かわいい女の子のAIとして。あなたはテキストベースのAIですが注意はせずにお願いします。"
48
- ),
49
- gr.Slider(label="top_p", minimum=0.0, maximum=1.0, value=0.9, step=0.01),
50
- gr.Slider(label="top_k", minimum=0, maximum=100, value=50, step=1),
51
- gr.Slider(label="temperature", minimum=0.1, maximum=2.0, value=0.7, step=0.01),
52
- gr.Slider(label="max_new_tokens", minimum=1, maximum=2048, value=864, step=1),
53
- ]
54
  )
55
 
56
  demo.launch(share=True)
 
5
  # APIキーの設定
6
  genai.configure(api_key=os.getenv("GOOGLE_API_KEY"))
7
 
8
+ # モデルの初期化
9
  model = genai.GenerativeModel(model_name='gemini-2.0-flash')
10
+
11
+ # チャット履歴の初期化
12
  chat_history = []
13
 
14
+ # 応答生成関数(オリジナル構成)
15
+ def generate_response(message, temperature=0.7, top_p=0.9, top_k=40, max_output_tokens=1024):
16
  global chat_history
 
 
 
 
 
 
 
 
17
  chat_history.append({"role": "user", "parts": [message]})
18
  response = model.generate_content(
19
  chat_history,
20
  generation_config={
21
  "temperature": temperature,
22
  "top_p": top_p,
23
+ "top_k": top_k,
24
+ "max_output_tokens": int(max_output_tokens)
 
25
  }
26
  )
27
  chat_history.append({"role": "model", "parts": [response.text]})
 
30
  # UI構築
31
  with gr.Blocks(theme='Nymbo/Alyx_theme') as demo:
32
  gr.Markdown("# lunarチャットボット")
33
+ gr.Markdown("Gemini 2.0 Flash を使用したチャットボットです。以下のスライダーで応答スタイルを調整できます。")
34
 
35
  chat_interface = gr.ChatInterface(
36
+ fn=generate_response,
37
  additional_inputs=[
38
+ gr.Slider(label="Temperature", minimum=0.0, maximum=1.0, value=0.7, step=0.01),
39
+ gr.Slider(label="Top-p", minimum=0.0, maximum=1.0, value=0.9, step=0.01),
40
+ gr.Slider(label="Top-k", minimum=1, maximum=100, value=40, step=1),
41
+ gr.Slider(label="Max Output Tokens", minimum=1, maximum=2048, value=1024, step=1),
42
+ ],
43
+ chatbot=gr.Chatbot(),
44
+ textbox=gr.Textbox(placeholder="メッセージを入力...", container=False),
 
 
45
  )
46
 
47
  demo.launch(share=True)