#ifndef KIANICLIENT_H #define KIANICLIENT_H #include #include #include "../Provider/KIProvider.h" #include "../Message/KIThread.h" #include "../Completion/KIChatOptions.h" #include "../Embedding/KIEmbedding.h" namespace KI { class KIClient : public QObject { Q_OBJECT Q_PROPERTY(KIProvider* provider READ provider WRITE setProvider NOTIFY providerChanged) Q_PROPERTY(QString defaultModel READ defaultModel WRITE setDefaultModel NOTIFY defaultModelChanged) public: explicit KIClient(QObject *parent = nullptr); KIProvider* provider() const; void setProvider(KIProvider* provider); QString defaultModel() const; void setDefaultModel(const QString& model); Q_INVOKABLE QFuture chat(const KIThread& thread, const KIChatOptions& opts); Q_INVOKABLE QFuture embed(const QStringList& texts, const KIEmbedOptions& opts); Q_INVOKABLE void cancel(quint64 requestId); signals: void providerChanged(); void defaultModelChanged(); private: KIProvider* m_provider = nullptr; QString m_defaultModel; }; } // namespace KI #endif // KIANICLIENT_H