diff --git a/config/settings.yml b/config/settings.yml index 02e4f386..d9c29697 100644 --- a/config/settings.yml +++ b/config/settings.yml @@ -358,3 +358,9 @@ discourse_ai: ai_bot_github_access_token: default: "" secret: true + ai_automation_max_triage_per_minute: + default: 60 + hidden: true + ai_automation_max_triage_per_post_per_minute: + default: 2 + hidden: true diff --git a/discourse_automation/llm_triage.rb b/discourse_automation/llm_triage.rb index b0b58629..84f78a9e 100644 --- a/discourse_automation/llm_triage.rb +++ b/discourse_automation/llm_triage.rb @@ -53,6 +53,20 @@ if defined?(DiscourseAutomation) flag_post = fields.dig("flag_post", "value") begin + RateLimiter.new( + Discourse.system_user, + "llm_triage_#{post.id}", + SiteSetting.ai_automation_max_triage_per_post_per_minute, + 1.minute, + ).performed! + + RateLimiter.new( + Discourse.system_user, + "llm_triage", + SiteSetting.ai_automation_max_triage_per_minute, + 1.minute, + ).performed! + DiscourseAi::Automation::LlmTriage.handle( post: post, model: model, @@ -66,7 +80,7 @@ if defined?(DiscourseAutomation) flag_post: flag_post, ) rescue => e - Discourse.warn_exception(e, message: "llm_triage: failed to run inference") + Discourse.warn_exception(e, message: "llm_triage: skipped triage on post #{post.id}") end end end