diff --git a/providers/LlamaCppProvider.cpp b/providers/LlamaCppProvider.cpp index 322b6f1..1a66239 100644 --- a/providers/LlamaCppProvider.cpp +++ b/providers/LlamaCppProvider.cpp @@ -68,12 +68,26 @@ void LlamaCppProvider::prepareRequest( request["presence_penalty"] = settings.presencePenalty(); }; + auto applyThinkingMode = [&request]() { + QJsonObject chatTemplateKwargs = request["chat_template_kwargs"].toObject(); + chatTemplateKwargs["enable_thinking"] = true; + request["chat_template_kwargs"] = chatTemplateKwargs; + }; + if (type == PluginLLMCore::RequestType::CodeCompletion) { applyModelParams(Settings::codeCompletionSettings()); } else if (type == PluginLLMCore::RequestType::QuickRefactoring) { applyModelParams(Settings::quickRefactorSettings()); + if (isThinkingEnabled) { + applyThinkingMode(); + LOG_MESSAGE(QString("LlamaCppProvider: Thinking mode enabled for QuickRefactoring")); + } } else { applyModelParams(Settings::chatAssistantSettings()); + if (isThinkingEnabled) { + applyThinkingMode(); + LOG_MESSAGE(QString("LlamaCppProvider: Thinking mode enabled for Chat")); + } } if (isToolsEnabled) { @@ -85,9 +99,11 @@ void LlamaCppProvider::prepareRequest( } } -QFuture> LlamaCppProvider::getInstalledModels(const QString &) +QFuture> LlamaCppProvider::getInstalledModels(const QString &baseUrl) { - return QtFuture::makeReadyFuture(QList{}); + m_client->setUrl(baseUrl); + m_client->setApiKey(Settings::providerSettings().llamaCppApiKey()); + return m_client->listModels(); } PluginLLMCore::ProviderID LlamaCppProvider::providerID() const @@ -97,7 +113,9 @@ PluginLLMCore::ProviderID LlamaCppProvider::providerID() const PluginLLMCore::ProviderCapabilities LlamaCppProvider::capabilities() const { - return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Image; + return PluginLLMCore::ProviderCapability::Tools | PluginLLMCore::ProviderCapability::Thinking + | PluginLLMCore::ProviderCapability::Image + | PluginLLMCore::ProviderCapability::ModelListing; } ::LLMQore::BaseClient *LlamaCppProvider::client() const diff --git a/settings/ProviderSettings.cpp b/settings/ProviderSettings.cpp index cc634e0..7229f5c 100644 --- a/settings/ProviderSettings.cpp +++ b/settings/ProviderSettings.cpp @@ -90,7 +90,7 @@ ProviderSettings::ProviderSettings() // Ollama with BasicAuth Settings ollamaBasicAuthApiKey.setSettingsKey(Constants::OLLAMA_BASIC_AUTH_API_KEY); - ollamaBasicAuthApiKey.setLabelText(Tr::tr("Ollama BasicAuth API Key:")); + ollamaBasicAuthApiKey.setLabelText(Tr::tr("Ollama(Bearer) API Key:")); ollamaBasicAuthApiKey.setDisplayStyle(Utils::StringAspect::LineEditDisplay); ollamaBasicAuthApiKey.setPlaceHolderText(Tr::tr("Enter your API key here")); ollamaBasicAuthApiKey.setHistoryCompleter(Constants::OLLAMA_BASIC_AUTH_API_KEY_HISTORY);