Spaces:
Sleeping
Sleeping
| 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() | |