diff --git a/README.md b/README.md
index 176bcef..02fcc5b 100644
--- a/README.md
+++ b/README.md
@@ -163,9 +163,11 @@
 
 ## Commands
 
-- `/review`: when used in a comment directed at ChatGPT on any Change Set, triggers a review of the full Change Set.
+- `/review`: when used in a comment directed at ChatGPT on any Change Set, triggers a review of the full Change Set. A
+  vote is cast on the Change Set if the voting feature is enabled and the ChatGPT Gerrit user is authorized to vote on
+  it.
 - `/review_last`: when used in a comment directed at ChatGPT on any Change Set, triggers a review of the last Patch Set
-  of the Change Set.
+  of the Change Set. Unlike `/review`, this command does not result in casting or updating votes.
 
 ## Testing
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/DynamicSettings.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/DynamicSettings.java
index 97c9c6f..24ab123 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/DynamicSettings.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/DynamicSettings.java
@@ -19,4 +19,9 @@
     private Integer votingMaxScore;
     private Boolean forcedReview = false;
     private Boolean forcedReviewChangeSet = false;
+
+    public Boolean getForcedReviewLastPatchSet() {
+        return forcedReview && !forcedReviewChangeSet;
+    }
+
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptClient.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptClient.java
index 5151a0b..5f406b7 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptClient.java
@@ -124,7 +124,7 @@
                 .build();
 
         List<ChatGptRequest.Message> messages = List.of(systemMessage, userMessage);
-        ChatGptRequest tools = chatGptTools.retrieveTools();
+        ChatGptRequest tools = chatGptTools.retrieveTools(changeId);
         ChatGptRequest chatGptRequest = ChatGptRequest.builder()
                 .model(config.getGptModel())
                 .messages(messages)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptTools.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptTools.java
index a5fed22..5839ecc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptTools.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/client/chatgpt/ChatGptTools.java
@@ -1,9 +1,11 @@
 package com.googlesource.gerrit.plugins.chatgpt.client.chatgpt;
 
+import com.googlesource.gerrit.plugins.chatgpt.DynamicSettings;
 import com.googlesource.gerrit.plugins.chatgpt.client.ClientBase;
 import com.googlesource.gerrit.plugins.chatgpt.client.model.chatGpt.ChatGptRequest;
 import com.googlesource.gerrit.plugins.chatgpt.config.Configuration;
 import com.googlesource.gerrit.plugins.chatgpt.utils.FileUtils;
+import com.googlesource.gerrit.plugins.chatgpt.utils.SingletonManager;
 
 import java.io.IOException;
 import java.io.InputStreamReader;
@@ -16,14 +18,15 @@
         this.isCommentEvent = isCommentEvent;
     }
 
-    public ChatGptRequest retrieveTools() {
+    public ChatGptRequest retrieveTools(String changeId) {
         ChatGptRequest tools;
         try (InputStreamReader reader = FileUtils.getInputStreamReader("Config/tools.json")) {
             tools = gson.fromJson(reader, ChatGptRequest.class);
         } catch (IOException e) {
             throw new RuntimeException("Failed to load ChatGPT request tools", e);
         }
-        if (!config.isVotingEnabled() || isCommentEvent) {
+        DynamicSettings dynamicSettings = SingletonManager.getInstance(DynamicSettings.class, changeId);
+        if (!config.isVotingEnabled() || isCommentEvent || dynamicSettings.getForcedReviewLastPatchSet()) {
             removeScoreFromTools(tools);
         }
         return tools;
