mirror of
https://github.com/discourse/discourse-ai.git
synced 2025-03-06 17:30:20 +00:00
* DEV: Add summary types * Refactor for different summary types * Use enum for summary types * Update lib/summarization/strategies/topic_summary.rb Co-authored-by: Penar Musaraj <pmusaraj@gmail.com> * Update lib/summarization/strategies/topic_gist.rb Co-authored-by: Penar Musaraj <pmusaraj@gmail.com> * Update lib/summarization/strategies/chat_messages.rb Co-authored-by: Penar Musaraj <pmusaraj@gmail.com> * Fix chat_messages single prompt * Small tweak to the chat summarization prompt --------- Co-authored-by: Penar Musaraj <pmusaraj@gmail.com>
40 lines
1.3 KiB
Ruby
40 lines
1.3 KiB
Ruby
# frozen_string_literal: true
|
|
|
|
module DiscourseAi
|
|
module Summarization
|
|
def self.topic_summary(topic)
|
|
if SiteSetting.ai_summarization_model.present? && SiteSetting.ai_summarization_enabled
|
|
DiscourseAi::Summarization::FoldContent.new(
|
|
DiscourseAi::Completions::Llm.proxy(SiteSetting.ai_summarization_model),
|
|
DiscourseAi::Summarization::Strategies::TopicSummary.new(topic),
|
|
)
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
def self.topic_gist(topic)
|
|
if SiteSetting.ai_summarization_model.present? && SiteSetting.ai_summarization_enabled
|
|
DiscourseAi::Summarization::FoldContent.new(
|
|
DiscourseAi::Completions::Llm.proxy(SiteSetting.ai_summarization_model),
|
|
DiscourseAi::Summarization::Strategies::TopicGist.new(topic),
|
|
)
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
|
|
def self.chat_channel_summary(channel, time_window_in_hours)
|
|
if SiteSetting.ai_summarization_model.present? && SiteSetting.ai_summarization_enabled
|
|
DiscourseAi::Summarization::FoldContent.new(
|
|
DiscourseAi::Completions::Llm.proxy(SiteSetting.ai_summarization_model),
|
|
DiscourseAi::Summarization::Strategies::ChatMessages.new(channel, time_window_in_hours),
|
|
persist_summaries: false,
|
|
)
|
|
else
|
|
nil
|
|
end
|
|
end
|
|
end
|
|
end
|