mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-07-18 13:04:28 -04:00
Move preset params to separate settings page
This commit is contained in:
@ -45,56 +45,6 @@ QodeAssistSettings::QodeAssistSettings()
|
|||||||
{
|
{
|
||||||
setAutoApply(false);
|
setAutoApply(false);
|
||||||
|
|
||||||
temperature.setSettingsKey(Constants::TEMPERATURE);
|
|
||||||
temperature.setLabelText(Tr::tr("Temperature:"));
|
|
||||||
temperature.setDefaultValue(0.2);
|
|
||||||
temperature.setRange(0.0, 10.0);
|
|
||||||
|
|
||||||
|
|
||||||
ollamaLivetime.setSettingsKey(Constants::OLLAMA_LIVETIME);
|
|
||||||
ollamaLivetime.setLabelText(
|
|
||||||
Tr::tr("Time to suspend Ollama after completion request (in minutes), "
|
|
||||||
"Only Ollama, -1 to disable"));
|
|
||||||
ollamaLivetime.setDefaultValue("5m");
|
|
||||||
ollamaLivetime.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
|
|
||||||
|
|
||||||
maxTokens.setSettingsKey(Constants::MAX_TOKENS);
|
|
||||||
maxTokens.setLabelText(Tr::tr("Max Tokens"));
|
|
||||||
maxTokens.setRange(-1, 10000);
|
|
||||||
maxTokens.setDefaultValue(150);
|
|
||||||
|
|
||||||
useTopP.setSettingsKey(Constants::USE_TOP_P);
|
|
||||||
useTopP.setDefaultValue(false);
|
|
||||||
|
|
||||||
topP.setSettingsKey(Constants::TOP_P);
|
|
||||||
topP.setLabelText(Tr::tr("top_p"));
|
|
||||||
topP.setDefaultValue(0.9);
|
|
||||||
topP.setRange(0.0, 1.0);
|
|
||||||
|
|
||||||
useTopK.setSettingsKey(Constants::USE_TOP_K);
|
|
||||||
useTopK.setDefaultValue(false);
|
|
||||||
|
|
||||||
topK.setSettingsKey(Constants::TOP_K);
|
|
||||||
topK.setLabelText(Tr::tr("top_k"));
|
|
||||||
topK.setDefaultValue(50);
|
|
||||||
topK.setRange(1, 1000);
|
|
||||||
|
|
||||||
usePresencePenalty.setSettingsKey(Constants::USE_PRESENCE_PENALTY);
|
|
||||||
usePresencePenalty.setDefaultValue(false);
|
|
||||||
|
|
||||||
presencePenalty.setSettingsKey(Constants::PRESENCE_PENALTY);
|
|
||||||
presencePenalty.setLabelText(Tr::tr("presence_penalty"));
|
|
||||||
presencePenalty.setDefaultValue(0.0);
|
|
||||||
presencePenalty.setRange(-2.0, 2.0);
|
|
||||||
|
|
||||||
useFrequencyPenalty.setSettingsKey(Constants::USE_FREQUENCY_PENALTY);
|
|
||||||
useFrequencyPenalty.setDefaultValue(false);
|
|
||||||
|
|
||||||
frequencyPenalty.setSettingsKey(Constants::FREQUENCY_PENALTY);
|
|
||||||
frequencyPenalty.setLabelText(Tr::tr("frequency_penalty"));
|
|
||||||
frequencyPenalty.setDefaultValue(0.0);
|
|
||||||
frequencyPenalty.setRange(-2.0, 2.0);
|
|
||||||
|
|
||||||
startSuggestionTimer.setSettingsKey(Constants::START_SUGGESTION_TIMER);
|
startSuggestionTimer.setSettingsKey(Constants::START_SUGGESTION_TIMER);
|
||||||
startSuggestionTimer.setLabelText(Tr::tr("Start Suggestion Timer:"));
|
startSuggestionTimer.setLabelText(Tr::tr("Start Suggestion Timer:"));
|
||||||
startSuggestionTimer.setRange(10, 10000);
|
startSuggestionTimer.setRange(10, 10000);
|
||||||
@ -102,11 +52,6 @@ QodeAssistSettings::QodeAssistSettings()
|
|||||||
|
|
||||||
resetToDefaults.m_buttonText = Tr::tr("Reset to Defaults");
|
resetToDefaults.m_buttonText = Tr::tr("Reset to Defaults");
|
||||||
|
|
||||||
apiKey.setSettingsKey(Constants::API_KEY);
|
|
||||||
apiKey.setLabelText(Tr::tr("API Key:"));
|
|
||||||
apiKey.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
|
|
||||||
apiKey.setPlaceHolderText(Tr::tr("Enter your API key here"));
|
|
||||||
|
|
||||||
customJsonTemplate.setSettingsKey(Constants::CUSTOM_JSON_TEMPLATE);
|
customJsonTemplate.setSettingsKey(Constants::CUSTOM_JSON_TEMPLATE);
|
||||||
customJsonTemplate.setLabelText("Custom JSON Template:");
|
customJsonTemplate.setLabelText("Custom JSON Template:");
|
||||||
customJsonTemplate.setDisplayStyle(Utils::StringAspect::TextEditDisplay);
|
customJsonTemplate.setDisplayStyle(Utils::StringAspect::TextEditDisplay);
|
||||||
@ -135,11 +80,6 @@ QodeAssistSettings::QodeAssistSettings()
|
|||||||
|
|
||||||
readSettings();
|
readSettings();
|
||||||
|
|
||||||
topK.setEnabled(useTopK());
|
|
||||||
topP.setEnabled(useTopP());
|
|
||||||
presencePenalty.setEnabled(usePresencePenalty());
|
|
||||||
frequencyPenalty.setEnabled(useFrequencyPenalty());
|
|
||||||
|
|
||||||
customJsonTemplate.setVisible(PromptTemplateManager::instance().getCurrentTemplate()->name()
|
customJsonTemplate.setVisible(PromptTemplateManager::instance().getCurrentTemplate()->name()
|
||||||
== "Custom Template");
|
== "Custom Template");
|
||||||
|
|
||||||
@ -155,18 +95,18 @@ QodeAssistSettings::QodeAssistSettings()
|
|||||||
// maxFileThreshold,
|
// maxFileThreshold,
|
||||||
// readStringsBeforeCursor,
|
// readStringsBeforeCursor,
|
||||||
// readStringsAfterCursor,
|
// readStringsAfterCursor,
|
||||||
ollamaLivetime,
|
// ollamaLivetime,
|
||||||
apiKey,
|
// apiKey,
|
||||||
// useFilePathInContext,
|
// useFilePathInContext,
|
||||||
// useSpecificInstructions,
|
// useSpecificInstructions,
|
||||||
// specificInstractions,
|
// specificInstractions,
|
||||||
temperature,
|
// temperature,
|
||||||
maxTokens,
|
// maxTokens,
|
||||||
startSuggestionTimer,
|
// startSuggestionTimer,
|
||||||
Row{useTopP, topP, Stretch{1}},
|
// Row{useTopP, topP, Stretch{1}},
|
||||||
Row{useTopK, topK, Stretch{1}},
|
// Row{useTopK, topK, Stretch{1}},
|
||||||
Row{usePresencePenalty, presencePenalty, Stretch{1}},
|
/* Row{usePresencePenalty, presencePenalty, Stretch{1}},
|
||||||
Row{useFrequencyPenalty, frequencyPenalty, Stretch{1}}}}},
|
Row{useFrequencyPenalty, frequencyPenalty, Stretch{1}}*/}}},
|
||||||
st};
|
st};
|
||||||
});
|
});
|
||||||
|
|
||||||
@ -175,19 +115,6 @@ QodeAssistSettings::QodeAssistSettings()
|
|||||||
|
|
||||||
void QodeAssistSettings::setupConnections()
|
void QodeAssistSettings::setupConnections()
|
||||||
{
|
{
|
||||||
connect(&useTopP, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
|
||||||
topP.setEnabled(useTopP.volatileValue());
|
|
||||||
});
|
|
||||||
connect(&useTopK, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
|
||||||
topK.setEnabled(useTopK.volatileValue());
|
|
||||||
});
|
|
||||||
connect(&usePresencePenalty, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
|
||||||
presencePenalty.setEnabled(usePresencePenalty.volatileValue());
|
|
||||||
});
|
|
||||||
connect(&useFrequencyPenalty, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
|
||||||
frequencyPenalty.setEnabled(useFrequencyPenalty.volatileValue());
|
|
||||||
});
|
|
||||||
|
|
||||||
connect(&resetToDefaults,
|
connect(&resetToDefaults,
|
||||||
&ButtonAspect::clicked,
|
&ButtonAspect::clicked,
|
||||||
this,
|
this,
|
||||||
@ -230,23 +157,23 @@ void QodeAssistSettings::resetSettingsToDefaults()
|
|||||||
// resetAspect(endPoint);
|
// resetAspect(endPoint);
|
||||||
// resetAspect(modelName);
|
// resetAspect(modelName);
|
||||||
// resetAspect(fimPrompts);
|
// resetAspect(fimPrompts);
|
||||||
resetAspect(temperature);
|
// resetAspect(temperature);
|
||||||
resetAspect(maxTokens);
|
// resetAspect(maxTokens);
|
||||||
// resetAspect(readFullFile);
|
// resetAspect(readFullFile);
|
||||||
// resetAspect(maxFileThreshold);
|
// resetAspect(maxFileThreshold);
|
||||||
// resetAspect(readStringsBeforeCursor);
|
// resetAspect(readStringsBeforeCursor);
|
||||||
// resetAspect(readStringsAfterCursor);
|
// resetAspect(readStringsAfterCursor);
|
||||||
resetAspect(useTopP);
|
// resetAspect(useTopP);
|
||||||
resetAspect(topP);
|
// resetAspect(topP);
|
||||||
resetAspect(useTopK);
|
// resetAspect(useTopK);
|
||||||
resetAspect(topK);
|
// resetAspect(topK);
|
||||||
resetAspect(usePresencePenalty);
|
// resetAspect(usePresencePenalty);
|
||||||
resetAspect(presencePenalty);
|
// resetAspect(presencePenalty);
|
||||||
resetAspect(useFrequencyPenalty);
|
// resetAspect(useFrequencyPenalty);
|
||||||
resetAspect(frequencyPenalty);
|
// resetAspect(frequencyPenalty);
|
||||||
resetAspect(startSuggestionTimer);
|
resetAspect(startSuggestionTimer);
|
||||||
// resetAspect(enableLogging);
|
// resetAspect(enableLogging);
|
||||||
resetAspect(ollamaLivetime);
|
// resetAspect(ollamaLivetime);
|
||||||
// resetAspect(specificInstractions);
|
// resetAspect(specificInstractions);
|
||||||
// resetAspect(multiLineCompletion);
|
// resetAspect(multiLineCompletion);
|
||||||
// resetAspect(useFilePathInContext);
|
// resetAspect(useFilePathInContext);
|
||||||
|
@ -57,29 +57,11 @@ class QodeAssistSettings : public Utils::AspectContainer
|
|||||||
public:
|
public:
|
||||||
QodeAssistSettings();
|
QodeAssistSettings();
|
||||||
|
|
||||||
Utils::DoubleAspect temperature{this};
|
|
||||||
Utils::IntegerAspect maxTokens{this};
|
|
||||||
|
|
||||||
Utils::BoolAspect useTopP{this};
|
|
||||||
Utils::DoubleAspect topP{this};
|
|
||||||
|
|
||||||
Utils::BoolAspect useTopK{this};
|
|
||||||
Utils::IntegerAspect topK{this};
|
|
||||||
|
|
||||||
Utils::BoolAspect usePresencePenalty{this};
|
|
||||||
Utils::DoubleAspect presencePenalty{this};
|
|
||||||
|
|
||||||
Utils::BoolAspect useFrequencyPenalty{this};
|
|
||||||
Utils::DoubleAspect frequencyPenalty{this};
|
|
||||||
|
|
||||||
Utils::IntegerAspect startSuggestionTimer{this};
|
Utils::IntegerAspect startSuggestionTimer{this};
|
||||||
|
|
||||||
Utils::StringAspect ollamaLivetime{this};
|
|
||||||
|
|
||||||
Utils::StringAspect customJsonTemplate{this};
|
Utils::StringAspect customJsonTemplate{this};
|
||||||
ButtonAspect saveCustomTemplateButton{this};
|
ButtonAspect saveCustomTemplateButton{this};
|
||||||
ButtonAspect loadCustomTemplateButton{this};
|
ButtonAspect loadCustomTemplateButton{this};
|
||||||
Utils::StringAspect apiKey{this};
|
|
||||||
|
|
||||||
ButtonAspect resetToDefaults{this};
|
ButtonAspect resetToDefaults{this};
|
||||||
|
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "PromptTemplateManager.hpp"
|
#include "PromptTemplateManager.hpp"
|
||||||
#include "QodeAssistSettings.hpp"
|
#include "QodeAssistSettings.hpp"
|
||||||
#include "QodeAssistUtils.hpp"
|
#include "QodeAssistUtils.hpp"
|
||||||
|
#include "settings/PresetPromptsSettings.hpp"
|
||||||
|
|
||||||
namespace QodeAssist::Providers {
|
namespace QodeAssist::Providers {
|
||||||
|
|
||||||
@ -50,6 +51,7 @@ QString LMStudioProvider::completionEndpoint() const
|
|||||||
|
|
||||||
void LMStudioProvider::prepareRequest(QJsonObject &request)
|
void LMStudioProvider::prepareRequest(QJsonObject &request)
|
||||||
{
|
{
|
||||||
|
auto &settings = Settings::presetPromptsSettings();
|
||||||
const auto ¤tTemplate = PromptTemplateManager::instance().getCurrentTemplate();
|
const auto ¤tTemplate = PromptTemplateManager::instance().getCurrentTemplate();
|
||||||
if (currentTemplate->name() == "Custom Template")
|
if (currentTemplate->name() == "Custom Template")
|
||||||
return;
|
return;
|
||||||
@ -59,17 +61,17 @@ void LMStudioProvider::prepareRequest(QJsonObject &request)
|
|||||||
request["messages"] = std::move(messages);
|
request["messages"] = std::move(messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
request["max_tokens"] = settings().maxTokens();
|
request["max_tokens"] = settings.maxTokens();
|
||||||
request["temperature"] = settings().temperature();
|
request["temperature"] = settings.temperature();
|
||||||
request["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
|
request["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
|
||||||
if (settings().useTopP())
|
if (settings.useTopP())
|
||||||
request["top_p"] = settings().topP();
|
request["top_p"] = settings.topP();
|
||||||
if (settings().useTopK())
|
if (settings.useTopK())
|
||||||
request["top_k"] = settings().topK();
|
request["top_k"] = settings.topK();
|
||||||
if (settings().useFrequencyPenalty())
|
if (settings.useFrequencyPenalty())
|
||||||
request["frequency_penalty"] = settings().frequencyPenalty();
|
request["frequency_penalty"] = settings.frequencyPenalty();
|
||||||
if (settings().usePresencePenalty())
|
if (settings.usePresencePenalty())
|
||||||
request["presence_penalty"] = settings().presencePenalty();
|
request["presence_penalty"] = settings.presencePenalty();
|
||||||
}
|
}
|
||||||
|
|
||||||
bool LMStudioProvider::handleResponse(QNetworkReply *reply, QString &accumulatedResponse)
|
bool LMStudioProvider::handleResponse(QNetworkReply *reply, QString &accumulatedResponse)
|
||||||
|
@ -28,6 +28,7 @@
|
|||||||
#include "PromptTemplateManager.hpp"
|
#include "PromptTemplateManager.hpp"
|
||||||
#include "QodeAssistSettings.hpp"
|
#include "QodeAssistSettings.hpp"
|
||||||
#include "QodeAssistUtils.hpp"
|
#include "QodeAssistUtils.hpp"
|
||||||
|
#include "settings/PresetPromptsSettings.hpp"
|
||||||
|
|
||||||
namespace QodeAssist::Providers {
|
namespace QodeAssist::Providers {
|
||||||
|
|
||||||
@ -50,23 +51,24 @@ QString OllamaProvider::completionEndpoint() const
|
|||||||
|
|
||||||
void OllamaProvider::prepareRequest(QJsonObject &request)
|
void OllamaProvider::prepareRequest(QJsonObject &request)
|
||||||
{
|
{
|
||||||
|
auto &settings = Settings::presetPromptsSettings();
|
||||||
auto currentTemplate = PromptTemplateManager::instance().getCurrentTemplate();
|
auto currentTemplate = PromptTemplateManager::instance().getCurrentTemplate();
|
||||||
if (currentTemplate->name() == "Custom Template")
|
if (currentTemplate->name() == "Custom Template")
|
||||||
return;
|
return;
|
||||||
|
|
||||||
QJsonObject options;
|
QJsonObject options;
|
||||||
options["num_predict"] = settings().maxTokens();
|
options["num_predict"] = settings.maxTokens();
|
||||||
options["keep_alive"] = settings().ollamaLivetime();
|
options["keep_alive"] = settings.ollamaLivetime();
|
||||||
options["temperature"] = settings().temperature();
|
options["temperature"] = settings.temperature();
|
||||||
options["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
|
options["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
|
||||||
if (settings().useTopP())
|
if (settings.useTopP())
|
||||||
options["top_p"] = settings().topP();
|
options["top_p"] = settings.topP();
|
||||||
if (settings().useTopK())
|
if (settings.useTopK())
|
||||||
options["top_k"] = settings().topK();
|
options["top_k"] = settings.topK();
|
||||||
if (settings().useFrequencyPenalty())
|
if (settings.useFrequencyPenalty())
|
||||||
options["frequency_penalty"] = settings().frequencyPenalty();
|
options["frequency_penalty"] = settings.frequencyPenalty();
|
||||||
if (settings().usePresencePenalty())
|
if (settings.usePresencePenalty())
|
||||||
options["presence_penalty"] = settings().presencePenalty();
|
options["presence_penalty"] = settings.presencePenalty();
|
||||||
request["options"] = options;
|
request["options"] = options;
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -26,6 +26,7 @@
|
|||||||
|
|
||||||
#include "PromptTemplateManager.hpp"
|
#include "PromptTemplateManager.hpp"
|
||||||
#include "QodeAssistSettings.hpp"
|
#include "QodeAssistSettings.hpp"
|
||||||
|
#include "settings/PresetPromptsSettings.hpp"
|
||||||
|
|
||||||
namespace QodeAssist::Providers {
|
namespace QodeAssist::Providers {
|
||||||
|
|
||||||
@ -48,6 +49,7 @@ QString OpenAICompatProvider::completionEndpoint() const
|
|||||||
|
|
||||||
void OpenAICompatProvider::prepareRequest(QJsonObject &request)
|
void OpenAICompatProvider::prepareRequest(QJsonObject &request)
|
||||||
{
|
{
|
||||||
|
auto &settings = Settings::presetPromptsSettings();
|
||||||
const auto ¤tTemplate = PromptTemplateManager::instance().getCurrentTemplate();
|
const auto ¤tTemplate = PromptTemplateManager::instance().getCurrentTemplate();
|
||||||
if (currentTemplate->name() == "Custom Template")
|
if (currentTemplate->name() == "Custom Template")
|
||||||
return;
|
return;
|
||||||
@ -58,19 +60,19 @@ void OpenAICompatProvider::prepareRequest(QJsonObject &request)
|
|||||||
request["messages"] = std::move(messages);
|
request["messages"] = std::move(messages);
|
||||||
}
|
}
|
||||||
|
|
||||||
request["max_tokens"] = settings().maxTokens();
|
request["max_tokens"] = settings.maxTokens();
|
||||||
request["temperature"] = settings().temperature();
|
request["temperature"] = settings.temperature();
|
||||||
request["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
|
request["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
|
||||||
if (settings().useTopP())
|
if (settings.useTopP())
|
||||||
request["top_p"] = settings().topP();
|
request["top_p"] = settings.topP();
|
||||||
if (settings().useTopK())
|
if (settings.useTopK())
|
||||||
request["top_k"] = settings().topK();
|
request["top_k"] = settings.topK();
|
||||||
if (settings().useFrequencyPenalty())
|
if (settings.useFrequencyPenalty())
|
||||||
request["frequency_penalty"] = settings().frequencyPenalty();
|
request["frequency_penalty"] = settings.frequencyPenalty();
|
||||||
if (settings().usePresencePenalty())
|
if (settings.usePresencePenalty())
|
||||||
request["presence_penalty"] = settings().presencePenalty();
|
request["presence_penalty"] = settings.presencePenalty();
|
||||||
|
|
||||||
const QString &apiKey = settings().apiKey.value();
|
const QString &apiKey = settings.apiKey.value();
|
||||||
if (!apiKey.isEmpty()) {
|
if (!apiKey.isEmpty()) {
|
||||||
request["api_key"] = apiKey;
|
request["api_key"] = apiKey;
|
||||||
}
|
}
|
||||||
|
@ -19,7 +19,9 @@
|
|||||||
|
|
||||||
#include "PresetPromptsSettings.hpp"
|
#include "PresetPromptsSettings.hpp"
|
||||||
|
|
||||||
|
#include <QMessageBox>
|
||||||
#include <coreplugin/dialogs/ioptionspage.h>
|
#include <coreplugin/dialogs/ioptionspage.h>
|
||||||
|
#include <coreplugin/icore.h>
|
||||||
#include <utils/layoutbuilder.h>
|
#include <utils/layoutbuilder.h>
|
||||||
|
|
||||||
#include "QodeAssistConstants.hpp"
|
#include "QodeAssistConstants.hpp"
|
||||||
@ -39,12 +41,133 @@ PresetPromptsSettings::PresetPromptsSettings()
|
|||||||
|
|
||||||
setDisplayName(Tr::tr("Preset Prompts Params"));
|
setDisplayName(Tr::tr("Preset Prompts Params"));
|
||||||
|
|
||||||
|
temperature.setSettingsKey(Constants::TEMPERATURE);
|
||||||
|
temperature.setLabelText(Tr::tr("Temperature:"));
|
||||||
|
temperature.setDefaultValue(0.2);
|
||||||
|
temperature.setRange(0.0, 10.0);
|
||||||
|
|
||||||
|
ollamaLivetime.setSettingsKey(Constants::OLLAMA_LIVETIME);
|
||||||
|
ollamaLivetime.setLabelText(
|
||||||
|
Tr::tr("Time to suspend Ollama after completion request (in minutes), "
|
||||||
|
"Only Ollama, -1 to disable"));
|
||||||
|
ollamaLivetime.setDefaultValue("5m");
|
||||||
|
ollamaLivetime.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
|
||||||
|
|
||||||
|
maxTokens.setSettingsKey(Constants::MAX_TOKENS);
|
||||||
|
maxTokens.setLabelText(Tr::tr("Max Tokens"));
|
||||||
|
maxTokens.setRange(-1, 10000);
|
||||||
|
maxTokens.setDefaultValue(150);
|
||||||
|
|
||||||
|
useTopP.setSettingsKey(Constants::USE_TOP_P);
|
||||||
|
useTopP.setDefaultValue(false);
|
||||||
|
|
||||||
|
topP.setSettingsKey(Constants::TOP_P);
|
||||||
|
topP.setLabelText(Tr::tr("top_p"));
|
||||||
|
topP.setDefaultValue(0.9);
|
||||||
|
topP.setRange(0.0, 1.0);
|
||||||
|
|
||||||
|
useTopK.setSettingsKey(Constants::USE_TOP_K);
|
||||||
|
useTopK.setDefaultValue(false);
|
||||||
|
|
||||||
|
topK.setSettingsKey(Constants::TOP_K);
|
||||||
|
topK.setLabelText(Tr::tr("top_k"));
|
||||||
|
topK.setDefaultValue(50);
|
||||||
|
topK.setRange(1, 1000);
|
||||||
|
|
||||||
|
usePresencePenalty.setSettingsKey(Constants::USE_PRESENCE_PENALTY);
|
||||||
|
usePresencePenalty.setDefaultValue(false);
|
||||||
|
|
||||||
|
presencePenalty.setSettingsKey(Constants::PRESENCE_PENALTY);
|
||||||
|
presencePenalty.setLabelText(Tr::tr("presence_penalty"));
|
||||||
|
presencePenalty.setDefaultValue(0.0);
|
||||||
|
presencePenalty.setRange(-2.0, 2.0);
|
||||||
|
|
||||||
|
useFrequencyPenalty.setSettingsKey(Constants::USE_FREQUENCY_PENALTY);
|
||||||
|
useFrequencyPenalty.setDefaultValue(false);
|
||||||
|
|
||||||
|
frequencyPenalty.setSettingsKey(Constants::FREQUENCY_PENALTY);
|
||||||
|
frequencyPenalty.setLabelText(Tr::tr("frequency_penalty"));
|
||||||
|
frequencyPenalty.setDefaultValue(0.0);
|
||||||
|
frequencyPenalty.setRange(-2.0, 2.0);
|
||||||
|
|
||||||
|
apiKey.setSettingsKey(Constants::API_KEY);
|
||||||
|
apiKey.setLabelText(Tr::tr("API Key:"));
|
||||||
|
apiKey.setDisplayStyle(Utils::StringAspect::LineEditDisplay);
|
||||||
|
apiKey.setPlaceHolderText(Tr::tr("Enter your API key here"));
|
||||||
|
|
||||||
|
resetToDefaults.m_buttonText = Tr::tr("Reset Page to Defaults");
|
||||||
|
|
||||||
|
readSettings();
|
||||||
|
|
||||||
|
topK.setEnabled(useTopK());
|
||||||
|
topP.setEnabled(useTopP());
|
||||||
|
presencePenalty.setEnabled(usePresencePenalty());
|
||||||
|
frequencyPenalty.setEnabled(useFrequencyPenalty());
|
||||||
|
|
||||||
|
setupConnections();
|
||||||
|
|
||||||
setLayouter([this]() {
|
setLayouter([this]() {
|
||||||
using namespace Layouting;
|
using namespace Layouting;
|
||||||
return Column{Stretch{1}};
|
return Column{Row{temperature, Stretch{1}, resetToDefaults},
|
||||||
|
maxTokens,
|
||||||
|
Row{useTopP, topP, Stretch{1}},
|
||||||
|
Row{useTopK, topK, Stretch{1}},
|
||||||
|
Row{usePresencePenalty, presencePenalty, Stretch{1}},
|
||||||
|
Row{useFrequencyPenalty, frequencyPenalty, Stretch{1}},
|
||||||
|
apiKey,
|
||||||
|
Stretch{1}};
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
void PresetPromptsSettings::setupConnections()
|
||||||
|
{
|
||||||
|
connect(&useTopP, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
||||||
|
topP.setEnabled(useTopP.volatileValue());
|
||||||
|
});
|
||||||
|
connect(&useTopK, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
||||||
|
topK.setEnabled(useTopK.volatileValue());
|
||||||
|
});
|
||||||
|
connect(&usePresencePenalty, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
||||||
|
presencePenalty.setEnabled(usePresencePenalty.volatileValue());
|
||||||
|
});
|
||||||
|
connect(&useFrequencyPenalty, &Utils::BoolAspect::volatileValueChanged, this, [this]() {
|
||||||
|
frequencyPenalty.setEnabled(useFrequencyPenalty.volatileValue());
|
||||||
|
});
|
||||||
|
|
||||||
|
connect(&resetToDefaults,
|
||||||
|
&ButtonAspect::clicked,
|
||||||
|
this,
|
||||||
|
&PresetPromptsSettings::resetSettingsToDefaults);
|
||||||
|
}
|
||||||
|
|
||||||
|
void PresetPromptsSettings::resetSettingsToDefaults()
|
||||||
|
{
|
||||||
|
QMessageBox::StandardButton reply;
|
||||||
|
reply = QMessageBox::question(
|
||||||
|
Core::ICore::dialogParent(),
|
||||||
|
Tr::tr("Reset Settings"),
|
||||||
|
Tr::tr("Are you sure you want to reset all settings to default values?"),
|
||||||
|
QMessageBox::Yes | QMessageBox::No);
|
||||||
|
|
||||||
|
if (reply == QMessageBox::Yes) {
|
||||||
|
resetAspect(temperature);
|
||||||
|
resetAspect(maxTokens);
|
||||||
|
resetAspect(ollamaLivetime);
|
||||||
|
resetAspect(useTopP);
|
||||||
|
resetAspect(topP);
|
||||||
|
resetAspect(useTopK);
|
||||||
|
resetAspect(topK);
|
||||||
|
resetAspect(usePresencePenalty);
|
||||||
|
resetAspect(presencePenalty);
|
||||||
|
resetAspect(useFrequencyPenalty);
|
||||||
|
resetAspect(frequencyPenalty);
|
||||||
|
}
|
||||||
|
|
||||||
|
QMessageBox::information(Core::ICore::dialogParent(),
|
||||||
|
Tr::tr("Settings Reset"),
|
||||||
|
Tr::tr("All settings have been reset to their default values."));
|
||||||
|
}
|
||||||
|
|
||||||
class PresetPromptsSettingsPage : public Core::IOptionsPage
|
class PresetPromptsSettingsPage : public Core::IOptionsPage
|
||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
|
@ -19,6 +19,7 @@
|
|||||||
|
|
||||||
#pragma once
|
#pragma once
|
||||||
|
|
||||||
|
#include "settings/SettingsUtils.hpp"
|
||||||
#include <utils/aspects.h>
|
#include <utils/aspects.h>
|
||||||
|
|
||||||
namespace QodeAssist::Settings {
|
namespace QodeAssist::Settings {
|
||||||
@ -27,6 +28,30 @@ class PresetPromptsSettings : public Utils::AspectContainer
|
|||||||
{
|
{
|
||||||
public:
|
public:
|
||||||
PresetPromptsSettings();
|
PresetPromptsSettings();
|
||||||
|
|
||||||
|
Utils::DoubleAspect temperature{this};
|
||||||
|
Utils::IntegerAspect maxTokens{this};
|
||||||
|
|
||||||
|
Utils::BoolAspect useTopP{this};
|
||||||
|
Utils::DoubleAspect topP{this};
|
||||||
|
|
||||||
|
Utils::BoolAspect useTopK{this};
|
||||||
|
Utils::IntegerAspect topK{this};
|
||||||
|
|
||||||
|
Utils::BoolAspect usePresencePenalty{this};
|
||||||
|
Utils::DoubleAspect presencePenalty{this};
|
||||||
|
|
||||||
|
Utils::BoolAspect useFrequencyPenalty{this};
|
||||||
|
Utils::DoubleAspect frequencyPenalty{this};
|
||||||
|
|
||||||
|
Utils::StringAspect ollamaLivetime{this};
|
||||||
|
Utils::StringAspect apiKey{this};
|
||||||
|
|
||||||
|
ButtonAspect resetToDefaults{this};
|
||||||
|
|
||||||
|
private:
|
||||||
|
void setupConnections();
|
||||||
|
void resetSettingsToDefaults();
|
||||||
};
|
};
|
||||||
|
|
||||||
PresetPromptsSettings &presetPromptsSettings();
|
PresetPromptsSettings &presetPromptsSettings();
|
||||||
|
Reference in New Issue
Block a user