#include "base.h" #include "oai.h" namespace humanus::mem0 { std::unordered_map> EmbeddingModel::instances_; std::shared_ptr EmbeddingModel::get_instance(const std::string& config_name, const std::shared_ptr& config) { if (instances_.find(config_name) == instances_.end()) { auto config_ = config; if (!config_) { if (Config::get_instance().embedding_model().find(config_name) == Config::get_instance().embedding_model().end()) { throw std::invalid_argument("Embedding model config not found: " + config_name); } config_ = std::make_shared(Config::get_instance().embedding_model().at(config_name)); } if (config_->provider == "oai") { instances_[config_name] = std::make_shared(config_); } else { throw std::invalid_argument("Unsupported embedding model provider: " + config_->provider); } } return instances_[config_name]; } } // namespace humanus::mem0