discourse-ai/lib/modules/ai_helper/topic_helper.rb

34 lines
1.0 KiB
Ruby

# frozen_string_literal: true
module DiscourseAi
module AiHelper
class TopicHelper
def initialize(input, user, params = {})
@user = user
@text = input[:text]
@params = params
end
def explain
return nil if @text.blank?
return nil unless post = Post.find_by(id: @params[:post])
reply_to = post.topic.first_post
topic = reply_to.topic
llm_prompt =
DiscourseAi::AiHelper::LlmPrompt.new.available_prompts(name_filter: "explain").first
prompt = CompletionPrompt.find_by(id: llm_prompt[:id])
prompt.messages.first["content"].gsub!("{{search}}", @text)
prompt.messages.first["content"].gsub!("{{context}}", post.raw)
prompt.messages.first["content"].gsub!("{{topic}}", topic.title)
# TODO inject this conditionally
#prompt.messages.first["content"].gsub!("{{post}}", reply_to.raw)
DiscourseAi::AiHelper::LlmPrompt.new.generate_and_send_prompt(prompt, nil)
end
end
end
end