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:
Sojan Jose
2024-02-26 20:20:12 +05:30
committed by GitHub
parent 77e463990a
commit 773be6f8ec
23 changed files with 514 additions and 57 deletions

View File

@@ -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