From 98014e20be38193b5d761f2e85db14b04960e0b2 Mon Sep 17 00:00:00 2001 From: tgao3701908 Date: Thu, 29 May 2025 11:46:00 -0400 Subject: [PATCH 1/5] update claude version to 4.0 for duo code review --- .../duo_code_review_claude_4_0_rollout.yml | 10 ++++++++++ .../completions/review_merge_request.rb | 8 +++++++- .../completions/review_merge_request_spec.rb | 19 ++++++++++++++++++- 3 files changed, 35 insertions(+), 2 deletions(-) create mode 100644 ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml diff --git a/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml b/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml new file mode 100644 index 00000000000000..e9db9da427b9a1 --- /dev/null +++ b/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml @@ -0,0 +1,10 @@ +--- +name: duo_code_review_claude_4_0_rollout +description: enable +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/501321 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191007 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/541736 +milestone: '18.1' +group: group::code review +type: beta +default_enabled: false diff --git a/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb b/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb index 996dd0dfaebdd3..63fdd8967d7043 100644 --- a/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb +++ b/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb @@ -81,7 +81,13 @@ def inputs override :prompt_version def prompt_version - '1.0.0' # Claude 3.7 Sonnet + version = '^1.0.0' # Claude 3.7 Sonnet + + if Feature.enabled?(:duo_code_review_claude_4_0_rollout, user) + version = '^2.0.0' # Claude 4.0 Sonnet + end + + version end def user diff --git a/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb b/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb index 425e20baa0f3fa..c5abfb9585f83c 100644 --- a/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb +++ b/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb @@ -8,7 +8,7 @@ let(:tracking_context) { { action: :review_merge_request, request_id: 'uuid' } } let(:options) { { progress_note_id: progress_note.id } } let(:create_note_allowed?) { true } - let(:prompt_version) { '1.0.0' } + let(:prompt_version) { '^1.0.0' } let_it_be(:duo_code_review_bot) { create(:user, :duo_code_review_bot) } let_it_be(:project) do @@ -82,6 +82,8 @@ end before do + stub_feature_flags(duo_code_review_claude_4_0_rollout: false) + allow_next_instance_of( review_prompt_class, mr_title: merge_request.title, @@ -312,6 +314,21 @@ expect(merge_request.notes.non_diff_notes.last.note).to eq(summary_answer) end + context 'when using claude_4_0 for duo code review' do + let(:prompt_version) { '^2.0.0' } + + before do + stub_feature_flags(duo_code_review_claude_4_0_rollout: true) + end + + # rubocop:disable RSpec/NoExpectationExample -- allow_next_instance_of Gitlab::Llm::AiGateway::Client + # in before clause will do the check + it 'creates a note with an error message' do + completion.execute + end + # rubocop:enable RSpec/NoExpectationExample + end + context 'when draft_notes is empty after mapping DraftNote objects' do let(:summary_response) { nil } let(:combined_review_response) do -- GitLab From 2594fce4e4bfd93de7e2e15f7e786568718bce11 Mon Sep 17 00:00:00 2001 From: tgao3701908 Date: Thu, 29 May 2025 15:35:09 -0400 Subject: [PATCH 2/5] update prompt version --- .../gitlab/llm/ai_gateway/completions/review_merge_request.rb | 4 ++-- .../llm/ai_gateway/completions/review_merge_request_spec.rb | 4 ++-- 2 files changed, 4 insertions(+), 4 deletions(-) diff --git a/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb b/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb index 63fdd8967d7043..b9ae5449b42ca0 100644 --- a/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb +++ b/ee/lib/gitlab/llm/ai_gateway/completions/review_merge_request.rb @@ -81,10 +81,10 @@ def inputs override :prompt_version def prompt_version - version = '^1.0.0' # Claude 3.7 Sonnet + version = '1.0.0' # Claude 3.7 Sonnet if Feature.enabled?(:duo_code_review_claude_4_0_rollout, user) - version = '^2.0.0' # Claude 4.0 Sonnet + version = '1.1.0' # Claude 4.0 Sonnet end version diff --git a/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb b/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb index c5abfb9585f83c..26139c6b1110a5 100644 --- a/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb +++ b/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb @@ -8,7 +8,7 @@ let(:tracking_context) { { action: :review_merge_request, request_id: 'uuid' } } let(:options) { { progress_note_id: progress_note.id } } let(:create_note_allowed?) { true } - let(:prompt_version) { '^1.0.0' } + let(:prompt_version) { '1.0.0' } let_it_be(:duo_code_review_bot) { create(:user, :duo_code_review_bot) } let_it_be(:project) do @@ -315,7 +315,7 @@ end context 'when using claude_4_0 for duo code review' do - let(:prompt_version) { '^2.0.0' } + let(:prompt_version) { '1.1.0' } before do stub_feature_flags(duo_code_review_claude_4_0_rollout: true) -- GitLab From 10a17cd44757afb9cc15435bd303f8334f97eb27 Mon Sep 17 00:00:00 2001 From: tgao3701908 Date: Thu, 29 May 2025 15:40:03 -0400 Subject: [PATCH 3/5] update the feature flag --- .../beta/duo_code_review_claude_4_0_rollout.yml | 8 ++++---- 1 file changed, 4 insertions(+), 4 deletions(-) diff --git a/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml b/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml index e9db9da427b9a1..6a416d2e974fb1 100644 --- a/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml +++ b/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml @@ -1,10 +1,10 @@ --- name: duo_code_review_claude_4_0_rollout description: enable -feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/501321 -introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/191007 -rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/541736 +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/545502 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/192920 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/546438 milestone: '18.1' group: group::code review -type: beta +type: gitlab_com_derisk default_enabled: false -- GitLab From 5320490a9b82feabb7320a8a595c922b49f6c6fa Mon Sep 17 00:00:00 2001 From: tgao3701908 Date: Thu, 29 May 2025 15:45:35 -0400 Subject: [PATCH 4/5] update the ff file path --- .../duo_code_review_claude_4_0_rollout.yml | 0 1 file changed, 0 insertions(+), 0 deletions(-) rename ee/config/feature_flags/{beta => gitlab_com_derisk}/duo_code_review_claude_4_0_rollout.yml (100%) diff --git a/ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml b/ee/config/feature_flags/gitlab_com_derisk/duo_code_review_claude_4_0_rollout.yml similarity index 100% rename from ee/config/feature_flags/beta/duo_code_review_claude_4_0_rollout.yml rename to ee/config/feature_flags/gitlab_com_derisk/duo_code_review_claude_4_0_rollout.yml -- GitLab From 952d4684bc5f3454ee5aee29d03a0c3db1e14f31 Mon Sep 17 00:00:00 2001 From: Tian Gao Date: Thu, 29 May 2025 18:21:08 -0400 Subject: [PATCH 5/5] Apply 1 suggestion(s) to 1 file(s) Co-authored-by: Nathan Weinshenker --- .../llm/ai_gateway/completions/review_merge_request_spec.rb | 2 +- 1 file changed, 1 insertion(+), 1 deletion(-) diff --git a/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb b/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb index 26139c6b1110a5..b529c161de40f5 100644 --- a/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb +++ b/ee/spec/lib/gitlab/llm/ai_gateway/completions/review_merge_request_spec.rb @@ -323,7 +323,7 @@ # rubocop:disable RSpec/NoExpectationExample -- allow_next_instance_of Gitlab::Llm::AiGateway::Client # in before clause will do the check - it 'creates a note with an error message' do + it 'successfully creates a note' do completion.execute end # rubocop:enable RSpec/NoExpectationExample -- GitLab