Skip to content
This repository was archived by the owner on Jul 22, 2025. It is now read-only.

Commit 56eab9a

Browse files
committed
FIX: AI Automation scripts were broken when using seeded models
1 parent fcf2350 commit 56eab9a

File tree

2 files changed

+60
-1
lines changed

2 files changed

+60
-1
lines changed

lib/automation.rb

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -22,7 +22,7 @@ def self.available_models
2222
values
2323
.filter do |value_h|
2424
value_h["id"] > 0 ||
25-
SiteSetting.ai_automation_allowed_seeded_models_map.includes?(value_h["id"].to_s)
25+
SiteSetting.ai_automation_allowed_seeded_models_map.include?(value_h["id"].to_s)
2626
end
2727
.each { |value_h| value_h["id"] = "custom:#{value_h["id"]}" }
2828

Lines changed: 59 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,59 @@
1+
require "rails_helper"
2+
3+
RSpec.describe DiscourseAi::Automation do
4+
describe "manually configured model" do
5+
let!(:llm_model) { Fabricate(:llm_model) }
6+
it "returns a list of available models for automation" do
7+
models = DiscourseAi::Automation.available_models
8+
expect(models).to be_an(Array)
9+
expect(models.first["translated_name"]).to eq(llm_model.display_name)
10+
end
11+
end
12+
13+
describe "no models" do
14+
it "returns an empty list" do
15+
models = DiscourseAi::Automation.available_models
16+
expect(models).to be_empty
17+
end
18+
end
19+
20+
describe "seeded models" do
21+
let!(:llm_model) { Fabricate(:seeded_model) }
22+
it "returns an empty list if no seeded models are allowed" do
23+
models = DiscourseAi::Automation.available_models
24+
expect(models).to be_empty
25+
end
26+
27+
it "returns a list of seeded models if allowed" do
28+
SiteSetting.ai_automation_allowed_seeded_models = llm_model.id.to_s
29+
models = DiscourseAi::Automation.available_models
30+
expect(models.first["translated_name"]).to eq(llm_model.display_name)
31+
end
32+
end
33+
34+
describe "mixed models" do
35+
let!(:llm_model) { Fabricate(:llm_model) }
36+
let!(:seeded_model) { Fabricate(:seeded_model) }
37+
38+
it "returns only the manually configured model if seeded is not allowed" do
39+
models = DiscourseAi::Automation.available_models
40+
expect(models.length).to eq(1)
41+
expect(models.first["translated_name"]).to eq(llm_model.display_name)
42+
end
43+
44+
it "returns a list of seeded and custom models when seeded is allowed" do
45+
SiteSetting.ai_automation_allowed_seeded_models = seeded_model.id.to_s
46+
models = DiscourseAi::Automation.available_models
47+
48+
expect(models).to match_array(
49+
[
50+
{ "translated_name" => "#{llm_model.display_name}", "id" => "custom:#{llm_model.id}" },
51+
{
52+
"translated_name" => "#{seeded_model.display_name}",
53+
"id" => "custom:#{seeded_model.id}",
54+
},
55+
],
56+
)
57+
end
58+
end
59+
end

0 commit comments

Comments
 (0)