diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/http/HttpClient.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/http/HttpClient.java
index cf7b88b..85abe94 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/http/HttpClient.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/common/client/http/HttpClient.java
@@ -49,14 +49,10 @@
     public Request createRequestFromJson(String uri, String bearer, Object requestObject,
                                          Map<String, String> additionalHeaders) {
         String bodyJson = getGson().toJson(requestObject);
-        log.info("ChatGPT request body: {}", bodyJson);
+        log.debug("Request body: {}", bodyJson);
         RequestBody body = RequestBody.create(bodyJson, MediaType.get("application/json"));
 
         return createRequest(uri, bearer, body, additionalHeaders);
     }
 
-    public Request createRequestFromJson(String uri, String bearer, Object requestObject) {
-        return createRequestFromJson(uri, bearer, requestObject, null);
-    }
-
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
index 7a8071a..d1c14c3 100644
--- a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptAssistant.java
@@ -5,7 +5,6 @@
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.ClientBase;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.chatgpt.ChatGptTools;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.api.gerrit.GerritChange;
-import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.http.HttpClient;
 import com.googlesource.gerrit.plugins.chatgpt.mode.common.model.api.chatgpt.ChatGptTool;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.UriResourceLocatorStateful;
 import com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.git.GitRepoFiles;
@@ -19,7 +18,6 @@
 
 import java.net.URI;
 import java.nio.file.Path;
-import java.util.Map;
 
 import static com.googlesource.gerrit.plugins.chatgpt.utils.FileUtils.createTempFileWithContent;
 import static com.googlesource.gerrit.plugins.chatgpt.utils.GsonUtils.getGson;
@@ -30,7 +28,7 @@
     public static final String KEY_ASSISTANT_ID = "assistantId";
     public static final String CODE_INTERPRETER_TOOL_TYPE = "code_interpreter";
 
-    private final HttpClient httpClient = new HttpClient();
+    private final ChatGptHttpClient httpClient = new ChatGptHttpClient();
     private final GerritChange change;
     private final GitRepoFiles gitRepoFiles;
     private final PluginDataHandler pluginDataHandler;
@@ -80,7 +78,6 @@
     private Request createRequest(String fileId) {
         URI uri = URI.create(config.getGptDomain() + UriResourceLocatorStateful.chatCreateAssistantsUri());
         log.debug("ChatGPT Create Assistant request URI: {}", uri);
-        Map<String, String> additionalHeaders = Map.of("OpenAI-Beta", "assistants=v1");
         ChatGptPromptStateful chatGptPromptStateful = new ChatGptPromptStateful(config, change);
         ChatGptParameters chatGptParameters = new ChatGptParameters(config, change.getIsCommentEvent());
         ChatGptTool[] tools = new ChatGptTool[] {
@@ -97,7 +94,7 @@
                 .tools(tools)
                 .build();
 
-        return httpClient.createRequestFromJson(uri.toString(), config.getGptToken(), requestBody, additionalHeaders);
+        return httpClient.createRequestFromJson(uri.toString(), config.getGptToken(), requestBody);
     }
 
 }
diff --git a/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptHttpClient.java b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptHttpClient.java
new file mode 100644
index 0000000..077daa9
--- /dev/null
+++ b/src/main/java/com/googlesource/gerrit/plugins/chatgpt/mode/stateful/client/api/chatgpt/ChatGptHttpClient.java
@@ -0,0 +1,15 @@
+package com.googlesource.gerrit.plugins.chatgpt.mode.stateful.client.api.chatgpt;
+
+import com.googlesource.gerrit.plugins.chatgpt.mode.common.client.http.HttpClient;
+import okhttp3.Request;
+
+import java.util.Map;
+
+public class ChatGptHttpClient extends HttpClient {
+    private static final Map<String, String> BETA_VERSION_HEADER = Map.of("OpenAI-Beta", "assistants=v1");
+
+    public Request createRequestFromJson(String uri, String bearer, Object requestObject) {
+        return createRequestFromJson(uri, bearer, requestObject, BETA_VERSION_HEADER);
+    }
+
+}
