41 lines
1.1 KiB
Ruby
41 lines
1.1 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
class ChooseLlmModelSettingMigration < ActiveRecord::Migration[7.0]
|
|
def up
|
|
transition_to_llm_model("ai_helper_model")
|
|
transition_to_llm_model("ai_embeddings_semantic_search_hyde_model")
|
|
end
|
|
|
|
def transition_to_llm_model(llm_setting_name)
|
|
setting_value =
|
|
DB
|
|
.query_single(
|
|
"SELECT value FROM site_settings WHERE name = :llm_setting",
|
|
llm_setting: llm_setting_name,
|
|
)
|
|
.first
|
|
.to_s
|
|
|
|
return if setting_value.empty?
|
|
|
|
provider_and_model = setting_value.split(":")
|
|
provider = provider_and_model.first
|
|
model = provider_and_model.second
|
|
return if provider == "custom"
|
|
|
|
llm_model_id = DB.query_single(<<~SQL, provider: provider, model: model).first.to_s
|
|
SELECT id FROM llm_models WHERE provider = :provider AND name = :model
|
|
SQL
|
|
|
|
return if llm_model_id.empty?
|
|
|
|
DB.exec(<<~SQL, llm_setting: llm_setting_name, new_value: "custom:#{llm_model_id}")
|
|
UPDATE site_settings SET value=:new_value WHERE name=:llm_setting
|
|
SQL
|
|
end
|
|
|
|
def down
|
|
raise ActiveRecord::IrreversibleMigration
|
|
end
|
|
end
|