FIX: Users with empty locales would error out during prompt localization (#584)
This commit is contained in:
parent
5ab86923ff
commit
595cde0fd6
|
@ -61,8 +61,7 @@ module DiscourseAi
|
||||||
|
|
||||||
if prompt.messages[0][:content].include?("%LANGUAGE%")
|
if prompt.messages[0][:content].include?("%LANGUAGE%")
|
||||||
locale = SiteSetting.default_locale
|
locale = SiteSetting.default_locale
|
||||||
locale = user.locale || SiteSetting.default_locale if SiteSetting.allow_user_locale &&
|
locale = user.locale if SiteSetting.allow_user_locale && user&.locale.present?
|
||||||
user
|
|
||||||
locale_hash = LocaleSiteSetting.language_names[locale]
|
locale_hash = LocaleSiteSetting.language_names[locale]
|
||||||
|
|
||||||
prompt.messages[0][:content] = prompt.messages[0][:content].gsub(
|
prompt.messages[0][:content] = prompt.messages[0][:content].gsub(
|
||||||
|
|
|
@ -2,6 +2,7 @@
|
||||||
|
|
||||||
RSpec.describe DiscourseAi::AiHelper::Assistant do
|
RSpec.describe DiscourseAi::AiHelper::Assistant do
|
||||||
fab!(:user)
|
fab!(:user)
|
||||||
|
fab!(:empty_locale_user) { Fabricate(:user, locale: "") }
|
||||||
let(:prompt) { CompletionPrompt.find_by(id: mode) }
|
let(:prompt) { CompletionPrompt.find_by(id: mode) }
|
||||||
|
|
||||||
before { SiteSetting.ai_helper_model = "fake:fake" }
|
before { SiteSetting.ai_helper_model = "fake:fake" }
|
||||||
|
@ -72,6 +73,8 @@ RSpec.describe DiscourseAi::AiHelper::Assistant do
|
||||||
end
|
end
|
||||||
|
|
||||||
describe("#localize_prompt!") do
|
describe("#localize_prompt!") do
|
||||||
|
before { SiteSetting.allow_user_locale = true }
|
||||||
|
|
||||||
it "is able to perform %LANGUAGE% replacements" do
|
it "is able to perform %LANGUAGE% replacements" do
|
||||||
prompt =
|
prompt =
|
||||||
CompletionPrompt.new(messages: { insts: "This is a %LANGUAGE% test" }).messages_with_input(
|
CompletionPrompt.new(messages: { insts: "This is a %LANGUAGE% test" }).messages_with_input(
|
||||||
|
@ -82,6 +85,17 @@ RSpec.describe DiscourseAi::AiHelper::Assistant do
|
||||||
|
|
||||||
expect(prompt.messages[0][:content].strip).to eq("This is a English (US) test")
|
expect(prompt.messages[0][:content].strip).to eq("This is a English (US) test")
|
||||||
end
|
end
|
||||||
|
|
||||||
|
it "handles users with empty string locales" do
|
||||||
|
prompt =
|
||||||
|
CompletionPrompt.new(messages: { insts: "This is a %LANGUAGE% test" }).messages_with_input(
|
||||||
|
"test",
|
||||||
|
)
|
||||||
|
|
||||||
|
subject.localize_prompt!(prompt, empty_locale_user)
|
||||||
|
|
||||||
|
expect(prompt.messages[0][:content].strip).to eq("This is a English (US) test")
|
||||||
|
end
|
||||||
end
|
end
|
||||||
|
|
||||||
describe "#generate_and_send_prompt" do
|
describe "#generate_and_send_prompt" do
|
||||||
|
|
Loading…
Reference in New Issue