#ifndef KIANIPROVIDER_H #define KIANIPROVIDER_H #include #include #include #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 chat(const KIThread& thread, const KIChatOptions& opts) = 0; virtual QFuture embed(const QStringList& texts, const KIEmbedOptions& opts) = 0; virtual void cancel(quint64 requestId) = 0; signals: void modelsChanged(); }; } // namespace KI #endif // KIANIPROVIDER_H