diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/PatchSetReviewer.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/PatchSetReviewer.java
index 4d4f41f..cbef828 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/PatchSetReviewer.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/PatchSetReviewer.java
@@ -50,7 +50,7 @@
   private final GerritClient gerritClient;
   private final ChangeSetData changeSetData;
   private final Provider<GerritClientReview> clientReviewProvider;
-  @Getter private final ChatAIClient chatGptClient;
+  @Getter private final ChatAIClient chatAIClient;
   private final Localizer localizer;
   private final DebugCodeBlocksReview debugCodeBlocksReview;
 
@@ -65,13 +65,13 @@
       Configuration config,
       ChangeSetData changeSetData,
       Provider<GerritClientReview> clientReviewProvider,
-      ChatAIClient chatGptClient,
+      ChatAIClient chatAIClient,
       Localizer localizer) {
     this.config = config;
     this.gerritClient = gerritClient;
     this.changeSetData = changeSetData;
     this.clientReviewProvider = clientReviewProvider;
-    this.chatGptClient = chatGptClient;
+    this.chatAIClient = chatAIClient;
     this.localizer = localizer;
     debugCodeBlocksReview = new DebugCodeBlocksReview(localizer);
   }
@@ -90,7 +90,7 @@
 
     if (changeSetData.shouldRequestAICodeReview()) {
       AIChatResponseContent reviewReply = getReviewReply(change, patchSet);
-      log.debug("ChatGPT response: {}", reviewReply);
+      log.debug("AIChat response: {}", reviewReply);
 
       retrieveReviewBatches(reviewReply, change);
     }
@@ -169,7 +169,7 @@
       return new AIChatResponseContent(String.format(SPLIT_REVIEW_MSG, config.getMaxReviewLines()));
     }
 
-    return chatGptClient.ask(changeSetData, change, patchSet);
+    return chatAIClient.ask(changeSetData, change, patchSet);
   }
 
   private Integer getReviewScore(GerritChange change) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/data/ChangeSetDataHandler.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/data/ChangeSetDataHandler.java
index 514d3ae..0ecb727 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/data/ChangeSetDataHandler.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/data/ChangeSetDataHandler.java
@@ -46,11 +46,11 @@
           gerritClient.getPermittedVotingRange(change);
       if (permittedVotingRange != null) {
         if (permittedVotingRange.getMin() > config.getVotingMinScore()) {
-          log.debug("Minimum ChatGPT voting score set to {}", permittedVotingRange.getMin());
+          log.debug("Minimum AIChat voting score set to {}", permittedVotingRange.getMin());
           changeSetData.setVotingMinScore(permittedVotingRange.getMin());
         }
         if (permittedVotingRange.getMax() < config.getVotingMaxScore()) {
-          log.debug("Maximum ChatGPT voting score set to {}", permittedVotingRange.getMax());
+          log.debug("Maximum AIChat voting score set to {}", permittedVotingRange.getMax());
           changeSetData.setVotingMaxScore(permittedVotingRange.getMax());
         }
       }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/api/openai/AIChatTools.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/api/openai/AIChatTools.java
index ffc3f07..c9c5c8a 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/api/openai/AIChatTools.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/api/openai/AIChatTools.java
@@ -29,7 +29,7 @@
         FileUtils.getInputStreamReader("config/formatRepliesTool.json")) {
       tools = getGson().fromJson(reader, AIChatTool.class);
     } catch (IOException e) {
-      throw new RuntimeException("Failed to load data for ChatGPT `format_replies` tool", e);
+      throw new RuntimeException("Failed to load data for AIChat `format_replies` tool", e);
     }
     return tools;
   }
@@ -40,7 +40,7 @@
         FileUtils.getInputStreamReader("config/formatRepliesToolChoice.json")) {
       toolChoice = getGson().fromJson(reader, AIChatToolChoice.class);
     } catch (IOException e) {
-      throw new RuntimeException("Failed to load data for ChatGPT `format_replies` tool choice", e);
+      throw new RuntimeException("Failed to load data for AIChat `format_replies` tool choice", e);
     }
     return toolChoice;
   }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/messages/ClientMessage.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/messages/ClientMessage.java
