try: from ..utils.db import * from ..agent.chat_history import clear_chat_history from ..llm_settings import llm_show_name, llm_settings except ImportError: from utils.db import * from agent.chat_history import clear_chat_history from llm_settings import llm_show_name, llm_settings from PyQt5.QtWidgets import QDialog, QVBoxLayout, QLabel, QLineEdit, QPushButton from PyQt5.QtCore import Qt from PyQt5.QtWidgets import QComboBox from gpt_computer_assistant.utils.db import save_openai_url, save_groq_api_key def llmsettings_popup(self): from ..gpt_computer_assistant import the_main_window # Create a settings dialog and inside of it create a text input about openai_api_key and a button to save it 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) # Start of new OpenAI Base URL settings 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) # End of new OpenAI Base URL settings 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() print("LLLM SETTINGS", list(llm_show_name.keys())) # Add a select box with the options OpenAI and Olamo 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) # currently model current_model = load_model_settings() # lets set index of current model for i, model in enumerate(llm_show_name.keys()): print("MODEL", model, current_model) the_save_string = llm_show_name[model] if the_save_string == 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()]]["transcription"]: the_main_window.remove_painting() 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()]]["transcription"] is False: from ..gpt_computer_assistant import the_main_window the_main_window.remove_painting() 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() from ..gpt_computer_assistant import the_main_window the_main_window.activate_painting() 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) settings_dialog.exec_()