This PR adds service to automate account abuse detection. Currently based on the signup name and URL, could potentially add more context such as usage analysis, message metadata etc.
44 lines
1.1 KiB
Ruby
44 lines
1.1 KiB
Ruby
require 'openai'
|
|
|
|
class Captain::Copilot::ChatService < Llm::BaseOpenAiService
|
|
include Captain::ChatHelper
|
|
|
|
def initialize(assistant, config)
|
|
super()
|
|
|
|
@assistant = assistant
|
|
@conversation_history = config[:conversation_history]
|
|
@previous_messages = config[:previous_messages] || []
|
|
@messages = [system_message, conversation_history_context] + @previous_messages
|
|
@response = ''
|
|
end
|
|
|
|
def generate_response(input)
|
|
@messages << { role: 'user', content: input } if input.present?
|
|
response = request_chat_completion
|
|
Rails.logger.info("[CAPTAIN][CopilotChatService] Incrementing response usage for #{@assistant.account.id}")
|
|
@assistant.account.increment_response_usage
|
|
|
|
response
|
|
end
|
|
|
|
private
|
|
|
|
def system_message
|
|
{
|
|
role: 'system',
|
|
content: Captain::Llm::SystemPromptsService.copilot_response_generator(@assistant.config['product_name'])
|
|
}
|
|
end
|
|
|
|
def conversation_history_context
|
|
{
|
|
role: 'system',
|
|
content: "
|
|
Message History with the user is below:
|
|
#{@conversation_history}
|
|
"
|
|
}
|
|
end
|
|
end
|