2024-01-04 08:44:07 -05:00
|
|
|
#frozen_string_literal: true
|
|
|
|
|
|
|
|
RSpec.describe DiscourseAi::AiBot::Tools::Summarize do
|
|
|
|
let(:bot_user) { User.find(DiscourseAi::AiBot::EntryPoint::GPT3_5_TURBO_ID) }
|
2024-01-29 14:04:25 -05:00
|
|
|
let(:llm) { DiscourseAi::Completions::Llm.proxy("open_ai:gpt-3.5-turbo") }
|
2024-01-04 08:44:07 -05:00
|
|
|
let(:progress_blk) { Proc.new {} }
|
|
|
|
|
|
|
|
before { SiteSetting.ai_bot_enabled = true }
|
|
|
|
|
|
|
|
let(:summary) { "summary stuff" }
|
|
|
|
|
|
|
|
describe "#process" do
|
|
|
|
it "can generate correct info" do
|
|
|
|
post = Fabricate(:post)
|
|
|
|
|
|
|
|
DiscourseAi::Completions::Llm.with_prepared_responses([summary]) do
|
|
|
|
summarization =
|
2024-05-07 07:55:46 -04:00
|
|
|
described_class.new(
|
|
|
|
{ topic_id: post.topic_id, guidance: "why did it happen?" },
|
|
|
|
bot_user: bot_user,
|
|
|
|
llm: llm,
|
|
|
|
)
|
|
|
|
info = summarization.invoke(&progress_blk)
|
2024-01-04 08:44:07 -05:00
|
|
|
|
|
|
|
expect(info).to include("Topic summarized")
|
|
|
|
expect(summarization.custom_raw).to include(summary)
|
|
|
|
expect(summarization.chain_next_response?).to eq(false)
|
|
|
|
end
|
|
|
|
end
|
|
|
|
|
|
|
|
it "protects hidden data" do
|
|
|
|
category = Fabricate(:category)
|
|
|
|
category.set_permissions({})
|
|
|
|
category.save!
|
|
|
|
|
|
|
|
topic = Fabricate(:topic, category_id: category.id)
|
|
|
|
post = Fabricate(:post, topic: topic)
|
|
|
|
|
|
|
|
DiscourseAi::Completions::Llm.with_prepared_responses([summary]) do
|
|
|
|
summarization =
|
2024-05-07 07:55:46 -04:00
|
|
|
described_class.new(
|
|
|
|
{ topic_id: post.topic_id, guidance: "why did it happen?" },
|
|
|
|
bot_user: bot_user,
|
|
|
|
llm: llm,
|
|
|
|
)
|
|
|
|
info = summarization.invoke(&progress_blk)
|
2024-01-04 08:44:07 -05:00
|
|
|
|
|
|
|
expect(info).not_to include(post.raw)
|
|
|
|
|
|
|
|
expect(summarization.custom_raw).to eq(I18n.t("discourse_ai.ai_bot.topic_not_found"))
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|
|
|
|
end
|