Error message based on http error code.
This commit is contained in:
parent
fc05e5f1fe
commit
4388494ab6
@ -1,6 +1,9 @@
|
|||||||
package it.ohalee.minecraftgpt;
|
package it.ohalee.minecraftgpt;
|
||||||
|
|
||||||
import com.google.common.cache.*;
|
import com.google.common.cache.Cache;
|
||||||
|
import com.google.common.cache.CacheBuilder;
|
||||||
|
import com.google.common.cache.RemovalCause;
|
||||||
|
import com.google.common.cache.RemovalListener;
|
||||||
import it.ohalee.minecraftgpt.command.ChatCommand;
|
import it.ohalee.minecraftgpt.command.ChatCommand;
|
||||||
import it.ohalee.minecraftgpt.handler.PlayerHandlers;
|
import it.ohalee.minecraftgpt.handler.PlayerHandlers;
|
||||||
import it.ohalee.minecraftgpt.util.Messages;
|
import it.ohalee.minecraftgpt.util.Messages;
|
||||||
|
@ -3,6 +3,7 @@ package it.ohalee.minecraftgpt;
|
|||||||
import com.theokanning.openai.OpenAiService;
|
import com.theokanning.openai.OpenAiService;
|
||||||
import com.theokanning.openai.completion.CompletionRequest;
|
import com.theokanning.openai.completion.CompletionRequest;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
|
import retrofit2.HttpException;
|
||||||
|
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
@ -18,18 +19,26 @@ public class OpenAI {
|
|||||||
public static CompletableFuture<String> getResponse(ConfigurationSection section, StringBuilder cached, String message) {
|
public static CompletableFuture<String> getResponse(ConfigurationSection section, StringBuilder cached, String message) {
|
||||||
cached.append("\nHuman:").append(message).append("\nAI:");
|
cached.append("\nHuman:").append(message).append("\nAI:");
|
||||||
|
|
||||||
return CompletableFuture.supplyAsync(() -> {
|
return CompletableFuture.supplyAsync(() -> service.createCompletion(CompletionRequest.builder()
|
||||||
CompletionRequest request = CompletionRequest.builder()
|
.prompt(cached.toString())
|
||||||
.prompt(cached.toString())
|
.model(section.getString("model"))
|
||||||
.model(section.getString("model"))
|
.temperature(section.getDouble("temperature"))
|
||||||
.temperature(section.getDouble("temperature"))
|
.maxTokens(section.getInt("max-tokens"))
|
||||||
.maxTokens(section.getInt("max-tokens"))
|
.topP(section.getDouble("top-p"))
|
||||||
.topP(section.getDouble("top-p"))
|
.frequencyPenalty(section.getDouble("frequency-penalty"))
|
||||||
.frequencyPenalty(section.getDouble("frequency-penalty"))
|
.presencePenalty(section.getDouble("presence-penalty"))
|
||||||
.presencePenalty(section.getDouble("presence-penalty"))
|
.stop(Arrays.asList("Human:", "AI:"))
|
||||||
.stop(Arrays.asList("Human:", "AI:"))
|
.build())
|
||||||
.build();
|
.getChoices().get(0).getText()).exceptionally(throwable -> {
|
||||||
return service.createCompletion(request).getChoices().get(0).getText();
|
if (throwable.getCause() instanceof HttpException e) {
|
||||||
|
return switch (e.response().code()) {
|
||||||
|
case 401 -> "Invalid API key! Please check your configuration.";
|
||||||
|
case 429 -> "Too many requests! Please wait a few seconds and try again.";
|
||||||
|
case 500 -> "OpenAI service is currently unavailable. Please try again later.";
|
||||||
|
default -> "Unknown error! Please try again later. If this error persists, contact the plugin developer.";
|
||||||
|
};
|
||||||
|
}
|
||||||
|
throw new RuntimeException(throwable);
|
||||||
});
|
});
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -28,7 +28,7 @@ public class ChatCommand implements TabExecutor {
|
|||||||
sender.sendMessage(ChatColor.GREEN + "Config reloaded!");
|
sender.sendMessage(ChatColor.GREEN + "Config reloaded!");
|
||||||
return true;
|
return true;
|
||||||
}
|
}
|
||||||
|
|
||||||
if (!(sender instanceof Player player)) {
|
if (!(sender instanceof Player player)) {
|
||||||
sender.sendMessage(ChatColor.RED + "Only players can use this command!");
|
sender.sendMessage(ChatColor.RED + "Only players can use this command!");
|
||||||
return true;
|
return true;
|
||||||
|
@ -11,8 +11,6 @@ import org.bukkit.event.EventPriority;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
import org.bukkit.event.player.PlayerQuitEvent;
|
import org.bukkit.event.player.PlayerQuitEvent;
|
||||||
import org.jetbrains.annotations.NotNull;
|
|
||||||
import org.jetbrains.annotations.Nullable;
|
|
||||||
|
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
@ -54,8 +52,7 @@ public class PlayerHandlers implements Listener {
|
|||||||
if (builder == null) builder = new StringBuilder();
|
if (builder == null) builder = new StringBuilder();
|
||||||
|
|
||||||
OpenAI.getResponse(plugin.getConfig().getConfigurationSection("chatgpt"), builder, e.getMessage()).whenComplete((response, throwable) -> {
|
OpenAI.getResponse(plugin.getConfig().getConfigurationSection("chatgpt"), builder, e.getMessage()).whenComplete((response, throwable) -> {
|
||||||
if (throwable != null) {
|
if (response == null) {
|
||||||
throwable.printStackTrace();
|
|
||||||
player.sendMessage(Messages.format(plugin.getConfig().getString("command.error")));
|
player.sendMessage(Messages.format(plugin.getConfig().getString("command.error")));
|
||||||
return;
|
return;
|
||||||
}
|
}
|
||||||
|
Loading…
Reference in New Issue
Block a user