index 47d3dcb..61d822b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/messages/ClientMessage.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/messages/ClientMessage.java
@@ -61,7 +61,7 @@
     Matcher userMatcher = botMentionPattern.matcher(message);
     if (!userMatcher.find()) {
       log.debug(
-          "Skipping action since the comment does not mention the ChatGPT bot."
+          "Skipping action since the comment does not mention the AIChat bot."
               + " Expected bot name in comment: {}, Actual comment text: {}",
           config.getGerritUserName(),
           message);
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/CodeFinder.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/CodeFinder.java
index 6300ae9..e130cbc 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/CodeFinder.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/CodeFinder.java
@@ -164,7 +164,7 @@
               .endCharacter(endCharacter)
               .build();
       // If multiple commented code portions are found and currentCommentRange is closer to the line
-      // number suggested by ChatGPT than closestCommentRange, it becomes the new
+      // number suggested by AIChat than closestCommentRange, it becomes the new
       // closestCommentRange
       if (closestCodeRange == null
           || calcCodeDistance(currentCodeRange, commentedLine)
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/InlineCode.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/InlineCode.java
index 74d948a..cef3f41 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/InlineCode.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/patch/code/InlineCode.java
@@ -86,7 +86,7 @@
     try {
       line = newContent.get(line_num);
     } catch (IndexOutOfBoundsException e) {
-      // If the line number returned by ChatGPT exceeds the actual number of lines, return the last
+      // If the line number returned by AIChat exceeds the actual number of lines, return the last
       // line
       int lastLine = newContent.size() - 1;
       if (line_num > lastLine) {
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatDataPrompt.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatDataPrompt.java
index f1b2624..1b2b41e 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatDataPrompt.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatDataPrompt.java
@@ -37,7 +37,7 @@
       GerritClientData gerritClientData,
       Localizer localizer) {
     aiChatDataPromptHandler =
-        AIChatPromptFactory.getChatGptDataPrompt(
+        AIChatPromptFactory.getChatDataPrompt(
             config, changeSetData, change, gerritClientData, localizer);
   }
 
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatGptPrompt.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatPrompt.java
similarity index 97%
rename from src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatGptPrompt.java
rename to src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatPrompt.java
index b0f83ab..b98def6 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatGptPrompt.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatPrompt.java
@@ -39,7 +39,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-public class AIChatGptPrompt {
+public class AIChatPrompt {
   // Reply attributes
   public static final String ATTRIBUTE_ID = "id";
   public static final String ATTRIBUTE_REPLY = "reply";
@@ -77,11 +77,11 @@
 
   @Setter protected boolean isCommentEvent;
 
-  public AIChatGptPrompt(Configuration config) {
+  public AIChatPrompt(Configuration config) {
     this(config, false);
   }
 
-  public AIChatGptPrompt(Configuration config, boolean isCommentEvent) {
+  public AIChatPrompt(Configuration config, boolean isCommentEvent) {
     this.config = config;
     this.isCommentEvent = isCommentEvent;
     // Avoid repeated loading of prompt constants
@@ -109,7 +109,7 @@
 
   protected void loadDefaultPrompts(String promptFilename) {
     String promptFile = String.format("config/%s.json", promptFilename);
-    Class<? extends AIChatGptPrompt> me = this.getClass();
+    Class<? extends AIChatPrompt> me = this.getClass();
     try (InputStreamReader reader = FileUtils.getInputStreamReader(promptFile)) {
       Map<String, Object> values =
           getGson().fromJson(reader, new TypeToken<Map<String, Object>>() {}.getType());
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatPromptFactory.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatPromptFactory.java
index 31a9d16..8e2a99b 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatPromptFactory.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/client/prompt/AIChatPromptFactory.java
@@ -42,7 +42,7 @@
     }
   }
 
-  public static ChatAIDataPrompt getChatGptDataPrompt(
+  public static ChatAIDataPrompt getChatDataPrompt(
       Configuration config,
       ChangeSetData changeSetData,
       GerritChange change,
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/model/api/chatgpt/ChatGptCompletionRequest.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/model/api/openai/AIChatCompletionRequest.java
similarity index 70%
rename from src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/model/api/chatgpt/ChatGptCompletionRequest.java
rename to src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/model/api/openai/AIChatCompletionRequest.java
index 85d9abf..58f6445 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/model/api/chatgpt/ChatGptCompletionRequest.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/common/model/api/openai/AIChatCompletionRequest.java
@@ -12,19 +12,17 @@
 // See the License for the specific language governing permissions and
 // limitations under the License.
 
-package com.googlesource.gerrit.plugins.aicodereview.mode.stateless.model.api.chatgpt;
+package com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai;
 
 import com.google.gson.annotations.SerializedName;
-import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai.AIChatRequestMessage;
-import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai.AIChatTool;
-import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai.AIChatToolChoice;
+
 import java.util.List;
 import lombok.Builder;
 import lombok.Data;
 
 @Data
 @Builder
-public class ChatGptCompletionRequest {
+public class AIChatCompletionRequest {
   private String model;
   private boolean stream;
   private double temperature;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateful/client/prompt/AIChatGptPromptStatefulBase.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateful/client/prompt/AIChatGptPromptStatefulBase.java
index 13edb30..ba1e6ca 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateful/client/prompt/AIChatGptPromptStatefulBase.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateful/client/prompt/AIChatGptPromptStatefulBase.java
@@ -20,14 +20,14 @@
 import com.googlesource.gerrit.plugins.aicodereview.config.Configuration;
 import com.googlesource.gerrit.plugins.aicodereview.interfaces.mode.stateful.client.prompt.ChatGptPromptStateful;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.api.gerrit.GerritChange;
-import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.prompt.AIChatGptPrompt;
+import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.prompt.AIChatPrompt;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.data.ChangeSetData;
 import java.util.ArrayList;
 import java.util.List;
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-public abstract class AIChatGptPromptStatefulBase extends AIChatGptPrompt
+public abstract class AIChatGptPromptStatefulBase extends AIChatPrompt
     implements ChatGptPromptStateful {
   public static String DEFAULT_AI_CHAT_ASSISTANT_NAME;
   public static String DEFAULT_AI_CHAT_ASSISTANT_DESCRIPTION;
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/api/chatai/AIChatClientStateless.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/api/chatai/AIChatClientStateless.java
index 3b782a4..c65e61c 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/api/chatai/AIChatClientStateless.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/api/chatai/AIChatClientStateless.java
@@ -27,13 +27,14 @@
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.api.openai.AIChatParameters;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.api.openai.AIChatTools;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.http.HttpClientWithRetry;
+import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai.AIChatCompletionRequest;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai.AIChatRequestMessage;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai.AIChatResponseContent;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.api.openai.AIChatTool;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.data.ChangeSetData;
 import com.googlesource.gerrit.plugins.aicodereview.mode.stateless.client.api.UriResourceLocatorStateless;
 import com.googlesource.gerrit.plugins.aicodereview.mode.stateless.client.prompt.AIChatPromptStateless;
-import com.googlesource.gerrit.plugins.aicodereview.mode.stateless.model.api.chatgpt.ChatGptCompletionRequest;
+
 import java.io.IOException;
 import java.net.URI;
 import java.net.http.HttpRequest;
@@ -61,19 +62,19 @@
     isCommentEvent = change.getIsCommentEvent();
     String changeId = change.getFullChangeId();
     log.info(
-        "Processing STATELESS ChatGPT Request with changeId: {}, Patch Set: {}",
+        "Processing STATELESS AIChat Request with changeId: {}, Patch Set: {}",
         changeId,
         patchSet);
     for (int attemptInd = 0; attemptInd < REVIEW_ATTEMPT_LIMIT; attemptInd++) {
       HttpRequest request = createRequest(config, changeSetData, patchSet);
-      log.debug("ChatGPT request: {}", request.toString());
+      log.debug("AIChat request: {}", request.toString());
 
       HttpResponse<String> response = httpClientWithRetry.execute(request);
 
       String body = response.body();
-      log.debug("ChatGPT response body: {}", body);
+      log.debug("Chat response body: {}", body);
       if (body == null) {
-        throw new IOException("ChatGPT response body is null");
+        throw new IOException("AIChat response body is null");
       }
 
       AIChatResponseContent contentExtracted = extractContent(config, body);
@@ -81,7 +82,7 @@
         return contentExtracted;
       }
     }
-    throw new RuntimeException("Failed to receive valid ChatGPT response");
+    throw new RuntimeException("Failed to receive valid AIChat response");
   }
 
   protected HttpRequest createRequest(
@@ -122,8 +123,8 @@
 
     AIChatParameters AIChatParameters = new AIChatParameters(config, isCommentEvent);
     AIChatTool[] tools = new AIChatTool[] {AIChatTools.retrieveFormatRepliesTool()};
-    ChatGptCompletionRequest chatGptCompletionRequest =
-        ChatGptCompletionRequest.builder()
+    AIChatCompletionRequest chatGptCompletionRequest =
+        AIChatCompletionRequest.builder()
             .model(config.getAIModel())
             .messages(List.of(systemMessage, userMessage))
             .temperature(AIChatParameters.getGptTemperature())
diff --git a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/prompt/AIChatPromptStateless.java b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/prompt/AIChatPromptStateless.java
index 692d3a9..7cdb565 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/prompt/AIChatPromptStateless.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/aicodereview/mode/stateless/client/prompt/AIChatPromptStateless.java
@@ -17,7 +17,7 @@
 import static com.googlesource.gerrit.plugins.aicodereview.utils.TextUtils.*;
 
 import com.googlesource.gerrit.plugins.aicodereview.config.Configuration;
-import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.prompt.AIChatGptPrompt;
+import com.googlesource.gerrit.plugins.aicodereview.mode.common.client.prompt.AIChatPrompt;
 import com.googlesource.gerrit.plugins.aicodereview.mode.common.model.data.ChangeSetData;
 import java.util.ArrayList;
 import java.util.Arrays;
@@ -25,7 +25,7 @@
 import lombok.extern.slf4j.Slf4j;
 
 @Slf4j
-public class AIChatPromptStateless extends AIChatGptPrompt {
+public class AIChatPromptStateless extends AIChatPrompt {
   public static String DEFAULT_AI_CHAT_SYSTEM_PROMPT_INPUT_DESCRIPTION;
   public static String DEFAULT_AI_CHAT_SYSTEM_PROMPT_INPUT_DESCRIPTION_REVIEW;
   public static String DEFAULT_AI_CHAT_REVIEW_PROMPT;
diff --git a/src/test/java/com/googlesource/gerrit/plugins/aicodereview/AIChatReviewTestBase.java b/src/test/java/com/googlesource/gerrit/plugins/aicodereview/AIChatReviewTestBase.java
index 469f218..83885e0 100644
--- a/src/test/java/com/googlesource/gerrit/plugins/aicodereview/AIChatReviewTestBase.java
+++ b/src/test/java/com/googlesource/gerrit/plugins/aicodereview/AIChatReviewTestBase.java
@@ -303,7 +303,7 @@
     ArgumentCaptor<ReviewInput> reviewInputCaptor = ArgumentCaptor.forClass(ReviewInput.class);
     verify(revisionApiMock).review(reviewInputCaptor.capture());
     gptRequestBody =
-        getGson().fromJson(patchSetReviewer.getChatGptClient().getRequestBody(), JsonObject.class);
+        getGson().fromJson(patchSetReviewer.getChatAIClient().getRequestBody(), JsonObject.class);
     return reviewInputCaptor;
   }
 
