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

Commit e3f5e86

Browse files
authored
FIX: AI Automation scripts were broken when using seeded models (#991)
1 parent fcf2350 commit e3f5e86

File tree

2 files changed

+62
-1
lines changed

2 files changed

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

0 commit comments

Comments
 (0)