chatwoot-develop/interactive_jasmine.rb

45 lines
1.4 KiB
Ruby

# interactive_jasmine.rb
assistant = Captain::Assistant.find_by(name: 'Jasmine (Hotel Prime)')
unless assistant
puts 'Erro: Jasmine não encontrada. Execute o seed primeiro.'
exit
end
puts '=========================================================='
puts ' JASMINE INTERATIVA - HOTEL 1001 NOITES PRIME '
puts '=========================================================='
puts "Digite sua mensagem (ou 'sair' para encerrar):"
loop do
print "\nVocê: "
input = gets.chomp
break if input.downcase == 'sair'
puts '...'
puts '(Jasmine está processando e digitando...)'
# Usando o job oficial para testar a latência e o status de digitação que implementamos
service = Captain::Llm::AssistantChatService.new(assistant: assistant)
start_time = Time.zone.now
res = service.generate_response(additional_message: input)
# Simulação da lógica de latência que está no Job
response_text = res['response']
typing_speed = 50
target_delay = (response_text.length * typing_speed) / 1000.0
target_delay = [target_delay, 7.0].min
elapsed = Time.zone.now - start_time
remaining = target_delay - elapsed
sleep(remaining) if remaining.positive?
puts "\nJasmine: #{response_text}"
puts "\n[DEBUG]"
puts "Sentimento: #{res['sentiment']}"
puts "Raciocínio: #{res['reasoning']}"
puts "Tempo de 'digitação': #{(elapsed + [remaining, 0].max).round(2)}s"
puts '----------------------------------------------------------'
end