Mokh Week 2 Day 2 Contribution
This commit is contained in:
129
week2/community-contributions/week2_day2_gradio/gradio_ui.py
Normal file
129
week2/community-contributions/week2_day2_gradio/gradio_ui.py
Normal file
@@ -0,0 +1,129 @@
|
||||
import gradio as gr
|
||||
import requests
|
||||
import json
|
||||
from json_handlers import SettingsHandler, LanguagesHandler
|
||||
from ollama_utils import get_ollama_response
|
||||
|
||||
|
||||
class GradioUI:
|
||||
def __init__(self, models: list, settings: SettingsHandler, languages: LanguagesHandler):
|
||||
self.models = models
|
||||
self.settings = settings
|
||||
self.languages = languages
|
||||
|
||||
self.langs = self.languages.get_supported_languages()
|
||||
|
||||
def _translate_callback(self, text, model, translte_from, translte_to):
|
||||
model_options = self.settings.get_advanced_settings()
|
||||
|
||||
full_response = ""
|
||||
chunck_response = get_ollama_response(model, text, translte_from, translte_to, model_options)
|
||||
for chunck in chunck_response:
|
||||
full_response += chunck
|
||||
yield full_response
|
||||
|
||||
def _temp_setting_callback(self, temp_dropdown_val):
|
||||
self.settings.update_advanced_settings_param("temperature", temp_dropdown_val)
|
||||
|
||||
def _top_k_setting_callback(self, top_k_dropdown_val):
|
||||
self.settings.update_advanced_settings_param("top_k", top_k_dropdown_val)
|
||||
|
||||
def _top_p_setting_callback(self, top_p_dropdown_val):
|
||||
self.settings.update_advanced_settings_param("top_p", top_p_dropdown_val)
|
||||
|
||||
def _reset_to_default_callback(self):
|
||||
temperature = 0.0
|
||||
top_k = 40.0
|
||||
top_p = 0.9
|
||||
default_settings = {
|
||||
"temperature": temperature,
|
||||
"top_k": top_k,
|
||||
"top_p": top_p
|
||||
}
|
||||
self.settings.update_advanced_settings(default_settings)
|
||||
return temperature, top_k, top_p
|
||||
|
||||
def build_and_launch(self):
|
||||
with gr.Blocks() as gui:
|
||||
gr.Markdown("# LLM Translator")
|
||||
with gr.Tab("Translate"):
|
||||
with gr.Row():
|
||||
model_dropdown = gr.Dropdown(
|
||||
label="Model",
|
||||
info="Choose LLM Model",
|
||||
choices=self.models
|
||||
)
|
||||
with gr.Group():
|
||||
with gr.Row():
|
||||
translte_from = gr.Dropdown(
|
||||
value=self.langs[0],
|
||||
show_label=False,
|
||||
choices=self.langs,
|
||||
interactive=True
|
||||
)
|
||||
translte_to = gr.Dropdown(
|
||||
value=self.langs[1],
|
||||
show_label=False,
|
||||
choices=self.langs,
|
||||
interactive=True
|
||||
)
|
||||
with gr.Row():
|
||||
translate_input = gr.Textbox(label="Your Input", lines=15, max_lines=15)
|
||||
translate_output = gr.Textbox(label="Translated", lines=15, max_lines=15)
|
||||
|
||||
btn = gr.Button("Translate", variant="primary")
|
||||
btn.click(
|
||||
fn=self._translate_callback,
|
||||
inputs=[translate_input, model_dropdown, translte_from, translte_to],
|
||||
outputs=translate_output
|
||||
)
|
||||
|
||||
with gr.Tab("Advanced Settings"):
|
||||
temp_dropdown = gr.Number(
|
||||
value=self.settings.get_advanced_setting_param("temperature"),
|
||||
label="Temperature",
|
||||
info="This parameter control how creative the model is\n0 means no creativity\n1 means very creative",
|
||||
minimum=0,
|
||||
maximum=1,
|
||||
step=0.1,
|
||||
interactive=True
|
||||
)
|
||||
|
||||
gr.Markdown() # Used only for spacing
|
||||
|
||||
top_k_dropdown = gr.Number(
|
||||
value=self.settings.get_advanced_setting_param("top_k"),
|
||||
label="Top K",
|
||||
info="A higher value (e.g. 100) will give more diverse answers\nwhile a lower value (e.g. 10) will be more conservative.",
|
||||
minimum=1,
|
||||
maximum=200,
|
||||
step=1,
|
||||
interactive=True
|
||||
)
|
||||
|
||||
gr.Markdown() # Used only for spacing
|
||||
|
||||
top_p_dropdown = gr.Number(
|
||||
value=self.settings.get_advanced_setting_param("top_p"),
|
||||
label="Top P",
|
||||
info="A higher value (e.g., 0.95) will lead to more diverse answers\nwhile a lower value (e.g., 0.5) will be more conservative",
|
||||
minimum=0.1,
|
||||
maximum=1.0,
|
||||
step=0.1,
|
||||
interactive=True
|
||||
)
|
||||
|
||||
gr.Markdown() # Used only for spacing
|
||||
|
||||
reset_btn = gr.Button("Reset to Default")
|
||||
reset_btn.click(
|
||||
fn=self._reset_to_default_callback,
|
||||
outputs=[temp_dropdown, top_k_dropdown, top_p_dropdown]
|
||||
)
|
||||
|
||||
temp_dropdown.change(self._temp_setting_callback, temp_dropdown)
|
||||
top_k_dropdown.change(self._top_k_setting_callback, top_k_dropdown)
|
||||
top_p_dropdown.change(self._top_p_setting_callback, top_p_dropdown)
|
||||
|
||||
gui.launch()
|
||||
|
||||
Reference in New Issue
Block a user