diff --git a/src/gui/MainWindow.cpp b/src/gui/MainWindow.cpp index 12531cb..f2dd6f8 100644 --- a/src/gui/MainWindow.cpp +++ b/src/gui/MainWindow.cpp @@ -37,10 +37,31 @@ public: m_chatInput = new QLineEdit(mainWidget); layout->addWidget(m_chatInput); + QHBoxLayout *row = new QHBoxLayout(); QPushButton *sendButton = new QPushButton("Send", mainWidget); - layout->addWidget(sendButton); + QPushButton *embedButton = new QPushButton("Embed", mainWidget); + row->addWidget(sendButton); + row->addWidget(embedButton); + layout->addLayout(row); connect(sendButton, &QPushButton::clicked, this, &MainWindow::sendMessage); + connect(embedButton, &QPushButton::clicked, this, [this]() { + const QString text = m_chatInput->text().trimmed(); + if (text.isEmpty()) return; + KI::KIEmbedOptions opts; opts.model = "bge-m3:latest"; // simple default + QFuture fut = m_kompanionClient->embed(QStringList{text}, opts); + auto *watch = new QFutureWatcher(this); + connect(watch, &QFutureWatcher::finished, this, [this, watch]() { + const auto res = watch->result(); + if (!res.vectors.isEmpty()) { + insertText(QString("[embed %1] dim=%2\n").arg(res.model).arg(res.vectors.first().size())); + } else { + insertText("[embed] no result\n"); + } + watch->deleteLater(); + }); + watch->setFuture(fut); + }); // Setup KI m_ollamaProvider = new KI::OllamaProvider(this);