Spaces:
Build error
Build error
| try: | |
| from ..utils.db import * | |
| from ..agent.chat_history import clear_chat_history | |
| from ..llm_settings import llm_show_name, llm_settings | |
| from ..audio.tts import is_local_tts_available | |
| from ..audio.stt import is_local_stt_available | |
| except ImportError: | |
| from utils.db import * | |
| from llm_settings import llm_show_name, llm_settings | |
| from audio.tts import is_local_tts_available | |
| from audio.stt import is_local_stt_available | |
| from PyQt5.QtWidgets import ( | |
| QDialog, | |
| QVBoxLayout, | |
| QLabel, | |
| QLineEdit, | |
| QPushButton, | |
| QComboBox, | |
| ) | |
| from PyQt5.QtCore import Qt | |
| def llmsettings_popup(self): | |
| from ..gpt_computer_agent import the_main_window | |
| settings_dialog = QDialog() | |
| settings_dialog.setWindowTitle("Settings") | |
| settings_dialog.setWindowModality(Qt.ApplicationModal) | |
| settings_dialog.setLayout(QVBoxLayout()) | |
| api_key_label = QLabel("OpenAI API Key") | |
| settings_dialog.layout().addWidget(api_key_label) | |
| api_key_input = QLineEdit() | |
| api_key = load_api_key() | |
| api_key_input.setText(api_key) | |
| settings_dialog.layout().addWidget(api_key_input) | |
| save_button = QPushButton("Save") | |
| def save_api_key_(api_key): | |
| save_api_key(api_key) | |
| the_main_window.update_from_thread("Saved API Key") | |
| the_main_window.input_box.setPlaceholderText("Type here") | |
| settings_dialog.close() | |
| save_button.clicked.connect(lambda: save_api_key_(api_key_input.text())) | |
| settings_dialog.layout().addWidget(save_button) | |
| openai_url_label = QLabel("OpenAI Base URL") | |
| settings_dialog.layout().addWidget(openai_url_label) | |
| openai_url_input = QLineEdit() | |
| openai_url = load_openai_url() | |
| openai_url_input.setText(openai_url) | |
| settings_dialog.layout().addWidget(openai_url_input) | |
| def save_openai_url_(): | |
| openai_url = openai_url_input.text() | |
| save_openai_url(openai_url) | |
| the_main_window.update_from_thread("Saved OpenAI Base URL") | |
| the_main_window.input_box.setPlaceholderText("Type here") | |
| settings_dialog.close() | |
| openai_url_save_button = QPushButton("Save URL") | |
| openai_url_save_button.clicked.connect(save_openai_url_) | |
| settings_dialog.layout().addWidget(openai_url_save_button) | |
| groq_api_key_label = QLabel("Groq API Key") | |
| settings_dialog.layout().addWidget(groq_api_key_label) | |
| groq_api_key_input = QLineEdit() | |
| groq_api_key = load_groq_api_key() | |
| groq_api_key_input.setText(groq_api_key) | |
| settings_dialog.layout().addWidget(groq_api_key_input) | |
| groq_save_button = QPushButton("Save") | |
| def groq_save_api_key_(api_key): | |
| save_groq_api_key(api_key) | |
| the_main_window.update_from_thread("Saved Groq API Key") | |
| the_main_window.input_box.setPlaceholderText("Type here") | |
| settings_dialog.close() | |
| groq_save_button.clicked.connect( | |
| lambda: groq_save_api_key_(groq_api_key_input.text()) | |
| ) | |
| settings_dialog.layout().addWidget(groq_save_button) | |
| google_api_key_label = QLabel("Google Generative AI API Key") | |
| settings_dialog.layout().addWidget(google_api_key_label) | |
| google_api_key_input = QLineEdit() | |
| google_api_key = load_google_api_key() | |
| google_api_key_input.setText(google_api_key) | |
| settings_dialog.layout().addWidget(google_api_key_input) | |
| google_save_button = QPushButton("Save") | |
| def google_save_api_key_(api_key): | |
| save_google_api_key(api_key) | |
| the_main_window.update_from_thread("Saved Google API Key") | |
| the_main_window.input_box.setPlaceholderText("Type here") | |
| settings_dialog.close() | |
| google_save_button.clicked.connect( | |
| lambda: google_save_api_key_(google_api_key_input.text()) | |
| ) | |
| settings_dialog.layout().addWidget(google_save_button) | |
| def hide_openai(): | |
| api_key_label.hide() | |
| api_key_input.hide() | |
| openai_url_label.hide() | |
| openai_url_input.hide() | |
| save_button.hide() | |
| openai_url_save_button.hide() | |
| def hide_groq(): | |
| groq_api_key_label.hide() | |
| groq_api_key_input.hide() | |
| groq_save_button.hide() | |
| def hide_google(): | |
| google_api_key_label.hide() | |
| google_api_key_input.hide() | |
| google_save_button.hide() | |
| def show_openai(): | |
| api_key_label.show() | |
| api_key_input.show() | |
| openai_url_label.show() | |
| openai_url_input.show() | |
| save_button.show() | |
| openai_url_save_button.show() | |
| def show_groq(): | |
| groq_api_key_label.show() | |
| groq_api_key_input.show() | |
| groq_save_button.show() | |
| def show_google(): | |
| google_api_key_label.show() | |
| google_api_key_input.show() | |
| google_save_button.show() | |
| hide_openai() | |
| hide_groq() | |
| hide_google() | |
| model_label = QLabel("Model") | |
| model_select = QComboBox() | |
| model_select.addItems(list(llm_show_name.keys())) | |
| settings_dialog.layout().addWidget(model_label) | |
| settings_dialog.layout().addWidget(model_select) | |
| current_model = load_model_settings() | |
| for i, model in enumerate(llm_show_name.keys()): | |
| if llm_show_name[model] == current_model: | |
| model_select.setCurrentIndex(i) | |
| if llm_settings[llm_show_name[model_select.currentText()]]["provider"] == "openai": | |
| show_openai() | |
| if llm_settings[llm_show_name[model_select.currentText()]]["provider"] == "groq": | |
| show_groq() | |
| if llm_settings[llm_show_name[model_select.currentText()]]["provider"] == "google": | |
| show_google() | |
| if not llm_settings[llm_show_name[model_select.currentText()]]["vision"]: | |
| the_main_window.remove_screenshot_button() | |
| def on_model_change(): | |
| hide_openai() | |
| hide_groq() | |
| hide_google() | |
| the_save_string = llm_show_name[model_select.currentText()] | |
| save_model_settings(the_save_string) | |
| if ( | |
| llm_settings[llm_show_name[model_select.currentText()]]["provider"] | |
| == "openai" | |
| ): | |
| show_openai() | |
| openai_url_label.show() | |
| openai_url_input.show() | |
| openai_url_save_button.show() | |
| if llm_settings[llm_show_name[model_select.currentText()]]["vision"]: | |
| the_main_window.add_screenshot_button() | |
| else: | |
| the_main_window.remove_screenshot_button() | |
| if ( | |
| llm_settings[llm_show_name[model_select.currentText()]]["provider"] | |
| == "groq" | |
| ): | |
| show_groq() | |
| if ( | |
| llm_settings[llm_show_name[model_select.currentText()]]["provider"] | |
| == "google" | |
| ): | |
| show_google() | |
| model_select.currentIndexChanged.connect(on_model_change) | |
| # Add TTS model selection | |
| tts_model_label = QLabel("TTS Model") | |
| tts_model_select = QComboBox() | |
| tts_model_select.addItems(["openai", "microsoft_local"]) | |
| settings_dialog.layout().addWidget(tts_model_label) | |
| settings_dialog.layout().addWidget(tts_model_select) | |
| currently_tts_model = load_tts_model_settings() | |
| if currently_tts_model == "openai": | |
| tts_model_select.setCurrentIndex(0) | |
| show_openai() | |
| else: | |
| tts_model_select.setCurrentIndex(1) | |
| def on_tts_model_change(): | |
| if tts_model_select.currentText() == "openai": | |
| show_openai() | |
| save_tts_model_settings("openai") | |
| else: | |
| save_tts_model_settings("microsoft_local") | |
| if not is_local_tts_available(): | |
| # add an text to inform the user that local tts is not available | |
| information_text = QLabel( | |
| "Please install gpt-computer-agent[local_tts] to use local TTS" | |
| ) | |
| settings_dialog.layout().addWidget(information_text) | |
| tts_model_select.setEnabled(False) | |
| tts_model_select.currentIndexChanged.connect(on_tts_model_change) | |
| # Add STT model selection | |
| stt_model_label = QLabel("STT Model") | |
| stt_model_select = QComboBox() | |
| stt_model_select.addItems(["openai", "openai_whisper_local"]) | |
| settings_dialog.layout().addWidget(stt_model_label) | |
| settings_dialog.layout().addWidget(stt_model_select) | |
| currently_stt_model = load_stt_model_settings() | |
| if currently_stt_model == "openai": | |
| stt_model_select.setCurrentIndex(0) | |
| show_openai() | |
| else: | |
| stt_model_select.setCurrentIndex(1) | |
| def on_stt_model_change(): | |
| if stt_model_select.currentText() == "openai": | |
| show_openai() | |
| save_stt_model_settings("openai") | |
| else: | |
| save_stt_model_settings("openai_whisper_local") | |
| if not is_local_stt_available(): | |
| # add an text to inform the user that local stt is not available | |
| information_text = QLabel( | |
| "Please install gpt-computer-agent[local_stt] to use local STT" | |
| ) | |
| settings_dialog.layout().addWidget(information_text) | |
| stt_model_select.setEnabled(False) | |
| stt_model_select.currentIndexChanged.connect(on_stt_model_change) | |
| # Add an separator | |
| separator = QLabel("------------------------------------------------") | |
| settings_dialog.layout().addWidget(separator) | |
| # Add an powered by label | |
| powered_by_label = QLabel("Powered by KhulnaSoft <3") | |
| # Make label bold | |
| font = powered_by_label.font() | |
| font.setBold(True) | |
| powered_by_label.setFont(font) | |
| settings_dialog.layout().addWidget(powered_by_label) | |
| settings_dialog.exec_() | |