mirror of
https://github.com/Palm1r/QodeAssist.git
synced 2025-07-18 21:14:34 -04:00
refactor: Decouple prompt template manager from their users (#115)
This makes it possible to test the user classes
This commit is contained in:
committed by
GitHub
parent
b6f36d61ae
commit
98e1047bf1
@ -3,6 +3,9 @@ add_library(LLMCore STATIC
|
||||
Provider.hpp
|
||||
ProvidersManager.hpp ProvidersManager.cpp
|
||||
ContextData.hpp
|
||||
IPromptProvider.hpp
|
||||
PromptProviderChat.hpp
|
||||
PromptProviderFim.hpp
|
||||
PromptTemplate.hpp
|
||||
PromptTemplateManager.hpp PromptTemplateManager.cpp
|
||||
RequestConfig.hpp
|
||||
|
39
llmcore/IPromptProvider.hpp
Normal file
39
llmcore/IPromptProvider.hpp
Normal file
@ -0,0 +1,39 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Povilas Kanapickas <povilas@radix.lt>
|
||||
*
|
||||
* This file is part of QodeAssist.
|
||||
*
|
||||
* QodeAssist is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* QodeAssist is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with QodeAssist. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "PromptTemplate.hpp"
|
||||
#include <QString>
|
||||
|
||||
namespace QodeAssist::LLMCore {
|
||||
|
||||
class IPromptProvider
|
||||
{
|
||||
public:
|
||||
virtual ~IPromptProvider() = default;
|
||||
|
||||
virtual PromptTemplate *getTemplateByName(const QString &templateName) const = 0;
|
||||
|
||||
virtual QStringList templatesNames() const = 0;
|
||||
|
||||
virtual QStringList getTemplatesForProvider(ProviderID id) const = 0;
|
||||
};
|
||||
|
||||
} // namespace QodeAssist::LLMCore
|
53
llmcore/PromptProviderChat.hpp
Normal file
53
llmcore/PromptProviderChat.hpp
Normal file
@ -0,0 +1,53 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Povilas Kanapickas <povilas@radix.lt>
|
||||
*
|
||||
* This file is part of QodeAssist.
|
||||
*
|
||||
* QodeAssist is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* QodeAssist is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with QodeAssist. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "IPromptProvider.hpp"
|
||||
#include "PromptTemplate.hpp"
|
||||
#include "PromptTemplateManager.hpp"
|
||||
|
||||
namespace QodeAssist::LLMCore {
|
||||
|
||||
class PromptProviderChat : public IPromptProvider
|
||||
{
|
||||
public:
|
||||
explicit PromptProviderChat(PromptTemplateManager &templateManager)
|
||||
: m_templateManager(templateManager)
|
||||
{}
|
||||
|
||||
~PromptProviderChat() = default;
|
||||
|
||||
PromptTemplate *getTemplateByName(const QString &templateName) const override
|
||||
{
|
||||
return m_templateManager.getChatTemplateByName(templateName);
|
||||
}
|
||||
|
||||
QStringList templatesNames() const override { return m_templateManager.chatTemplatesNames(); }
|
||||
|
||||
QStringList getTemplatesForProvider(ProviderID id) const override
|
||||
{
|
||||
return m_templateManager.getChatTemplatesForProvider(id);
|
||||
}
|
||||
|
||||
private:
|
||||
PromptTemplateManager &m_templateManager;
|
||||
};
|
||||
|
||||
} // namespace QodeAssist::LLMCore
|
52
llmcore/PromptProviderFim.hpp
Normal file
52
llmcore/PromptProviderFim.hpp
Normal file
@ -0,0 +1,52 @@
|
||||
/*
|
||||
* Copyright (C) 2025 Povilas Kanapickas <povilas@radix.lt>
|
||||
*
|
||||
* This file is part of QodeAssist.
|
||||
*
|
||||
* QodeAssist is free software: you can redistribute it and/or modify
|
||||
* it under the terms of the GNU General Public License as published by
|
||||
* the Free Software Foundation, either version 3 of the License, or
|
||||
* (at your option) any later version.
|
||||
*
|
||||
* QodeAssist is distributed in the hope that it will be useful,
|
||||
* but WITHOUT ANY WARRANTY; without even the implied warranty of
|
||||
* MERCHANTABILITY or FITNESS FOR A PARTICULAR PURPOSE. See the
|
||||
* GNU General Public License for more details.
|
||||
*
|
||||
* You should have received a copy of the GNU General Public License
|
||||
* along with QodeAssist. If not, see <https://www.gnu.org/licenses/>.
|
||||
*/
|
||||
|
||||
#pragma once
|
||||
|
||||
#include "IPromptProvider.hpp"
|
||||
#include "PromptTemplateManager.hpp"
|
||||
|
||||
namespace QodeAssist::LLMCore {
|
||||
|
||||
class PromptProviderFim : public IPromptProvider
|
||||
{
|
||||
public:
|
||||
explicit PromptProviderFim(PromptTemplateManager &templateManager)
|
||||
: m_templateManager(templateManager)
|
||||
{}
|
||||
|
||||
~PromptProviderFim() = default;
|
||||
|
||||
PromptTemplate *getTemplateByName(const QString &templateName) const override
|
||||
{
|
||||
return m_templateManager.getFimTemplateByName(templateName);
|
||||
}
|
||||
|
||||
QStringList templatesNames() const override { return m_templateManager.fimTemplatesNames(); }
|
||||
|
||||
QStringList getTemplatesForProvider(ProviderID id) const override
|
||||
{
|
||||
return m_templateManager.getFimTemplatesForProvider(id);
|
||||
}
|
||||
|
||||
private:
|
||||
PromptTemplateManager &m_templateManager;
|
||||
};
|
||||
|
||||
} // namespace QodeAssist::LLMCore
|
Reference in New Issue
Block a user