metal-kompanion/src/KI/Client/KIClient.h

45 lines
1.1 KiB
C++

#ifndef KIANICLIENT_H
#define KIANICLIENT_H
#include <QObject>
#include <QFuture>
#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<KIReply*> chat(const KIThread& thread, const KIChatOptions& opts);
Q_INVOKABLE QFuture<KIEmbeddingResult> 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