feat: Add support for multi-language support for Captain (#11068)
This PR implements the following features - FAQs from conversations will be generated in account language - Contact notes will be generated in account language - Copilot chat will respond in user language, unless the agent asks the question in a different language ## Changes ### Copilot Chat - Update the prompt to include an instruction for the language, the bot will reply in asked language, but will default to account language - Update the `ChatService` class to include pass the language to `SystemPromptsService` ### FAQ and Contact note generation - Update contact note generator and conversation generator to include account locale - Pass the account locale to `SystemPromptsService` <details><summary>Screenshots</summary> #### FAQs being generated in system langauge  #### Copilot responding in system language  </details> --------- Co-authored-by: Muhsin Keloth <muhsinkeramam@gmail.com> Co-authored-by: Pranav <pranav@chatwoot.com>
This commit is contained in:
@@ -145,5 +145,25 @@ RSpec.describe Captain::Llm::ConversationFaqService do
|
||||
{ role: 'user', content: conversation.to_llm_text }
|
||||
)
|
||||
end
|
||||
|
||||
context 'when conversation has different language' do
|
||||
let(:account) { create(:account, locale: 'fr') }
|
||||
let(:conversation) do
|
||||
create(:conversation, account: account,
|
||||
first_reply_created_at: Time.zone.now)
|
||||
end
|
||||
|
||||
it 'includes system prompt with correct language' do
|
||||
allow(Captain::Llm::SystemPromptsService).to receive(:conversation_faq_generator)
|
||||
.with('french')
|
||||
.and_return('system prompt in french')
|
||||
|
||||
params = service.send(:chat_parameters)
|
||||
|
||||
expect(params[:messages]).to include(
|
||||
{ role: 'system', content: 'system prompt in french' }
|
||||
)
|
||||
end
|
||||
end
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user