diff --git a/gpt4all-chat/mysettings.cpp b/gpt4all-chat/mysettings.cpp index 9d6dc5cd..d5a7e9df 100644 --- a/gpt4all-chat/mysettings.cpp +++ b/gpt4all-chat/mysettings.cpp @@ -22,6 +22,7 @@ static int default_localDocsRetrievalSize = 3; static bool default_localDocsShowReferences = true; static QString default_networkAttribution = ""; static bool default_networkIsActive = false; +static int default_networkPort = 4891; static bool default_networkUsageStatsActive = false; static QString default_device = "Auto"; @@ -107,6 +108,7 @@ void MySettings::restoreApplicationDefaults() setThreadCount(default_threadCount); setSaveChatsContext(default_saveChatsContext); setServerChat(default_serverChat); + setNetworkPort(default_networkPort); setModelPath(defaultLocalModelsPath()); setUserDefaultModel(default_userDefaultModel); setForceMetal(default_forceMetal); @@ -678,6 +680,24 @@ void MySettings::setServerChat(bool b) emit serverChatChanged(); } +int MySettings::networkPort() const +{ + QSettings setting; + setting.sync(); + return setting.value("networkPort", default_serverChat).toInt(); +} + +void MySettings::setNetworkPort(int c) +{ + if (networkPort() == c) + return; + + QSettings setting; + setting.setValue("networkPort", c); + setting.sync(); + emit networkPortChanged(); +} + QString MySettings::modelPath() const { QSettings setting; diff --git a/gpt4all-chat/mysettings.h b/gpt4all-chat/mysettings.h index d137c583..ce71745a 100644 --- a/gpt4all-chat/mysettings.h +++ b/gpt4all-chat/mysettings.h @@ -28,6 +28,7 @@ class MySettings : public QObject Q_PROPERTY(bool networkUsageStatsActive READ networkUsageStatsActive WRITE setNetworkUsageStatsActive NOTIFY networkUsageStatsActiveChanged) Q_PROPERTY(QString device READ device WRITE setDevice NOTIFY deviceChanged) Q_PROPERTY(QVector deviceList READ deviceList NOTIFY deviceListChanged) + Q_PROPERTY(int networkPort READ networkPort WRITE setNetworkPort NOTIFY networkPortChanged) public: static MySettings *globalInstance(); @@ -131,6 +132,8 @@ public: void setNetworkIsActive(bool b); bool networkUsageStatsActive() const; void setNetworkUsageStatsActive(bool b); + int networkPort() const; + void setNetworkPort(int c); QVector deviceList() const; void setDeviceList(const QVector &deviceList); @@ -164,6 +167,7 @@ Q_SIGNALS: void localDocsShowReferencesChanged(); void networkAttributionChanged(); void networkIsActiveChanged(); + void networkPortChanged(); void networkUsageStatsActiveChanged(); void attemptModelLoadChanged(); void deviceChanged(); diff --git a/gpt4all-chat/qml/ApplicationSettings.qml b/gpt4all-chat/qml/ApplicationSettings.qml index 5a0ef443..882a2910 100644 --- a/gpt4all-chat/qml/ApplicationSettings.qml +++ b/gpt4all-chat/qml/ApplicationSettings.qml @@ -254,9 +254,41 @@ MySettingsTab { } ToolTip.text: qsTr("WARNING: This enables the gui to act as a local REST web server(OpenAI API compliant) for API requests and will increase your RAM usage as well") ToolTip.visible: hovered + } + Label { + id: serverPortLabel + text: qsTr("Server Port (Requires restart):") + color: theme.textColor + font.pixelSize: theme.fontSizeLarge + Layout.row: 9 + Layout.column: 0 + } + MyTextField { + text: MySettings.networkPort + color: theme.textColor + font.pixelSize: theme.fontSizeLarge + ToolTip.text: qsTr("Api server port. WARNING: You need to restart the application for it to take effect") + ToolTip.visible: hovered + Layout.row: 9 + Layout.column: 1 + validator: IntValidator { + bottom: 1 + } + onEditingFinished: { + var val = parseInt(text) + if (!isNaN(val)) { + MySettings.networkPort = val + focus = false + } else { + text = MySettings.networkPort + } + } + Accessible.role: Accessible.EditableText + Accessible.name: nServerPortLabel.text + Accessible.description: ToolTip.text } Rectangle { - Layout.row: 9 + Layout.row: 10 Layout.column: 0 Layout.columnSpan: 3 Layout.fillWidth: true diff --git a/gpt4all-chat/server.cpp b/gpt4all-chat/server.cpp index b7587966..c8aa2364 100644 --- a/gpt4all-chat/server.cpp +++ b/gpt4all-chat/server.cpp @@ -71,7 +71,7 @@ Server::~Server() void Server::start() { m_server = new QHttpServer(this); - if (!m_server->listen(QHostAddress::LocalHost, 4891)) { + if (!m_server->listen(QHostAddress::LocalHost, MySettings::globalInstance()->networkPort())) { qWarning() << "ERROR: Unable to start the server"; return; }