diff --git a/ee/config/feature_flags/experiment/generate_commit_message_claude_3_7.yml b/ee/config/feature_flags/experiment/generate_commit_message_claude_3_7.yml new file mode 100644 index 0000000000000000000000000000000000000000..0306a4620fbbc31ae4c8fa7a89f4ef918b2864f4 --- /dev/null +++ b/ee/config/feature_flags/experiment/generate_commit_message_claude_3_7.yml @@ -0,0 +1,9 @@ +--- +name: generate_commit_message_claude_3_7 +feature_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/521392 +introduced_by_url: https://gitlab.com/gitlab-org/gitlab/-/merge_requests/183311 +rollout_issue_url: https://gitlab.com/gitlab-org/gitlab/-/issues/522917 +milestone: '17.10' +group: group::code review +type: experiment +default_enabled: false diff --git a/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb b/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb index 2619a86fb46f3c97a4d20c8007f792d8a64e3c3e..eae0af3acba7fda67cb473b0f40246aaf84bcbf4 100644 --- a/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb +++ b/ee/lib/gitlab/llm/ai_gateway/completions/generate_commit_message.rb @@ -13,6 +13,15 @@ class GenerateCommitMessage < Base def inputs { diff: resource.raw_diffs.to_a.map(&:diff).join("\n").truncate_words(WORDS_LIMIT) } end + + override :prompt_version + def prompt_version + if Feature.enabled?(:generate_commit_message_claude_3_7, user) + '1.1.0' + else + '1.0.0' + end + end end end end diff --git a/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb b/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb index 86d0e49cd5d988e5b4127bd798a8f6a31bdab959..fbded318d5e730536117ee0c9b4a956049a8f4b0 100644 --- a/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb +++ b/ee/spec/lib/gitlab/llm/ai_gateway/completions/generate_commit_message_spec.rb @@ -30,7 +30,7 @@ ) expect(ai_client).to receive(:complete).with( url: "#{Gitlab::AiGateway.url}/v1/prompts/generate_commit_message", - body: { 'inputs' => { diff: expected_diff } } + body: body ).and_return(ai_response) expect(::Gitlab::Llm::GraphqlSubscriptionResponseService).to receive(:new).and_call_original @@ -39,6 +39,7 @@ end end + let(:body) { { 'inputs' => { diff: expected_diff }, 'prompt_version' => '1.1.0' } } let(:expected_diff) { merge_request.raw_diffs.to_a.map(&:diff).join("\n").truncate_words(10000) } before do @@ -94,5 +95,15 @@ it_behaves_like 'successful completion request' end + + context 'when generate_commit_message_claude_3_7 FF is disabled' do + before do + stub_feature_flags(generate_commit_message_claude_3_7: false) + end + + let(:body) { { 'inputs' => { diff: expected_diff }, 'prompt_version' => '1.0.0' } } + + it_behaves_like 'successful completion request' + end end end