41 lines
1.1 KiB
C++
41 lines
1.1 KiB
C++
#ifndef KIANIPROVIDER_H
|
|
#define KIANIPROVIDER_H
|
|
|
|
#include <QObject>
|
|
#include <QStringList>
|
|
#include <QFuture>
|
|
#include "../Message/KIThread.h"
|
|
#include "../Completion/KIReply.h"
|
|
#include "../Embedding/KIEmbedding.h"
|
|
#include "KICapabilities.h"
|
|
|
|
namespace KI {
|
|
|
|
class KIChatOptions; // Forward declaration
|
|
class KIEmbedOptions; // Forward declaration
|
|
|
|
class KIProvider : public QObject
|
|
{
|
|
Q_OBJECT
|
|
Q_PROPERTY(QString name READ name CONSTANT)
|
|
Q_PROPERTY(QStringList models READ models NOTIFY modelsChanged)
|
|
Q_PROPERTY(KICapabilities* caps READ caps CONSTANT)
|
|
|
|
public:
|
|
explicit KIProvider(QObject *parent = nullptr) : QObject(parent) {}
|
|
|
|
virtual QString name() const = 0;
|
|
virtual QStringList models() const = 0;
|
|
virtual KICapabilities* caps() const = 0;
|
|
|
|
virtual QFuture<KIReply*> chat(const KIThread& thread, const KIChatOptions& opts) = 0;
|
|
virtual QFuture<KIEmbeddingResult> embed(const QStringList& texts, const KIEmbedOptions& opts) = 0;
|
|
virtual void cancel(quint64 requestId) = 0;
|
|
|
|
signals:
|
|
void modelsChanged();
|
|
};
|
|
|
|
} // namespace KI
|
|
|
|
#endif // KIANIPROVIDER_H
|