fix(captain): localize AI summary to account language (#13790)
AI-generated summaries now respect the account's language setting. Previously, summaries were always returned in English regardless of the user's configured language, making section headings like "Customer Intent" and "Action Items" appear in English even for non-English accounts. Previous behavior: <img width="1336" height="790" alt="image" src="https://github.com/user-attachments/assets/5df8b78b-1218-438d-9578-a806b5cb94ac" /> Current Behavior: <img width="1253" height="372" alt="image" src="https://github.com/user-attachments/assets/ae932c97-06da-4baf-9f77-9719bc9162e8" /> ## What changed - Added explicit account locale to the AI system prompt in `Captain::SummaryService` - Updated the summary prompt template to instruct the model to translate section headings ## How to test 1. Configure an account with a non-English language (e.g., Portuguese) 2. Open a conversation with messages 3. Use the Copilot "Summarize" feature 4. Verify that section headings ("Customer Intent", "Conversation Summary", etc.) appear in the account's language --------- Co-authored-by: Aakash Bakhle <48802744+aakashb95@users.noreply.github.com>
This commit is contained in:
@@ -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
|
||||
|
||||
@@ -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**
|
||||
|
||||
|
||||
@@ -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' }
|
||||
|
||||
Reference in New Issue
Block a user