feat: Add stream option to settings

This commit is contained in:
Petr Mironychev 2024-12-10 21:46:39 +01:00
parent c070fd5cfd
commit 16b77a5722
8 changed files with 73 additions and 49 deletions

View File

@ -106,7 +106,7 @@ void ClientInterface::sendMessage(const QString &message, bool includeCurrentFil
QJsonObject providerRequest; QJsonObject providerRequest;
providerRequest["model"] = Settings::generalSettings().caModel(); providerRequest["model"] = Settings::generalSettings().caModel();
providerRequest["stream"] = true; providerRequest["stream"] = chatAssistantSettings.stream();
providerRequest["messages"] = m_chatModel->prepareMessagesForRequest(systemPrompt); providerRequest["messages"] = m_chatModel->prepareMessagesForRequest(systemPrompt);
if (promptTemplate) if (promptTemplate)

View File

@ -174,7 +174,9 @@ void LLMClientInterface::handleCompletion(const QJsonObject &request)
QString("%1%2").arg(Settings::generalSettings().ccUrl(), provider->completionEndpoint())); QString("%1%2").arg(Settings::generalSettings().ccUrl(), provider->completionEndpoint()));
config.apiKey = Settings::codeCompletionSettings().apiKey(); config.apiKey = Settings::codeCompletionSettings().apiKey();
config.providerRequest = {{"model", Settings::generalSettings().ccModel()}, {"stream", true}}; config.providerRequest
= {{"model", Settings::generalSettings().ccModel()},
{"stream", Settings::codeCompletionSettings().stream()}};
config.multiLineCompletion = completeSettings.multiLineCompletion(); config.multiLineCompletion = completeSettings.multiLineCompletion();

View File

