metal-kompanion/src/KI/Provider/KIProvider.h

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