Skip to content

Commit

Permalink
Move preset params to separate settings page
Browse files Browse the repository at this point in the history
  • Loading branch information
Palm1r committed Sep 7, 2024
1 parent 356f28a commit 4d06541
Show file tree
Hide file tree
Showing 7 changed files with 208 additions and 145 deletions.
113 changes: 20 additions & 93 deletions QodeAssistSettings.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -45,68 +45,13 @@ QodeAssistSettings::QodeAssistSettings()
{
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.setLabelText(Tr::tr("Start Suggestion Timer:"));
startSuggestionTimer.setRange(10, 10000);
startSuggestionTimer.setDefaultValue(500);

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.setLabelText("Custom JSON Template:");
customJsonTemplate.setDisplayStyle(Utils::StringAspect::TextEditDisplay);
Expand Down Expand Up @@ -135,11 +80,6 @@ QodeAssistSettings::QodeAssistSettings()

readSettings();

topK.setEnabled(useTopK());
topP.setEnabled(useTopP());
presencePenalty.setEnabled(usePresencePenalty());
frequencyPenalty.setEnabled(useFrequencyPenalty());

customJsonTemplate.setVisible(PromptTemplateManager::instance().getCurrentTemplate()->name()
== "Custom Template");

Expand All @@ -155,18 +95,18 @@ QodeAssistSettings::QodeAssistSettings()
// maxFileThreshold,
// readStringsBeforeCursor,
// readStringsAfterCursor,
ollamaLivetime,
apiKey,
// ollamaLivetime,
// apiKey,
// useFilePathInContext,
// useSpecificInstructions,
// specificInstractions,
temperature,
maxTokens,
startSuggestionTimer,
Row{useTopP, topP, Stretch{1}},
Row{useTopK, topK, Stretch{1}},
Row{usePresencePenalty, presencePenalty, Stretch{1}},
Row{useFrequencyPenalty, frequencyPenalty, Stretch{1}}}}},
// temperature,
// maxTokens,
// startSuggestionTimer,
// Row{useTopP, topP, Stretch{1}},
// Row{useTopK, topK, Stretch{1}},
/* Row{usePresencePenalty, presencePenalty, Stretch{1}},
Row{useFrequencyPenalty, frequencyPenalty, Stretch{1}}*/}}},
st};
});

Expand All @@ -175,19 +115,6 @@ QodeAssistSettings::QodeAssistSettings()

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,
&ButtonAspect::clicked,
this,
Expand Down Expand Up @@ -230,23 +157,23 @@ void QodeAssistSettings::resetSettingsToDefaults()
// resetAspect(endPoint);
// resetAspect(modelName);
// resetAspect(fimPrompts);
resetAspect(temperature);
resetAspect(maxTokens);
// resetAspect(temperature);
// resetAspect(maxTokens);
// resetAspect(readFullFile);
// resetAspect(maxFileThreshold);
// resetAspect(readStringsBeforeCursor);
// resetAspect(readStringsAfterCursor);
resetAspect(useTopP);
resetAspect(topP);
resetAspect(useTopK);
resetAspect(topK);
resetAspect(usePresencePenalty);
resetAspect(presencePenalty);
resetAspect(useFrequencyPenalty);
resetAspect(frequencyPenalty);
// resetAspect(useTopP);
// resetAspect(topP);
// resetAspect(useTopK);
// resetAspect(topK);
// resetAspect(usePresencePenalty);
// resetAspect(presencePenalty);
// resetAspect(useFrequencyPenalty);
// resetAspect(frequencyPenalty);
resetAspect(startSuggestionTimer);
// resetAspect(enableLogging);
resetAspect(ollamaLivetime);
// resetAspect(ollamaLivetime);
// resetAspect(specificInstractions);
// resetAspect(multiLineCompletion);
// resetAspect(useFilePathInContext);
Expand Down
18 changes: 0 additions & 18 deletions QodeAssistSettings.hpp
Original file line number Diff line number Diff line change
Expand Up @@ -57,29 +57,11 @@ class QodeAssistSettings : public Utils::AspectContainer
public:
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::StringAspect ollamaLivetime{this};

Utils::StringAspect customJsonTemplate{this};
ButtonAspect saveCustomTemplateButton{this};
ButtonAspect loadCustomTemplateButton{this};
Utils::StringAspect apiKey{this};

ButtonAspect resetToDefaults{this};

Expand Down
22 changes: 12 additions & 10 deletions providers/LMStudioProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "PromptTemplateManager.hpp"
#include "QodeAssistSettings.hpp"
#include "QodeAssistUtils.hpp"
#include "settings/PresetPromptsSettings.hpp"

