Adding setting for custom OpenAI base url (#785)

This commit is contained in:
Raivis Dejus 2024-06-07 22:32:08 +03:00 committed by GitHub
parent 8fbaf013b9
commit 401665b184
No known key found for this signature in database
GPG key ID: B5690EEEBB952194
5 changed files with 67 additions and 19 deletions

View file

@ -8,8 +8,8 @@ msgid ""
msgstr ""
"Project-Id-Version: \n"
"Report-Msgid-Bugs-To: \n"
"POT-Creation-Date: 2024-06-07 08:32+0300\n"
"PO-Revision-Date: 2024-06-07 08:34+0300\n"
"POT-Creation-Date: 2024-06-07 21:05+0300\n"
"PO-Revision-Date: 2024-06-07 21:06+0300\n"
"Last-Translator: \n"
"Language-Team: \n"
"Language: lv_LV\n"
@ -124,23 +124,23 @@ msgstr "Adrese nav derīga"
msgid "The URL you entered is invalid."
msgstr "Jūsu ievadītā URL adrese nav derīga."
#: buzz/widgets/recording_transcriber_widget.py:61
#: buzz/widgets/recording_transcriber_widget.py:63
msgid "Live Recording"
msgstr "Dzīvā ierakstīšana"
#: buzz/widgets/recording_transcriber_widget.py:110
#: buzz/widgets/recording_transcriber_widget.py:112
msgid "Click Record to begin..."
msgstr "Klikšķiniet Ierakstīt, lai sāktu..."
#: buzz/widgets/recording_transcriber_widget.py:122
#: buzz/widgets/recording_transcriber_widget.py:124
msgid "Microphone:"
msgstr "Mikrofons:"
#: buzz/widgets/recording_transcriber_widget.py:290
#: buzz/widgets/recording_transcriber_widget.py:319
msgid "An error occurred while starting a new recording:"
msgstr "Sākot jaunu ierakstu notikusi kļūda:"
#: buzz/widgets/recording_transcriber_widget.py:294
#: buzz/widgets/recording_transcriber_widget.py:323
msgid ""
"Please check your audio devices or check the application logs for more "
"information."
@ -285,7 +285,7 @@ msgstr "Ieslēgt mapes vērošanu"
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:47
#: buzz/widgets/preferences_dialog/folder_watch_preferences_widget.py:50
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:72
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:84
msgid "Browse"
msgstr "Izvēlēties"
@ -305,32 +305,36 @@ msgstr "Izvēlieties vērojamo mapi"
msgid "Select Output Folder"
msgstr "Izvēlieties rezultātu mapi"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:42
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:44
msgid "Test"
msgstr "Pārbaudīt"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:48
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:50
msgid "OpenAI API key"
msgstr "OpenAI API atslēga"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:60
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:63
msgid "OpenAI base url"
msgstr "OpenAI adrese"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:72
msgid "Default export file name"
msgstr "Eksporta fails"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:66
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:78
msgid "Enable live recording transcription export"
msgstr "Eksportēt dzīvā ieraksta transkriptus"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:91
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:103
msgid "Export folder"
msgstr "Eksportēt mapē"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:116
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:122
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:128
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:134
msgid "OpenAI API Key Test"
msgstr "OpenAI API atslēgas pārbaude"
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:117
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:129
msgid ""
"Your API key is valid. Buzz will use this key to perform Whisper API "
"transcriptions."
@ -338,7 +342,7 @@ msgstr ""
"Jūsu API atslēga ir derīga. Buzz izmantos to runas atpazīšanai ar Whisper "
"API."
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:141
#: buzz/widgets/preferences_dialog/general_preferences_widget.py:157
msgid "Select Export Folder"
msgstr "Izvēlieties mapi kurā eksportēt"

View file

@ -31,6 +31,7 @@ class Settings:
FILE_TRANSCRIBER_EXPORT_FORMATS = "file-transcriber/export-formats"
DEFAULT_EXPORT_FILE_NAME = "transcriber/default-export-file-name"
CUSTOM_OPENAI_BASE_URL = "transcriber/custom-openai-base-url"
SHORTCUTS = "shortcuts"

View file

@ -8,6 +8,7 @@ from typing import Optional, List
from PyQt6.QtCore import QObject
from openai import OpenAI
from buzz.settings.settings import Settings
from buzz.transcriber.file_transcriber import FileTranscriber
from buzz.transcriber.transcriber import FileTranscriptionTask, Segment, Task
@ -15,9 +16,14 @@ from buzz.transcriber.transcriber import FileTranscriptionTask, Segment, Task
class OpenAIWhisperAPIFileTranscriber(FileTranscriber):
def __init__(self, task: FileTranscriptionTask, parent: Optional["QObject"] = None):
super().__init__(task=task, parent=parent)
settings = Settings()
custom_openai_base_url = settings.value(
key=Settings.Key.CUSTOM_OPENAI_BASE_URL, default_value=""
)
self.task = task.transcription_options.task
self.openai_client = OpenAI(
api_key=self.transcription_task.transcription_options.openai_access_token
api_key=self.transcription_task.transcription_options.openai_access_token,
base_url=custom_openai_base_url if custom_openai_base_url else None
)
def transcribe(self) -> List[Segment]:

View file

@ -30,6 +30,8 @@ class GeneralPreferencesWidget(QWidget):
):
super().__init__(parent)
self.settings = Settings()
self.openai_api_key = get_password(Key.OPENAI_API_KEY)
layout = QFormLayout(self)
@ -48,7 +50,17 @@ class GeneralPreferencesWidget(QWidget):
layout.addRow(_("OpenAI API key"), self.openai_api_key_line_edit)
layout.addRow("", self.test_openai_api_key_button)
self.settings = Settings()
self.custom_openai_base_url = self.settings.value(
key=Settings.Key.CUSTOM_OPENAI_BASE_URL, default_value=""
)
self.custom_openai_base_url_line_edit = LineEdit(self.custom_openai_base_url, self)
self.custom_openai_base_url_line_edit.textChanged.connect(
self.on_custom_openai_base_url_changed
)
self.custom_openai_base_url_line_edit.setMinimumWidth(200)
self.custom_openai_base_url_line_edit.setPlaceholderText("https://api.openai.com/v1")
layout.addRow(_("OpenAI base url"), self.custom_openai_base_url_line_edit)
default_export_file_name = self.settings.get_default_export_file_template()
@ -126,6 +138,9 @@ class GeneralPreferencesWidget(QWidget):
self.update_test_openai_api_key_button()
self.openai_api_key_changed.emit(key)
def on_custom_openai_base_url_changed(self, text: str):
self.settings.set_value(Settings.Key.CUSTOM_OPENAI_BASE_URL, text)
def on_recording_export_enable_changed(self, state: int):
self.recording_export_enabled = state == 2

