mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2026-05-30 02:49:12 -04:00
feat: LM Studio response API and Ollama OpenAI API
This commit is contained in:
@@ -14,6 +14,7 @@ add_library(QodeAssistSettings STATIC
|
||||
ProjectSettings.hpp ProjectSettings.cpp
|
||||
ProjectSettingsPanel.hpp ProjectSettingsPanel.cpp
|
||||
ProviderSettings.hpp ProviderSettings.cpp
|
||||
ProviderNameMigration.hpp
|
||||
PluginUpdater.hpp PluginUpdater.cpp
|
||||
UpdateDialog.hpp UpdateDialog.cpp
|
||||
AgentRole.hpp AgentRole.cpp
|
||||
|
||||
@@ -14,6 +14,7 @@
|
||||
#include <coreplugin/icore.h>
|
||||
|
||||
#include "Logger.hpp"
|
||||
#include "ProviderNameMigration.hpp"
|
||||
|
||||
namespace QodeAssist::Settings {
|
||||
|
||||
@@ -101,7 +102,7 @@ QVector<AIConfiguration> ConfigurationManager::getPredefinedConfigurations(
|
||||
AIConfiguration gpt;
|
||||
gpt.id = "preset_gpt";
|
||||
gpt.name = "gpt-5.4";
|
||||
gpt.provider = "OpenAI Responses";
|
||||
gpt.provider = "OpenAI (Responses API)";
|
||||
gpt.model = "gpt-5.4";
|
||||
gpt.url = "https://api.openai.com/v1";
|
||||
gpt.customEndpoint = "";
|
||||
@@ -203,7 +204,7 @@ bool ConfigurationManager::loadConfigurations(ConfigurationType type)
|
||||
AIConfiguration config;
|
||||
config.id = obj["id"].toString();
|
||||
config.name = obj["name"].toString();
|
||||
config.provider = obj["provider"].toString();
|
||||
config.provider = migrateProviderName(obj["provider"].toString());
|
||||
config.model = obj["model"].toString();
|
||||
config.templateName = obj["template"].toString();
|
||||
config.url = obj["url"].toString();
|
||||
|
||||
@@ -27,6 +27,7 @@
|
||||
#include "../Version.hpp"
|
||||
#include "ConfigurationManager.hpp"
|
||||
#include "Logger.hpp"
|
||||
#include "ProviderNameMigration.hpp"
|
||||
#include "SettingsConstants.hpp"
|
||||
#include "SettingsDialog.hpp"
|
||||
#include "SettingsTr.hpp"
|
||||
@@ -95,7 +96,7 @@ GeneralSettings::GeneralSettings()
|
||||
qrConfigureApiKey.m_buttonText = Tr::tr("Configure API Key");
|
||||
qrConfigureApiKey.m_tooltip = Tr::tr("Open Provider Settings to configure API keys");
|
||||
|
||||
initStringAspect(ccProvider, Constants::CC_PROVIDER, TrConstants::PROVIDER, "Ollama");
|
||||
initStringAspect(ccProvider, Constants::CC_PROVIDER, TrConstants::PROVIDER, "Ollama (Native)");
|
||||
ccProvider.setReadOnly(true);
|
||||
ccSelectProvider.m_buttonText = TrConstants::SELECT;
|
||||
|
||||
@@ -143,7 +144,10 @@ GeneralSettings::GeneralSettings()
|
||||
preset1Language.addOption("python");
|
||||
|
||||
initStringAspect(
|
||||
ccPreset1Provider, Constants::CC_PRESET1_PROVIDER, TrConstants::PROVIDER, "Ollama");
|
||||
ccPreset1Provider,
|
||||
Constants::CC_PRESET1_PROVIDER,
|
||||
TrConstants::PROVIDER,
|
||||
"Ollama (Native)");
|
||||
ccPreset1Provider.setReadOnly(true);
|
||||
ccPreset1SelectProvider.m_buttonText = TrConstants::SELECT;
|
||||
|
||||
@@ -170,7 +174,7 @@ GeneralSettings::GeneralSettings()
|
||||
ccPreset1SelectTemplate.m_buttonText = TrConstants::SELECT;
|
||||
|
||||
// chat assistance
|
||||
initStringAspect(caProvider, Constants::CA_PROVIDER, TrConstants::PROVIDER, "Ollama");
|
||||
initStringAspect(caProvider, Constants::CA_PROVIDER, TrConstants::PROVIDER, "Ollama (Native)");
|
||||
caProvider.setReadOnly(true);
|
||||
caSelectProvider.m_buttonText = TrConstants::SELECT;
|
||||
|
||||
@@ -207,7 +211,7 @@ GeneralSettings::GeneralSettings()
|
||||
caOpenConfigFolder.m_isCompact = true;
|
||||
|
||||
// quick refactor settings
|
||||
initStringAspect(qrProvider, Constants::QR_PROVIDER, TrConstants::PROVIDER, "Ollama");
|
||||
initStringAspect(qrProvider, Constants::QR_PROVIDER, TrConstants::PROVIDER, "Ollama (Native)");
|
||||
qrProvider.setReadOnly(true);
|
||||
qrSelectProvider.m_buttonText = TrConstants::SELECT;
|
||||
|
||||
@@ -257,6 +261,17 @@ GeneralSettings::GeneralSettings()
|
||||
|
||||
readSettings();
|
||||
|
||||
auto migrateProviderAspect = [](Utils::StringAspect &aspect) {
|
||||
const QString migrated = migrateProviderName(aspect.value());
|
||||
if (migrated != aspect.value())
|
||||
aspect.setValue(migrated);
|
||||
};
|
||||
migrateProviderAspect(ccProvider);
|
||||
migrateProviderAspect(ccPreset1Provider);
|
||||
migrateProviderAspect(caProvider);
|
||||
migrateProviderAspect(qrProvider);
|
||||
writeSettings();
|
||||
|
||||
Logger::instance().setLoggingEnabled(enableLogging());
|
||||
|
||||
setupConnections();
|
||||
|
||||
29
settings/ProviderNameMigration.hpp
Normal file
29
settings/ProviderNameMigration.hpp
Normal file
@@ -0,0 +1,29 @@
|
||||
// Copyright (C) 2024-2026 Petr Mironychev
|
||||
// SPDX-License-Identifier: GPL-3.0-or-later
|
||||
|
||||
#pragma once
|
||||
|
||||
#include <QHash>
|
||||
#include <QString>
|
||||
|
||||
namespace QodeAssist::Settings {
|
||||
|
||||
// Maps legacy provider names (used before multi-API providers were introduced
|
||||
// with parenthetical suffixes) to their current canonical names. Returns the
|
||||
// input unchanged if it is not a known legacy name.
|
||||
inline QString migrateProviderName(const QString &oldName)
|
||||
{
|
||||
static const QHash<QString, QString> renames{
|
||||
{QStringLiteral("Ollama"), QStringLiteral("Ollama (Native)")},
|
||||
{QStringLiteral("Ollama Compatible"), QStringLiteral("Ollama (OpenAI-compatible)")},
|
||||
{QStringLiteral("OpenAI"), QStringLiteral("OpenAI (Chat Completions)")},
|
||||
{QStringLiteral("OpenAI Responses"), QStringLiteral("OpenAI (Responses API)")},
|
||||
{QStringLiteral("LM Studio"), QStringLiteral("LM Studio (Chat Completions)")},
|
||||
{QStringLiteral("LM Studio Responses"), QStringLiteral("LM Studio (Responses API)")},
|
||||
};
|
||||
|
||||
const auto it = renames.constFind(oldName);
|
||||
return it != renames.constEnd() ? it.value() : oldName;
|
||||
}
|
||||
|
||||
} // namespace QodeAssist::Settings
|
||||
Reference in New Issue
Block a user