|
|
import os |
|
|
import gradio as gr |
|
|
import google.generativeai as genai |
|
|
|
|
|
|
|
|
genai.configure(api_key=os.getenv("GOOGLE_API_KEY")) |
|
|
model = genai.GenerativeModel(model_name='gemini-2.0-flash') |
|
|
|
|
|
|
|
|
def generate_response(message, history, temperature, top_p, top_k, max_output_tokens): |
|
|
|
|
|
gemini_history = [] |
|
|
for user, bot in history: |
|
|
gemini_history.append({"role": "user", "parts": [user]}) |
|
|
gemini_history.append({"role": "model", "parts": [bot]}) |
|
|
gemini_history.append({"role": "user", "parts": [message]}) |
|
|
|
|
|
|
|
|
response = model.generate_content( |
|
|
gemini_history, |
|
|
generation_config={ |
|
|
"temperature": temperature, |
|
|
"top_p": top_p, |
|
|
"top_k": top_k, |
|
|
"max_output_tokens": int(max_output_tokens), |
|
|
} |
|
|
) |
|
|
|
|
|
|
|
|
history.append((message, response.text)) |
|
|
return "", history, history |
|
|
|
|
|
|
|
|
with gr.Blocks(theme='Nymbo/Alyx_theme') as demo: |
|
|
gr.Markdown("## Gemini Chatbot - Gemini 2.0 Flash + 調整可能パラメータ") |
|
|
|
|
|
chatbot = gr.Chatbot() |
|
|
msg = gr.Textbox(placeholder="メッセージを入力...") |
|
|
state = gr.State([]) |
|
|
|
|
|
|
|
|
with gr.Row(): |
|
|
temperature = gr.Slider(0.0, 1.0, value=0.7, step=0.05, label="Temperature") |
|
|
top_p = gr.Slider(0.0, 1.0, value=0.9, step=0.05, label="Top-p") |
|
|
top_k = gr.Slider(1, 100, value=40, step=1, label="Top-k") |
|
|
max_output_tokens = gr.Number(value=1024, label="Max Output Tokens", precision=0) |
|
|
|
|
|
|
|
|
clear = gr.Button("会話をリセット") |
|
|
|
|
|
|
|
|
msg.submit( |
|
|
generate_response, |
|
|
inputs=[msg, state, temperature, top_p, top_k, max_output_tokens], |
|
|
outputs=[msg, chatbot, state] |
|
|
) |
|
|
|
|
|
|
|
|
clear.click(lambda: ([], []), None, outputs=[chatbot, state]) |
|
|
|
|
|
|
|
|
demo.launch() |