Completing refactor / rename on stateless ChatGPT items.
Generification of more of the model items to OpenAI specification.
Update of the logging output to remove rename chatGPT references
when it could be any model, to prefer the OpenAI specification.
Ollama OpenAI Spec:
https://github.com/ollama/ollama/blob/main/docs/openai.md#v1chatcompletions
- Stateless APIs and logging should now be fully updated.
- Stateful APIs are still chatGPT specific.
Change-Id: If5ab87d10fe7a86606d8de716289933047e59bae
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;
}