feat: Interface to validate response_source (#8894)
- This PR adds a UI to validate the response source quality quickly. It also helps to test with sample questions and update responses in the database when missing. Co-authored-by: Pranav Raj S <pranav@chatwoot.com>
This commit is contained in:
@@ -1,4 +1,4 @@
|
||||
class SuperAdmin::ResponseSourcesController < SuperAdmin::ApplicationController
|
||||
class SuperAdmin::ResponseSourcesController < SuperAdmin::EnterpriseBaseController
|
||||
# Overwrite any of the RESTful controller actions to implement custom behavior
|
||||
# For example, you may want to send an email after a foo is updated.
|
||||
#
|
||||
@@ -41,4 +41,36 @@ class SuperAdmin::ResponseSourcesController < SuperAdmin::ApplicationController
|
||||
|
||||
# See https://administrate-demo.herokuapp.com/customizing_controller_actions
|
||||
# for more information
|
||||
|
||||
before_action :set_response_source, only: %i[chat process_chat]
|
||||
|
||||
def chat; end
|
||||
|
||||
def process_chat
|
||||
previous_messages = []
|
||||
get_previous_messages(previous_messages)
|
||||
robin_response = ChatGpt.new(
|
||||
Enterprise::MessageTemplates::ResponseBotService.response_sections(params[:message], @response_source)
|
||||
).generate_response(
|
||||
params[:message], previous_messages
|
||||
)
|
||||
message_content = robin_response['response']
|
||||
if robin_response['context_ids'].present?
|
||||
message_content += Enterprise::MessageTemplates::ResponseBotService.generate_sources_section(robin_response['context_ids'])
|
||||
end
|
||||
render json: { message: message_content }
|
||||
end
|
||||
|
||||
private
|
||||
|
||||
def get_previous_messages(previous_messages)
|
||||
params[:previous_messages].each do |message|
|
||||
role = message['type'] == 'user' ? 'user' : 'system'
|
||||
previous_messages << { content: message['message'], role: role }
|
||||
end
|
||||
end
|
||||
|
||||
def set_response_source
|
||||
@response_source = requested_resource
|
||||
end
|
||||
end
|
||||
|
||||
Reference in New Issue
Block a user