diff --git a/lib/captain/summary_service.rb b/lib/captain/summary_service.rb index 16ee57b51..030c0e510 100644 --- a/lib/captain/summary_service.rb +++ b/lib/captain/summary_service.rb @@ -5,7 +5,7 @@ class Captain::SummaryService < Captain::BaseTaskService make_api_call( model: GPT_MODEL, messages: [ - { role: 'system', content: prompt_from_file('summary') }, + { role: 'system', content: system_prompt }, { role: 'user', content: conversation.to_llm_text(include_contact_details: false) } ] ) @@ -13,6 +13,14 @@ class Captain::SummaryService < Captain::BaseTaskService private + def system_prompt + <<~PROMPT + #{prompt_from_file('summary')} + + Reply in #{account.locale_english_name}. + PROMPT + end + def event_name 'summarize' end diff --git a/lib/integrations/openai/openai_prompts/summary.liquid b/lib/integrations/openai/openai_prompts/summary.liquid index 4ec5ffd5b..1ac05419a 100644 --- a/lib/integrations/openai/openai_prompts/summary.liquid +++ b/lib/integrations/openai/openai_prompts/summary.liquid @@ -17,7 +17,7 @@ Make sure you strongly adhere to the following rules when generating the summary 13. Do not insert your own opinions about the conversation. -Reply in the user's language, as a markdown of the following format. +Use markdown with the following format. Translate all section headings to match the reply language: **Customer Intent** diff --git a/spec/lib/captain/summary_service_spec.rb b/spec/lib/captain/summary_service_spec.rb index 6da3f122b..c5ec50687 100644 --- a/spec/lib/captain/summary_service_spec.rb +++ b/spec/lib/captain/summary_service_spec.rb @@ -35,7 +35,8 @@ RSpec.describe Captain::SummaryService do expect(service).to receive(:make_api_call) do |args| expect(args[:messages].length).to eq(2) expect(args[:messages][0][:role]).to eq('system') - expect(args[:messages][0][:content]).to eq('Summarize this') + expect(args[:messages][0][:content]).to include('Summarize this') + expect(args[:messages][0][:content]).to include("Reply in #{account.locale_english_name}") expect(args[:messages][1][:role]).to eq('user') expect(args[:messages][1][:content]).to be_a(String) { message: 'Summary' }