From e0691e70e87d512517f68fa323682db5f027259d Mon Sep 17 00:00:00 2001 From: Roman Rizzi Date: Tue, 21 Nov 2023 13:27:35 -0300 Subject: [PATCH] DEV: Updates to the summarization strategy API (#301) Introduced by discourse/discourse#24489 In the future, this change will let us log who requested the summary in the `AiApiAuditLog`.: --- .discourse-compatibility | 1 + lib/modules/summarization/strategies/fold_content.rb | 2 +- lib/modules/summarization/strategies/truncate_content.rb | 2 +- .../modules/summarization/strategies/fold_content_spec.rb | 6 ++++-- .../summarization/strategies/truncate_content_spec.rb | 4 +++- 5 files changed, 10 insertions(+), 5 deletions(-) diff --git a/.discourse-compatibility b/.discourse-compatibility index f3e571e9..7ff13486 100644 --- a/.discourse-compatibility +++ b/.discourse-compatibility @@ -1,3 +1,4 @@ +< 3.2.0.beta4-dev: 493b48477a9288f2f1b6f021954088705a6673d6 < 3.2.0.beta2-dev: 3bced1c6f525553fe2b5b79d29bd66c1cf2a47d5 3.1.999: c0415bb7eb878b1b7abf112d65cba981030df8df < 3.2.0.beta1-dev: 3e7c99de894b03e9161d9481da118fe893991a1d diff --git a/lib/modules/summarization/strategies/fold_content.rb b/lib/modules/summarization/strategies/fold_content.rb index 39fbb055..a8d5bd11 100644 --- a/lib/modules/summarization/strategies/fold_content.rb +++ b/lib/modules/summarization/strategies/fold_content.rb @@ -16,7 +16,7 @@ module DiscourseAi :model, to: :completion_model - def summarize(content, &on_partial_blk) + def summarize(content, _user, &on_partial_blk) opts = content.except(:contents) chunks = split_into_chunks(content[:contents]) diff --git a/lib/modules/summarization/strategies/truncate_content.rb b/lib/modules/summarization/strategies/truncate_content.rb index af4620a7..c26f2e8a 100644 --- a/lib/modules/summarization/strategies/truncate_content.rb +++ b/lib/modules/summarization/strategies/truncate_content.rb @@ -16,7 +16,7 @@ module DiscourseAi :model, to: :completion_model - def summarize(content, &on_partial_blk) + def summarize(content, _user, &on_partial_blk) opts = content.except(:contents) { diff --git a/spec/lib/modules/summarization/strategies/fold_content_spec.rb b/spec/lib/modules/summarization/strategies/fold_content_spec.rb index a414d25d..abe664f3 100644 --- a/spec/lib/modules/summarization/strategies/fold_content_spec.rb +++ b/spec/lib/modules/summarization/strategies/fold_content_spec.rb @@ -13,11 +13,13 @@ RSpec.describe DiscourseAi::Summarization::Strategies::FoldContent do DiscourseAi::Tokenizer::BertTokenizer.size("(1 asd said: This is a text ") + 3 end + let(:user) { User.new } + let(:content) { { contents: [{ poster: "asd", id: 1, text: summarize_text }] } } context "when the content to summarize fits in a single call" do it "does one call to summarize content" do - result = strategy.summarize(content) + result = strategy.summarize(content, user) expect(model.summarization_calls).to eq(1) expect(result[:summary]).to eq(DummyCompletionModel::SINGLE_SUMMARY) @@ -28,7 +30,7 @@ RSpec.describe DiscourseAi::Summarization::Strategies::FoldContent do it "summarizes each chunk and then concatenates them" do content[:contents] << { poster: "asd2", id: 2, text: summarize_text } - result = strategy.summarize(content) + result = strategy.summarize(content, user) expect(model.summarization_calls).to eq(3) expect(result[:summary]).to eq(DummyCompletionModel::CONCATENATED_SUMMARIES) diff --git a/spec/lib/modules/summarization/strategies/truncate_content_spec.rb b/spec/lib/modules/summarization/strategies/truncate_content_spec.rb index 4f4bbee4..1e7cc6ea 100644 --- a/spec/lib/modules/summarization/strategies/truncate_content_spec.rb +++ b/spec/lib/modules/summarization/strategies/truncate_content_spec.rb @@ -10,13 +10,15 @@ RSpec.describe DiscourseAi::Summarization::Strategies::TruncateContent do let(:model_tokens) { summarize_text.length } let(:model) { DummyCompletionModel.new(model_tokens) } + let(:user) { User.new } + let(:content) { { contents: [{ poster: "asd", id: 1, text: summarize_text }] } } context "when the content to summarize doesn't fit in a single call" do it "summarizes a truncated version" do content[:contents] << { poster: "asd2", id: 2, text: summarize_text } - result = strategy.summarize(content) + result = strategy.summarize(content, user) expect(model.summarization_calls).to eq(1) expect(result[:summary]).to eq(DummyCompletionModel::SINGLE_SUMMARY)