namespace QodeAssist::Providers {

Expand All @@ -50,6 +51,7 @@ QString LMStudioProvider::completionEndpoint() const

void LMStudioProvider::prepareRequest(QJsonObject &request)
{
auto &settings = Settings::presetPromptsSettings();
const auto &currentTemplate = PromptTemplateManager::instance().getCurrentTemplate();
if (currentTemplate->name() == "Custom Template")
return;
Expand All @@ -59,17 +61,17 @@ void LMStudioProvider::prepareRequest(QJsonObject &request)
request["messages"] = std::move(messages);
}

request["max_tokens"] = settings().maxTokens();
request["temperature"] = settings().temperature();
request["max_tokens"] = settings.maxTokens();
request["temperature"] = settings.temperature();
request["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
if (settings().useTopP())
request["top_p"] = settings().topP();
if (settings().useTopK())
request["top_k"] = settings().topK();
if (settings().useFrequencyPenalty())
request["frequency_penalty"] = settings().frequencyPenalty();
if (settings().usePresencePenalty())
request["presence_penalty"] = settings().presencePenalty();
if (settings.useTopP())
request["top_p"] = settings.topP();
if (settings.useTopK())
request["top_k"] = settings.topK();
if (settings.useFrequencyPenalty())
request["frequency_penalty"] = settings.frequencyPenalty();
if (settings.usePresencePenalty())
request["presence_penalty"] = settings.presencePenalty();
}

bool LMStudioProvider::handleResponse(QNetworkReply *reply, QString &accumulatedResponse)
Expand Down
24 changes: 13 additions & 11 deletions providers/OllamaProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -28,6 +28,7 @@
#include "PromptTemplateManager.hpp"
#include "QodeAssistSettings.hpp"
#include "QodeAssistUtils.hpp"
#include "settings/PresetPromptsSettings.hpp"

namespace QodeAssist::Providers {

Expand All @@ -50,23 +51,24 @@ QString OllamaProvider::completionEndpoint() const

void OllamaProvider::prepareRequest(QJsonObject &request)
{
auto &settings = Settings::presetPromptsSettings();
auto currentTemplate = PromptTemplateManager::instance().getCurrentTemplate();
if (currentTemplate->name() == "Custom Template")
return;

QJsonObject options;
options["num_predict"] = settings().maxTokens();
options["keep_alive"] = settings().ollamaLivetime();
options["temperature"] = settings().temperature();
options["num_predict"] = settings.maxTokens();
options["keep_alive"] = settings.ollamaLivetime();
options["temperature"] = settings.temperature();
options["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
if (settings().useTopP())
options["top_p"] = settings().topP();
if (settings().useTopK())
options["top_k"] = settings().topK();
if (settings().useFrequencyPenalty())
options["frequency_penalty"] = settings().frequencyPenalty();
if (settings().usePresencePenalty())
options["presence_penalty"] = settings().presencePenalty();
if (settings.useTopP())
options["top_p"] = settings.topP();
if (settings.useTopK())
options["top_k"] = settings.topK();
if (settings.useFrequencyPenalty())
options["frequency_penalty"] = settings.frequencyPenalty();
if (settings.usePresencePenalty())
options["presence_penalty"] = settings.presencePenalty();
request["options"] = options;
}

Expand Down
26 changes: 14 additions & 12 deletions providers/OpenAICompatProvider.cpp
Original file line number Diff line number Diff line change
Expand Up @@ -26,6 +26,7 @@

#include "PromptTemplateManager.hpp"
#include "QodeAssistSettings.hpp"
#include "settings/PresetPromptsSettings.hpp"

namespace QodeAssist::Providers {

Expand All @@ -48,6 +49,7 @@ QString OpenAICompatProvider::completionEndpoint() const

void OpenAICompatProvider::prepareRequest(QJsonObject &request)
{
auto &settings = Settings::presetPromptsSettings();
const auto &currentTemplate = PromptTemplateManager::instance().getCurrentTemplate();
if (currentTemplate->name() == "Custom Template")
return;
Expand All @@ -58,19 +60,19 @@ void OpenAICompatProvider::prepareRequest(QJsonObject &request)
request["messages"] = std::move(messages);
}

request["max_tokens"] = settings().maxTokens();
request["temperature"] = settings().temperature();
request["max_tokens"] = settings.maxTokens();
request["temperature"] = settings.temperature();
request["stop"] = QJsonArray::fromStringList(currentTemplate->stopWords());
if (settings().useTopP())
request["top_p"] = settings().topP();
if (settings().useTopK())
request["top_k"] = settings().topK();
if (settings().useFrequencyPenalty())
request["frequency_penalty"] = settings().frequencyPenalty();
if (settings().usePresencePenalty())
request["presence_penalty"] = settings().presencePenalty();

const QString &apiKey = settings().apiKey.value();
if (settings.useTopP())
request["top_p"] = settings.topP();
if (settings.useTopK())
request["top_k"] = settings.topK();
if (settings.useFrequencyPenalty())
request["frequency_penalty"] = settings.frequencyPenalty();
if (settings.usePresencePenalty())
request["presence_penalty"] = settings.presencePenalty();

const QString &apiKey = settings.apiKey.value();
if (!apiKey.isEmpty()) {
request["api_key"] = apiKey;
}
Expand Down
Loading

0 comments on commit 4d06541

Please sign in to comment.