diff --git a/app/controllers/discourse_ai/admin/ai_spam_controller.rb b/app/controllers/discourse_ai/admin/ai_spam_controller.rb index aae13cd1..138908eb 100644 --- a/app/controllers/discourse_ai/admin/ai_spam_controller.rb +++ b/app/controllers/discourse_ai/admin/ai_spam_controller.rb @@ -15,7 +15,7 @@ module DiscourseAi llm_model_id = updated_params[:llm_model_id] = allowed_params[:llm_model_id] if llm_model_id.to_i < 0 && !SiteSetting.ai_spam_detection_model_allowed_seeded_models_map.include?( - "custom:#{llm_model_id}", + llm_model_id.to_s, ) return( render_json_error( diff --git a/spec/requests/admin/ai_spam_controller_spec.rb b/spec/requests/admin/ai_spam_controller_spec.rb index 42f51187..a9afbfac 100644 --- a/spec/requests/admin/ai_spam_controller_spec.rb +++ b/spec/requests/admin/ai_spam_controller_spec.rb @@ -37,7 +37,7 @@ RSpec.describe DiscourseAi::Admin::AiSpamController do expect(response.status).to eq(422) - SiteSetting.ai_spam_detection_model_allowed_seeded_models = seeded_llm.identifier + SiteSetting.ai_spam_detection_model_allowed_seeded_models = seeded_llm.id.to_s put "/admin/plugins/discourse-ai/ai-spam.json", params: { @@ -49,6 +49,26 @@ RSpec.describe DiscourseAi::Admin::AiSpamController do expect(response.status).to eq(200) end + it "ensures that seeded llm ID is properly passed and allowed" do + seeded_llm = Fabricate(:seeded_model) + + SiteSetting.ai_spam_detection_model_allowed_seeded_models = [ + llm_model.id, + seeded_llm.id, + ].join("|") + + put "/admin/plugins/discourse-ai/ai-spam.json", + params: { + is_enabled: true, + llm_model_id: seeded_llm.id, + custom_instructions: "custom instructions", + } + expect(SiteSetting.ai_spam_detection_model_allowed_seeded_models).to eq( + "#{llm_model.id}|#{seeded_llm.id}", + ) + expect(response.status).to eq(200) + end + it "can not enable spam detection without a model selected" do put "/admin/plugins/discourse-ai/ai-spam.json", params: {