Class: Assistant::TechnicalSupport::ResponseGroundingWorker
- Inherits:
-
Object
- Object
- Assistant::TechnicalSupport::ResponseGroundingWorker
- Includes:
- Sidekiq::Job
- Defined in:
- app/workers/assistant/technical_support/response_grounding_worker.rb
Overview
Grades one prepared Technical Support response outside the user-visible
Sunny worker. A completed assessment makes retries idempotent no-ops.
Constant Summary collapse
- OUTSIDE_FUNNEL_REASON =
Constant.
'conversation_outside_technical_support_funnel'
Instance Method Summary collapse
-
#perform(conversation_id, assistant_message_id) ⇒ void
Evaluates a pending evidence snapshot stored on an assistant message.
Instance Method Details
#perform(conversation_id, assistant_message_id) ⇒ void
This method returns an undefined value.
Evaluates a pending evidence snapshot stored on an assistant message.
24 25 26 27 28 29 30 31 32 33 34 35 36 37 38 39 40 41 42 43 44 45 46 47 48 49 50 |
# File 'app/workers/assistant/technical_support/response_grounding_worker.rb', line 24 def perform(conversation_id, ) conversation = AssistantConversation.find_by(id: conversation_id) return unless conversation = conversation..find_by(id: , role: 'assistant') return unless return terminalize_outside_funnel() unless ResponseGroundingAssessmentBuilder.applies_to?(conversation) lease = ResponseGroundingAssessmentLease.call(assistant_message: ) return unless lease.claimed? pending = lease.assessment lease_token = lease.lease_token answer = .content.to_s current_answer_sha256 = Digest::SHA256.hexdigest(answer) return record_changed_answer(, pending, current_answer_sha256, lease_token) \ unless pending['answer_sha256'] == current_answer_sha256 ResponseGroundingGate.call( conversation:, user_message_id: pending['user_message_id'], assistant_message_id: .id, answer:, lease_token:, evidence: ResponseGroundingEvidence::Result.from_h(pending['evidence']) ) end |