From 371971e6acac0b2afe7b4e3361b63fe4b206727d Mon Sep 17 00:00:00 2001 From: Jared Van Bortel Date: Wed, 12 Mar 2025 17:13:47 -0400 Subject: [PATCH] WIP: fix build --- gpt4all-chat/src/llmodel_ollama.cpp | 10 ++++------ gpt4all-chat/src/llmodel_openai.cpp | 16 +++++++--------- gpt4all-chat/src/llmodel_openai.h | 7 +++++-- gpt4all-chat/src/llmodel_provider.cpp | 10 ++++++---- gpt4all-chat/src/store_base.h | 2 +- gpt4all-chat/src/store_provider.cpp | 12 ++++++------ 6 files changed, 29 insertions(+), 28 deletions(-) diff --git a/gpt4all-chat/src/llmodel_ollama.cpp b/gpt4all-chat/src/llmodel_ollama.cpp index a05a1556..39c9358d 100644 --- a/gpt4all-chat/src/llmodel_ollama.cpp +++ b/gpt4all-chat/src/llmodel_ollama.cpp @@ -34,18 +34,18 @@ auto OllamaProvider::makeGenerationParams(const QMap { return new OllamaGenerationParams(values); } /// load -OllamaProviderCustom::OllamaProviderCustom(std::shared_ptr store, QUuid id, QString name, QUrl baseUrl) +OllamaProviderCustom::OllamaProviderCustom(ProviderStore *store, QUuid id, QString name, QUrl baseUrl) : ModelProvider (std::move(id), std::move(name), std::move(baseUrl)) - , ModelProviderCustom(std::move(store)) + , ModelProviderCustom(store) { if (auto res = m_store->acquire(m_id); !res) res.error().raise(); } /// create -OllamaProviderCustom::OllamaProviderCustom(std::shared_ptr store, QString name, QUrl baseUrl) +OllamaProviderCustom::OllamaProviderCustom(ProviderStore *store, QString name, QUrl baseUrl) : ModelProvider (std::move(name), std::move(baseUrl)) - , ModelProviderCustom(std::move(store)) + , ModelProviderCustom(store) { auto data = m_store->create(m_name, m_baseUrl); if (!data) @@ -57,8 +57,6 @@ auto OllamaProviderCustom::asData() -> ModelProviderData { return { .id = m_id, - .builtin = false, - .type = ProviderType::ollama, .custom_details = CustomProviderDetails { m_name, m_baseUrl }, .provider_details = {}, }; diff --git a/gpt4all-chat/src/llmodel_openai.cpp b/gpt4all-chat/src/llmodel_openai.cpp index d47dfb43..b4f9f6c9 100644 --- a/gpt4all-chat/src/llmodel_openai.cpp +++ b/gpt4all-chat/src/llmodel_openai.cpp @@ -104,7 +104,7 @@ OpenaiProviderBuiltin::OpenaiProviderBuiltin(ProviderStore *store, QUuid id, QSt if (!res) res.error().raise(); if (auto maybeData = *res) { - auto &details = (*maybeData)->openai_details.value(); + auto &details = std::get((*maybeData)->provider_details); m_apiKey = details.api_key; } } @@ -112,10 +112,9 @@ OpenaiProviderBuiltin::OpenaiProviderBuiltin(ProviderStore *store, QUuid id, QSt auto OpenaiProviderBuiltin::asData() -> ModelProviderData { return { - .id = m_id, - .type = ProviderType::openai, - .custom_details = {}, - .openai_details = OpenaiProviderDetails { m_apiKey }, + .id = m_id, + .custom_details = {}, + .provider_details = OpenaiProviderDetails { m_apiKey }, }; } @@ -141,10 +140,9 @@ OpenaiProviderCustom::OpenaiProviderCustom(ProviderStore *store, QString name, Q auto OpenaiProviderCustom::asData() -> ModelProviderData { return { - .id = m_id, - .type = ProviderType::openai, - .custom_details = CustomProviderDetails { m_name, m_baseUrl }, - .openai_details = OpenaiProviderDetails { m_apiKey }, + .id = m_id, + .custom_details = CustomProviderDetails { m_name, m_baseUrl }, + .provider_details = OpenaiProviderDetails { m_apiKey }, }; } diff --git a/gpt4all-chat/src/llmodel_openai.h b/gpt4all-chat/src/llmodel_openai.h index a5a9fa6e..79746853 100644 --- a/gpt4all-chat/src/llmodel_openai.h +++ b/gpt4all-chat/src/llmodel_openai.h @@ -62,12 +62,15 @@ public: auto supportedGenerationParams() const -> QSet override; auto makeGenerationParams(const QMap &values) const -> OpenaiGenerationParams * override; +Q_SIGNALS: + void apiKeyChanged(const QString &value); + protected: QString m_apiKey; }; -class OpenaiProviderBuiltin : public OpenaiProvider, private ModelProviderMutable { - Q_GADGET +class OpenaiProviderBuiltin : public OpenaiProvider, public ModelProviderMutable { + Q_OBJECT Q_PROPERTY(QString name READ name CONSTANT) Q_PROPERTY(QUrl baseUrl READ baseUrl CONSTANT) diff --git a/gpt4all-chat/src/llmodel_provider.cpp b/gpt4all-chat/src/llmodel_provider.cpp index fbf847ef..d1d816cd 100644 --- a/gpt4all-chat/src/llmodel_provider.cpp +++ b/gpt4all-chat/src/llmodel_provider.cpp @@ -63,10 +63,10 @@ ProviderRegistry::ProviderRegistry(PathSet paths) void ProviderRegistry::load() { for (auto &p : s_builtinProviders) { // (not all builtin providers are stored) - auto provider = std::make_shared(m_builtinStore, p.id, p.name, p.base_url); + auto provider = std::make_shared(&m_builtinStore, p.id, p.name, p.base_url); auto [_, unique] = m_providers.emplace(p.id, std::move(provider)); if (!unique) - throw std::logic_error(fmt::format("duplicate builtin provider id: {}", p.id)); + throw std::logic_error(fmt::format("duplicate builtin provider id: {}", p.id.toString())); } for (auto &p : m_customStore.list()) { // disk is source of truth for custom providers if (!p.custom_details) { @@ -75,15 +75,17 @@ void ProviderRegistry::load() } auto &cust = *p.custom_details; std::shared_ptr provider; - switch (p.type) { + switch (p.type()) { using enum ProviderType; case ollama: provider = std::make_shared( &m_customStore, p.id, cust.name, cust.base_url ); + break; case openai: provider = std::make_shared( - &m_customStore, p.id, cust.name, cust.base_url, p.openai_details.value().api_key + &m_customStore, p.id, cust.name, cust.base_url, + std::get(p.provider_details).api_key ); } auto [_, unique] = m_providers.emplace(p.id, std::move(provider)); diff --git a/gpt4all-chat/src/store_base.h b/gpt4all-chat/src/store_base.h index 720fe797..d9eb45e5 100644 --- a/gpt4all-chat/src/store_base.h +++ b/gpt4all-chat/src/store_base.h @@ -104,7 +104,7 @@ public: [[nodiscard]] auto operator[](const QUuid &id) const -> const T & { return m_entries.at(id); } [[nodiscard]] auto find(const QUuid &id) const -> std::optional - { auto it = m_entries.find(id); return it == m_entries.end() ? std::nullopt : std::optional(&*it); } + { auto it = m_entries.find(id); return it == m_entries.end() ? std::nullopt : std::optional(&it->second); } protected: auto createImpl(T data, const QString &name) -> DataStoreResult; diff --git a/gpt4all-chat/src/store_provider.cpp b/gpt4all-chat/src/store_provider.cpp index 30a26aed..8597f96d 100644 --- a/gpt4all-chat/src/store_provider.cpp +++ b/gpt4all-chat/src/store_provider.cpp @@ -15,17 +15,17 @@ namespace gpt4all::ui { void tag_invoke(const boost::json::value_from_tag &, boost::json::value &jv, ModelProviderData data) { auto &obj = jv.emplace_object(); - obj = { { "id", data.id }, - { "builtin", !data.custom_details }, - { "type", data.type() } }; + obj = { { "id", json::value_from(data.id) }, + { "builtin", !data.custom_details }, + { "type", json::value_from(data.type()) } }; if (auto custom = data.custom_details) { - obj.emplace("name", custom->name); - obj.emplace("base_url", custom->base_url); + obj.emplace("name", json::value_from(custom->name)); + obj.emplace("base_url", json::value_from(custom->base_url)); } switch (data.type()) { using enum ProviderType; case openai: - obj.emplace("api_key", std::get(data.provider_details).api_key); + obj.emplace("api_key", json::value_from(std::get(data.provider_details).api_key)); case ollama: ; }