@ -54,6 +54,10 @@ ChatAssistantSettings::ChatAssistantSettings()
sharingCurrentFile.setLabelText(Tr::tr("Share Current File With Assistant by Default")); sharingCurrentFile.setLabelText(Tr::tr("Share Current File With Assistant by Default"));
sharingCurrentFile.setDefaultValue(true); sharingCurrentFile.setDefaultValue(true);
stream.setSettingsKey(Constants::CA_STREAM);
stream.setDefaultValue(true);
stream.setLabelText(Tr::tr("Enable stream option"));
// General Parameters Settings // General Parameters Settings
temperature.setSettingsKey(Constants::CA_TEMPERATURE); temperature.setSettingsKey(Constants::CA_TEMPERATURE);
temperature.setLabelText(Tr::tr("Temperature:")); temperature.setLabelText(Tr::tr("Temperature:"));
@ -158,28 +162,30 @@ ChatAssistantSettings::ChatAssistantSettings()
ollamaGrid.addRow({ollamaLivetime}); ollamaGrid.addRow({ollamaLivetime});
ollamaGrid.addRow({contextWindow}); ollamaGrid.addRow({contextWindow});
return Column{Row{Stretch{1}, resetToDefaults}, return Column{
Space{8}, Row{Stretch{1}, resetToDefaults},
Group{title(Tr::tr("Chat Settings")), Space{8},
Column{Row{chatTokensThreshold, Stretch{1}}, sharingCurrentFile}}, Group{
Space{8}, title(Tr::tr("Chat Settings")),
Group{ Column{Row{chatTokensThreshold, Stretch{1}}, sharingCurrentFile, stream}},
title(Tr::tr("General Parameters")), Space{8},
Row{genGrid, Stretch{1}}, Group{
}, title(Tr::tr("General Parameters")),
Space{8}, Row{genGrid, Stretch{1}},
Group{title(Tr::tr("Advanced Parameters")), },
Column{Row{advancedGrid, Stretch{1}}}}, Space{8},
Space{8}, Group{title(Tr::tr("Advanced Parameters")), Column{Row{advancedGrid, Stretch{1}}}},
Group{title(Tr::tr("Context Settings")), Space{8},
Column{ Group{
Row{useSystemPrompt, Stretch{1}}, title(Tr::tr("Context Settings")),
systemPrompt, Column{
}}, Row{useSystemPrompt, Stretch{1}},
Group{title(Tr::tr("Ollama Settings")), Column{Row{ollamaGrid, Stretch{1}}}}, systemPrompt,
Space{8}, }},
Group{title(Tr::tr("API Configuration")), Column{apiKey}}, Group{title(Tr::tr("Ollama Settings")), Column{Row{ollamaGrid, Stretch{1}}}},
Stretch{1}}; Space{8},
Group{title(Tr::tr("API Configuration")), Column{apiKey}},
Stretch{1}};
}); });
} }
@ -201,6 +207,7 @@ void ChatAssistantSettings::resetSettingsToDefaults()
QMessageBox::Yes | QMessageBox::No); QMessageBox::Yes | QMessageBox::No);
if (reply == QMessageBox::Yes) { if (reply == QMessageBox::Yes) {
resetAspect(stream);
resetAspect(chatTokensThreshold); resetAspect(chatTokensThreshold);
resetAspect(temperature); resetAspect(temperature);
resetAspect(maxTokens); resetAspect(maxTokens);

View File

@ -35,6 +35,7 @@ public:
// Chat settings // Chat settings
Utils::IntegerAspect chatTokensThreshold{this}; Utils::IntegerAspect chatTokensThreshold{this};
Utils::BoolAspect sharingCurrentFile{this}; Utils::BoolAspect sharingCurrentFile{this};
Utils::BoolAspect stream{this};
// General Parameters Settings // General Parameters Settings
Utils::DoubleAspect temperature{this}; Utils::DoubleAspect temperature{this};

View File

@ -51,6 +51,10 @@ CodeCompletionSettings::CodeCompletionSettings()
multiLineCompletion.setDefaultValue(false); multiLineCompletion.setDefaultValue(false);
multiLineCompletion.setLabelText(Tr::tr("Enable Multiline Completion(experimental)")); multiLineCompletion.setLabelText(Tr::tr("Enable Multiline Completion(experimental)"));
stream.setSettingsKey(Constants::CC_STREAM);
stream.setDefaultValue(true);
stream.setLabelText(Tr::tr("Enable stream option"));
startSuggestionTimer.setSettingsKey(Constants::СС_START_SUGGESTION_TIMER); startSuggestionTimer.setSettingsKey(Constants::СС_START_SUGGESTION_TIMER);
startSuggestionTimer.setLabelText(Tr::tr("with delay(ms)")); startSuggestionTimer.setLabelText(Tr::tr("with delay(ms)"));
startSuggestionTimer.setRange(10, 10000); startSuggestionTimer.setRange(10, 10000);
@ -213,31 +217,35 @@ CodeCompletionSettings::CodeCompletionSettings()
Row{useFilePathInContext, Stretch{1}}, Row{useFilePathInContext, Stretch{1}},
Row{useProjectChangesCache, maxChangesCacheSize, Stretch{1}}}; Row{useProjectChangesCache, maxChangesCacheSize, Stretch{1}}};
return Column{Row{Stretch{1}, resetToDefaults}, return Column{
Space{8}, Row{Stretch{1}, resetToDefaults},
Group{title(Tr::tr("Auto Completion Settings")), Space{8},
Column{autoCompletion, Group{
Space{8}, title(TrConstants::AUTO_COMPLETION_SETTINGS),
multiLineCompletion, Column{
Row{autoCompletionCharThreshold, autoCompletion,
autoCompletionTypingInterval, Space{8},
startSuggestionTimer, multiLineCompletion,
Stretch{1}}}}, stream,
Space{8}, Row{autoCompletionCharThreshold,
Group{title(Tr::tr("General Parameters")), autoCompletionTypingInterval,
Column{ startSuggestionTimer,
Row{genGrid, Stretch{1}}, Stretch{1}}}},
}}, Space{8},
Space{8}, Group{
Group{title(Tr::tr("Advanced Parameters")), title(Tr::tr("General Parameters")),
Column{Row{advancedGrid, Stretch{1}}}}, Column{
Space{8}, Row{genGrid, Stretch{1}},
Group{title(Tr::tr("Context Settings")), contextItem}, }},
Space{8}, Space{8},
Group{title(Tr::tr("Ollama Settings")), Column{Row{ollamaGrid, Stretch{1}}}}, Group{title(Tr::tr("Advanced Parameters")), Column{Row{advancedGrid, Stretch{1}}}},
Space{8}, Space{8},
Group{title(Tr::tr("API Configuration")), Column{apiKey}}, Group{title(Tr::tr("Context Settings")), contextItem},
Stretch{1}}; Space{8},
Group{title(Tr::tr("Ollama Settings")), Column{Row{ollamaGrid, Stretch{1}}}},
Space{8},
Group{title(Tr::tr("API Configuration")), Column{apiKey}},
Stretch{1}};
}); });
} }
@ -275,6 +283,7 @@ void CodeCompletionSettings::resetSettingsToDefaults()
if (reply == QMessageBox::Yes) { if (reply == QMessageBox::Yes) {
resetAspect(autoCompletion); resetAspect(autoCompletion);
resetAspect(multiLineCompletion); resetAspect(multiLineCompletion);
resetAspect(stream);
resetAspect(temperature); resetAspect(temperature);
resetAspect(maxTokens); resetAspect(maxTokens);
resetAspect(useTopP); resetAspect(useTopP);

View File

@ -35,6 +35,7 @@ public:
// Auto Completion Settings // Auto Completion Settings
Utils::BoolAspect autoCompletion{this}; Utils::BoolAspect autoCompletion{this};
Utils::BoolAspect multiLineCompletion{this}; Utils::BoolAspect multiLineCompletion{this};
Utils::BoolAspect stream{this};
Utils::IntegerAspect startSuggestionTimer{this}; Utils::IntegerAspect startSuggestionTimer{this};
Utils::IntegerAspect autoCompletionCharThreshold{this}; Utils::IntegerAspect autoCompletionCharThreshold{this};

View File

@ -49,9 +49,11 @@ const char СС_AUTO_COMPLETION_CHAR_THRESHOLD[] = "QodeAssist.autoCompletionCha
const char СС_AUTO_COMPLETION_TYPING_INTERVAL[] = "QodeAssist.autoCompletionTypingInterval"; const char СС_AUTO_COMPLETION_TYPING_INTERVAL[] = "QodeAssist.autoCompletionTypingInterval";
const char MAX_FILE_THRESHOLD[] = "QodeAssist.maxFileThreshold"; const char MAX_FILE_THRESHOLD[] = "QodeAssist.maxFileThreshold";
const char CC_MULTILINE_COMPLETION[] = "QodeAssist.ccMultilineCompletion"; const char CC_MULTILINE_COMPLETION[] = "QodeAssist.ccMultilineCompletion";
const char CC_STREAM[] = "QodeAssist.ccStream";
const char CUSTOM_JSON_TEMPLATE[] = "QodeAssist.customJsonTemplate"; const char CUSTOM_JSON_TEMPLATE[] = "QodeAssist.customJsonTemplate";
const char CA_TOKENS_THRESHOLD[] = "QodeAssist.caTokensThreshold"; const char CA_TOKENS_THRESHOLD[] = "QodeAssist.caTokensThreshold";
const char CA_SHARING_CURRENT_FILE[] = "QodeAssist.caSharingCurrentFile"; const char CA_SHARING_CURRENT_FILE[] = "QodeAssist.caSharingCurrentFile";
const char CA_STREAM[] = "QodeAssist.caStream";
const char QODE_ASSIST_GENERAL_OPTIONS_ID[] = "QodeAssist.GeneralOptions"; const char QODE_ASSIST_GENERAL_OPTIONS_ID[] = "QodeAssist.GeneralOptions";
const char QODE_ASSIST_GENERAL_SETTINGS_PAGE_ID[] = "QodeAssist.1GeneralSettingsPageId"; const char QODE_ASSIST_GENERAL_SETTINGS_PAGE_ID[] = "QodeAssist.1GeneralSettingsPageId";

View File

@ -79,6 +79,8 @@ inline const char PREDEFINED_URL[]
inline const char CUSTOM_URL[] = QT_TRANSLATE_NOOP("QtC::QodeAssist", "Enter custom URL"); inline const char CUSTOM_URL[] = QT_TRANSLATE_NOOP("QtC::QodeAssist", "Enter custom URL");
inline const char ENTER_MODEL_MANUALLY_BUTTON[] inline const char ENTER_MODEL_MANUALLY_BUTTON[]
= QT_TRANSLATE_NOOP("QtC::QodeAssist", "Enter Model Name Manually"); = QT_TRANSLATE_NOOP("QtC::QodeAssist", "Enter Model Name Manually");
inline const char AUTO_COMPLETION_SETTINGS[]
= QT_TRANSLATE_NOOP("QtC::QodeAssist", "Auto Completion Settings");
} // namespace TrConstants } // namespace TrConstants