From d8760842c11e6439d6acf9c77c5d75bf8268886e Mon Sep 17 00:00:00 2001 From: Kinshuk Singh <kinsingh@gitlab.com> Date: Mon, 3 Mar 2025 16:35:37 -0500 Subject: [PATCH] Add feature flag for summarize code review model upgrade relates to upgrading Claude model to 3.7 Sonnet --- ...ummarize_code_review_claude_3_7_sonnet.yml | 9 +++++++ .../completions/summarize_review.rb | 5 ++++ .../completions/summarize_review_spec.rb | 26 +++++++++++++++++++ 3 files changed, 40 insertions(+) create mode 100644 config/feature_flags/beta/summarize_code_review_claude_3_7_sonnet.yml diff --git a/config/feature_flags/beta/summarize_code_review_claude_3_7_sonnet.yml b/config/feature_flags/beta/summarize_code_review_claude_3_7_sonnet.yml new file mode 100644 index 000000000000..ce72952ee4a6 --- /dev/null +++ b/config/feature_flags/beta/summarize_code_review_claude_3_7_sonnet.yml @@ -0,0 +1,9 @@ +--- +name: summarize_code_review_claude_3_7_sonnet +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/521383 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183213 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/522987 +milestone: '17.10' +group: group::code review +type: beta +default_enabled: false diff --git a/ee/lib/gitlab/llm/ai_gateway/completions/summarize_review.rb b/ee/lib/gitlab/llm/ai_gateway/completions/summarize_review.rb index 6443100881cb..a41cda567e60 100644 --- a/ee/lib/gitlab/llm/ai_gateway/completions/summarize_review.rb +++ b/ee/lib/gitlab/llm/ai_gateway/completions/summarize_review.rb @@ -46,6 +46,11 @@ def valid? super && draft_notes.any? end + override :prompt_version + def prompt_version + '2.0.0' if Feature.enabled?(:summarize_code_review_claude_3_7_sonnet, user) + end + def draft_notes_content content = [] diff --git a/ee/spec/lib/gitlab/llm/ai_gateway/completions/summarize_review_spec.rb b/ee/spec/lib/gitlab/llm/ai_gateway/completions/summarize_review_spec.rb index 2de5da214ea3..cd6b04e9076e 100644 --- a/ee/spec/lib/gitlab/llm/ai_gateway/completions/summarize_review_spec.rb +++ b/ee/spec/lib/gitlab/llm/ai_gateway/completions/summarize_review_spec.rb @@ -17,6 +17,10 @@ subject(:summarize_review) { described_class.new(prompt_message, prompt_class, options).execute } describe '#execute' do + before do + stub_feature_flags(summarize_code_review_claude_3_7_sonnet: false) + end + context 'when there are no draft notes authored by user' do it 'does not make AI request' do expect(Gitlab::Llm::AiGateway::Client).not_to receive(:new) @@ -70,6 +74,28 @@ it_behaves_like 'summarize review' end + + context 'with feature flag enabled' do + let(:draft_notes_content) { "Comment: #{draft_note_by_current_user.note}\n" } + + before do + stub_feature_flags(summarize_code_review_claude_3_7_sonnet: true) + end + + it 'includes prompt_version in the request' do + expect_next_instance_of(Gitlab::Llm::AiGateway::Client) do |client| + expect(client) + .to receive(:complete) + .with( + url: "#{Gitlab::AiGateway.url}/v1/prompts/summarize_review", + body: { 'inputs' => { draft_notes_content: draft_notes_content }, 'prompt_version' => '2.0.0' } + ) + .and_return(example_response) + end + + summarize_review + end + end end end end -- GitLab