Skip to content

Commit 1d59eb5

Browse files
committed
Integraate Answer Relevancy Analysis into analysis workflow
This updates the compose answer job to call the answer relevancy job after an answer has been successfully composed and persisted.
1 parent 1d4873a commit 1d59eb5

7 files changed

Lines changed: 37 additions & 1 deletion

app/jobs/compose_answer_job.rb

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -14,6 +14,11 @@ def perform(question_id)
1414
logger.warn("Already an answer created for #{question_id}")
1515
end
1616

17-
AnswerAnalysis::TagTopicsJob.perform_later(answer.id) if answer.persisted?
17+
if answer.persisted?
18+
# TODO: Once we've added a few metrics we should move these to a single job that
19+
# kicks off all analysis jobs.
20+
AnswerAnalysis::TagTopicsJob.perform_later(answer.id)
21+
AnswerAnalysis::AnswerRelevancyJob.perform_later(answer.id)
22+
end
1823
end
1924
end

spec/jobs/compose_answer_job_spec.rb

Lines changed: 6 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -6,6 +6,7 @@
66
before do
77
allow(AnswerComposition::Composer).to receive(:call).and_return(returned_answer)
88
allow(AnswerAnalysis::TagTopicsJob).to receive(:perform_later)
9+
allow(AnswerAnalysis::AnswerRelevancyJob).to receive(:perform_later)
910
end
1011

1112
it_behaves_like "a job in queue", "answer"
@@ -22,6 +23,11 @@
2223
expect(AnswerAnalysis::TagTopicsJob).to have_received(:perform_later).with(returned_answer.id)
2324
end
2425

26+
it "calls the AnswerAnalysis::AnswerRelevancyJob with the answer_id" do
27+
described_class.new.perform(question.id)
28+
expect(AnswerAnalysis::AnswerRelevancyJob).to have_received(:perform_later).with(returned_answer.id)
29+
end
30+
2531
context "when the question has already been answered" do
2632
let(:question) { create(:question, :with_answer) }
2733

spec/requests/api/v1/conversation_flow_spec.rb

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -74,6 +74,7 @@ def when_i_create_a_conversation
7474
)
7575
end
7676
allow(AnswerAnalysis::TagTopicsJob).to receive(:perform_later)
77+
allow(AnswerAnalysis::AnswerRelevancyJob).to receive(:perform_later)
7778

7879
post api_v1_create_conversation_path,
7980
params: { user_question: "What is the capital of France?" },

spec/system/conversation_js_features_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -282,6 +282,10 @@ def stubs_for_mock_answer(question,
282282

283283
stub_claude_output_guardrails(answer)
284284
stub_claude_messages_topic_tagger(question)
285+
stub_bedrock_invoke_model_openai_oss_answer_relevancy(
286+
question_message: question,
287+
answer_message: answer,
288+
)
285289
end
286290

287291
def then_i_cant_see_the_clear_chat_link

spec/system/conversation_with_claude_structured_answer_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -51,6 +51,10 @@ def when_the_first_answer_is_generated
5151
stub_claude_structured_answer(@first_question, @first_answer)
5252
stub_claude_output_guardrails(@first_answer, "False | None")
5353
stub_claude_messages_topic_tagger(@first_question)
54+
stub_bedrock_invoke_model_openai_oss_answer_relevancy(
55+
question_message: @first_question,
56+
answer_message: @first_answer,
57+
)
5458

5559
execute_queued_sidekiq_jobs
5660
end
@@ -83,6 +87,10 @@ def when_the_second_answer_is_generated
8387
stub_claude_structured_answer(rephrased_question, @second_answer)
8488
stub_claude_output_guardrails(@second_answer, "False | None")
8589
stub_claude_messages_topic_tagger(rephrased_question)
90+
stub_bedrock_invoke_model_openai_oss_answer_relevancy(
91+
question_message: rephrased_question,
92+
answer_message: @second_answer,
93+
)
8694

8795
execute_queued_sidekiq_jobs
8896
end

spec/system/conversation_with_open_ai_with_structured_answer_spec.rb

Lines changed: 8 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -55,6 +55,10 @@ def when_the_first_answer_is_generated
5555
)
5656
stub_openai_output_guardrail("Lots of tax.")
5757
stub_claude_messages_topic_tagger(@first_question)
58+
stub_bedrock_invoke_model_openai_oss_answer_relevancy(
59+
question_message: @first_question,
60+
answer_message: "Lots of tax.",
61+
)
5862

5963
execute_queued_sidekiq_jobs
6064
end
@@ -75,6 +79,10 @@ def when_the_second_answer_is_generated
7579
)
7680
stub_openai_output_guardrail("Even more tax.")
7781
stub_claude_messages_topic_tagger(rephrased_question)
82+
stub_bedrock_invoke_model_openai_oss_answer_relevancy(
83+
question_message: rephrased_question,
84+
answer_message: "Even more tax.",
85+
)
7886

7987
execute_queued_sidekiq_jobs
8088
end

spec/system/user_conversation_activity_is_shown_in_admin_spec.rb

Lines changed: 4 additions & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -52,6 +52,10 @@ def and_the_answer_is_generated
5252
stub_claude_structured_answer(@question, @answer)
5353
stub_claude_output_guardrails(@answer, "False | None")
5454
stub_claude_messages_topic_tagger(@question)
55+
stub_bedrock_invoke_model_openai_oss_answer_relevancy(
56+
question_message: @question,
57+
answer_message: @answer,
58+
)
5559

5660
execute_queued_sidekiq_jobs
5761
end

0 commit comments

Comments
 (0)