discourse-ai/app/serializers/ai_spam_serializer.rb

41 lines
946 B
Ruby

# frozen_string_literal: true
class AiSpamSerializer < ApplicationSerializer
attributes :is_enabled, :llm_id, :custom_instructions, :available_llms, :stats, :flagging_username
def is_enabled
object[:enabled]
end
def llm_id
settings&.llm_model&.id
end
def custom_instructions
settings&.custom_instructions
end
def available_llms
DiscourseAi::Configuration::LlmEnumerator
.values(allowed_seeded_llms: SiteSetting.ai_spam_detection_model_allowed_seeded_models_map)
.map { |hash| { id: hash[:value], name: hash[:name] } }
end
def flagging_username
object[:flagging_username]
end
def stats
{
scanned_count: object[:stats].scanned_count.to_i,
spam_detected: object[:stats].spam_detected.to_i,
false_positives: object[:stats].false_positives.to_i,
false_negatives: object[:stats].false_negatives.to_i,
}
end
def settings
object[:settings]
end
end