View file

@ -2,6 +2,7 @@ from PyQt6.QtCore import Qt
from PyQt6.QtWidgets import QPushButton, QMessageBox, QLineEdit, QCheckBox
from buzz.locale import _
from buzz.settings.settings import Settings
from buzz.widgets.preferences_dialog.general_preferences_widget import (
GeneralPreferencesWidget,
)
@ -86,3 +87,24 @@ class TestGeneralPreferencesWidget:
assert widget.settings.value(
key=widget.settings.Key.RECORDING_TRANSCRIBER_EXPORT_FOLDER,
default_value='/home/user/documents') == '/path/to/export/folder'
def test_openai_base_url_preferences(self, qtbot, mocker):
widget = GeneralPreferencesWidget()
qtbot.add_widget(widget)
settings = Settings()
openai_base_url = settings.value(
key=Settings.Key.CUSTOM_OPENAI_BASE_URL, default_value=""
)
assert openai_base_url == ""
assert widget.custom_openai_base_url_line_edit.text() == ""
widget.custom_openai_base_url_line_edit.setText("https://localhost:8000/v1")
updated_openai_base_url = settings.value(
key=Settings.Key.CUSTOM_OPENAI_BASE_URL, default_value=""
)
assert updated_openai_base_url == "https://localhost:8000/v1"