29 lines
954 B
Ruby
29 lines
954 B
Ruby
class Captain::Copilot::ResponseJob < ApplicationJob
|
|
queue_as :default
|
|
|
|
def perform(assistant:, conversation_id:, user_id:, copilot_thread_id:, message:)
|
|
Rails.logger.info("#{self.class.name} Copilot response job for assistant_id=#{assistant.id} user_id=#{user_id}")
|
|
generate_chat_response(
|
|
assistant: assistant,
|
|
conversation_id: conversation_id,
|
|
user_id: user_id,
|
|
copilot_thread_id: copilot_thread_id,
|
|
message: message
|
|
)
|
|
end
|
|
|
|
private
|
|
|
|
def generate_chat_response(assistant:, conversation_id:, user_id:, copilot_thread_id:, message:)
|
|
service = Captain::Copilot::ChatService.new(
|
|
assistant,
|
|
user_id: user_id,
|
|
copilot_thread_id: copilot_thread_id,
|
|
conversation_id: conversation_id
|
|
)
|
|
# When using copilot_thread, message is already in previous_history
|
|
# Pass nil to avoid duplicate
|
|
service.generate_response(copilot_thread_id.present? ? nil : message)
|
|
end
|
|
end
|