mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-04-20 14:14:51 +00:00
50 lines
1.3 KiB
Ruby
50 lines
1.3 KiB
Ruby
|
# frozen_string_literal: true
|
||
|
|
||
|
# TODO: this is still highly experimental and subject to a lot of change
|
||
|
# leaving it off in production for now Sam
|
||
|
if defined?(DiscourseAutomation) && !Rails.env.production?
|
||
|
DiscourseAutomation::Scriptable.add("llm_tool_triage") do
|
||
|
version 1
|
||
|
run_in_background
|
||
|
|
||
|
triggerables %i[post_created_edited]
|
||
|
|
||
|
field :tool,
|
||
|
component: :choices,
|
||
|
required: true,
|
||
|
extra: {
|
||
|
content: DiscourseAi::Automation.available_custom_tools,
|
||
|
}
|
||
|
|
||
|
script do |context, fields|
|
||
|
tool_id = fields["tool"]["value"]
|
||
|
post = context["post"]
|
||
|
return if post&.user&.bot?
|
||
|
|
||
|
begin
|
||
|
RateLimiter.new(
|
||
|
Discourse.system_user,
|
||
|
"llm_tool_triage_#{post.id}",
|
||
|
SiteSetting.ai_automation_max_triage_per_post_per_minute,
|
||
|
1.minute,
|
||
|
).performed!
|
||
|
|
||
|
RateLimiter.new(
|
||
|
Discourse.system_user,
|
||
|
"llm_tool_triage",
|
||
|
SiteSetting.ai_automation_max_triage_per_minute,
|
||
|
1.minute,
|
||
|
).performed!
|
||
|
|
||
|
DiscourseAi::Automation::LlmToolTriage.handle(
|
||
|
post: post,
|
||
|
tool_id: tool_id,
|
||
|
automation: self.automation,
|
||
|
)
|
||
|
rescue => e
|
||
|
Discourse.warn_exception(e, message: "llm_tool_triage: skipped triage on post #{post.id}")
|
||
|
end
|
||
|
end
|
||
|
end
|
||
|
end
|