v1.3.0 - Fixes with new endpoint
This commit is contained in:
parent
7df2a07c62
commit
f8eeb5456b
@ -4,7 +4,7 @@ plugins {
|
|||||||
}
|
}
|
||||||
|
|
||||||
group = 'it.ohalee.minecraftgpt'
|
group = 'it.ohalee.minecraftgpt'
|
||||||
version = '1.2.8'
|
version = '1.3.0'
|
||||||
|
|
||||||
sourceCompatibility = 1.17
|
sourceCompatibility = 1.17
|
||||||
targetCompatibility = 1.17
|
targetCompatibility = 1.17
|
||||||
|
@ -4,6 +4,7 @@ import com.google.common.cache.Cache;
|
|||||||
import com.google.common.cache.CacheBuilder;
|
import com.google.common.cache.CacheBuilder;
|
||||||
import com.google.common.cache.RemovalCause;
|
import com.google.common.cache.RemovalCause;
|
||||||
import com.google.common.cache.RemovalListener;
|
import com.google.common.cache.RemovalListener;
|
||||||
|
import com.theokanning.openai.completion.chat.ChatMessage;
|
||||||
import it.ohalee.minecraftgpt.command.ChatCommand;
|
import it.ohalee.minecraftgpt.command.ChatCommand;
|
||||||
import it.ohalee.minecraftgpt.handler.ChatHandler;
|
import it.ohalee.minecraftgpt.handler.ChatHandler;
|
||||||
import it.ohalee.minecraftgpt.handler.PlayerHandler;
|
import it.ohalee.minecraftgpt.handler.PlayerHandler;
|
||||||
@ -16,11 +17,12 @@ import org.bukkit.event.player.AsyncPlayerChatEvent;
|
|||||||
import org.bukkit.plugin.java.JavaPlugin;
|
import org.bukkit.plugin.java.JavaPlugin;
|
||||||
|
|
||||||
import java.lang.reflect.InvocationTargetException;
|
import java.lang.reflect.InvocationTargetException;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.TimeUnit;
|
import java.util.concurrent.TimeUnit;
|
||||||
|
|
||||||
public class Main extends JavaPlugin {
|
public class Main extends JavaPlugin {
|
||||||
|
|
||||||
public static Cache<Player, StringBuilder> CACHE;
|
public static Cache<Player, List<ChatMessage>> CACHE;
|
||||||
public static Cache<Player, Type> USER_TYPE = CacheBuilder.newBuilder().build();
|
public static Cache<Player, Type> USER_TYPE = CacheBuilder.newBuilder().build();
|
||||||
|
|
||||||
@Override
|
@Override
|
||||||
@ -35,7 +37,7 @@ public class Main extends JavaPlugin {
|
|||||||
|
|
||||||
CACHE = CacheBuilder.newBuilder()
|
CACHE = CacheBuilder.newBuilder()
|
||||||
.expireAfterWrite(30, TimeUnit.MINUTES)
|
.expireAfterWrite(30, TimeUnit.MINUTES)
|
||||||
.removalListener((RemovalListener<Player, StringBuilder>) notification -> {
|
.removalListener((RemovalListener<Player, List<ChatMessage>>) notification -> {
|
||||||
if (notification.getKey() == null) return;
|
if (notification.getKey() == null) return;
|
||||||
USER_TYPE.invalidate(notification.getKey());
|
USER_TYPE.invalidate(notification.getKey());
|
||||||
if (notification.getCause() == RemovalCause.EXPIRED) {
|
if (notification.getCause() == RemovalCause.EXPIRED) {
|
||||||
|
@ -1,13 +1,14 @@
|
|||||||
package it.ohalee.minecraftgpt;
|
package it.ohalee.minecraftgpt;
|
||||||
|
|
||||||
import com.theokanning.openai.completion.CompletionRequest;
|
|
||||||
import com.theokanning.openai.completion.chat.ChatCompletionRequest;
|
import com.theokanning.openai.completion.chat.ChatCompletionRequest;
|
||||||
|
import com.theokanning.openai.completion.chat.ChatMessage;
|
||||||
import com.theokanning.openai.service.OpenAiService;
|
import com.theokanning.openai.service.OpenAiService;
|
||||||
import org.bukkit.configuration.ConfigurationSection;
|
import org.bukkit.configuration.ConfigurationSection;
|
||||||
import retrofit2.HttpException;
|
import retrofit2.HttpException;
|
||||||
|
|
||||||
import java.time.Duration;
|
import java.time.Duration;
|
||||||
import java.util.Arrays;
|
import java.util.Arrays;
|
||||||
|
import java.util.List;
|
||||||
import java.util.concurrent.CompletableFuture;
|
import java.util.concurrent.CompletableFuture;
|
||||||
|
|
||||||
public class OpenAI {
|
public class OpenAI {
|
||||||
@ -18,8 +19,8 @@ public class OpenAI {
|
|||||||
return CompletableFuture.runAsync(() -> service = new OpenAiService(key, Duration.ofSeconds(5)));
|
return CompletableFuture.runAsync(() -> service = new OpenAiService(key, Duration.ofSeconds(5)));
|
||||||
}
|
}
|
||||||
|
|
||||||
public static CompletableFuture<String> getResponse(ConfigurationSection section, StringBuilder cached, String message) {
|
public static CompletableFuture<String> getResponse(ConfigurationSection section, List<ChatMessage> chatMessages, String message) {
|
||||||
cached.append("\nHuman:").append(message).append("\nAI:");
|
chatMessages.add(new ChatMessage("Human", message));
|
||||||
|
|
||||||
return CompletableFuture.supplyAsync(() -> {
|
return CompletableFuture.supplyAsync(() -> {
|
||||||
String model = section.getString("model", "text-davinci-003");
|
String model = section.getString("model", "text-davinci-003");
|
||||||
@ -29,7 +30,8 @@ public class OpenAI {
|
|||||||
double topP = section.getDouble("top-p");
|
double topP = section.getDouble("top-p");
|
||||||
double temperature = section.getDouble("temperature");
|
double temperature = section.getDouble("temperature");
|
||||||
|
|
||||||
return service.createChatCompletion(ChatCompletionRequest.builder()
|
String reply = service.createChatCompletion(ChatCompletionRequest.builder()
|
||||||
|
.messages(chatMessages)
|
||||||
.model(model)
|
.model(model)
|
||||||
.temperature(temperature)
|
.temperature(temperature)
|
||||||
.maxTokens(maxTokens)
|
.maxTokens(maxTokens)
|
||||||
@ -39,6 +41,9 @@ public class OpenAI {
|
|||||||
.stop(Arrays.asList("Human:", "AI:"))
|
.stop(Arrays.asList("Human:", "AI:"))
|
||||||
.build())
|
.build())
|
||||||
.getChoices().get(0).getMessage().getContent();
|
.getChoices().get(0).getMessage().getContent();
|
||||||
|
|
||||||
|
chatMessages.add(new ChatMessage("AI", reply));
|
||||||
|
return reply;
|
||||||
}).exceptionally(throwable -> {
|
}).exceptionally(throwable -> {
|
||||||
if (throwable.getCause() instanceof HttpException e) {
|
if (throwable.getCause() instanceof HttpException e) {
|
||||||
String reason = switch (e.response().code()) {
|
String reason = switch (e.response().code()) {
|
||||||
|
@ -5,6 +5,8 @@ import it.ohalee.minecraftgpt.Type;
|
|||||||
import it.ohalee.minecraftgpt.util.Messages;
|
import it.ohalee.minecraftgpt.util.Messages;
|
||||||
import org.bukkit.entity.Player;
|
import org.bukkit.entity.Player;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
|
|
||||||
public class TypeManager {
|
public class TypeManager {
|
||||||
|
|
||||||
public static void startConversation(Main plugin, Player player, Type type) {
|
public static void startConversation(Main plugin, Player player, Type type) {
|
||||||
@ -15,7 +17,7 @@ public class TypeManager {
|
|||||||
}
|
}
|
||||||
|
|
||||||
Main.USER_TYPE.put(player, type);
|
Main.USER_TYPE.put(player, type);
|
||||||
Main.CACHE.put(player, new StringBuilder());
|
Main.CACHE.put(player, new ArrayList<>());
|
||||||
player.sendMessage(Messages.format(plugin.getConfig().getString("command.toggle.enabled")));
|
player.sendMessage(Messages.format(plugin.getConfig().getString("command.toggle.enabled")));
|
||||||
}
|
}
|
||||||
|
|
||||||
|
@ -1,5 +1,6 @@
|
|||||||
package it.ohalee.minecraftgpt.handler;
|
package it.ohalee.minecraftgpt.handler;
|
||||||
|
|
||||||
|
import com.theokanning.openai.completion.chat.ChatMessage;
|
||||||
import it.ohalee.minecraftgpt.Main;
|
import it.ohalee.minecraftgpt.Main;
|
||||||
import it.ohalee.minecraftgpt.OpenAI;
|
import it.ohalee.minecraftgpt.OpenAI;
|
||||||
import it.ohalee.minecraftgpt.Type;
|
import it.ohalee.minecraftgpt.Type;
|
||||||
@ -11,6 +12,7 @@ import org.bukkit.event.EventHandler;
|
|||||||
import org.bukkit.event.Listener;
|
import org.bukkit.event.Listener;
|
||||||
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
import org.bukkit.event.player.AsyncPlayerChatEvent;
|
||||||
|
|
||||||
|
import java.util.ArrayList;
|
||||||
import java.util.Collection;
|
import java.util.Collection;
|
||||||
import java.util.Collections;
|
import java.util.Collections;
|
||||||
import java.util.List;
|
import java.util.List;
|
||||||
@ -42,10 +44,10 @@ public class ChatHandler implements Listener {
|
|||||||
sendMessage(format(list.get(0), e.getMessage(), player.getName()), recipients);
|
sendMessage(format(list.get(0), e.getMessage(), player.getName()), recipients);
|
||||||
}
|
}
|
||||||
|
|
||||||
StringBuilder builder = Main.CACHE.getIfPresent(player);
|
List<ChatMessage> messages = Main.CACHE.getIfPresent(player);
|
||||||
if (builder == null) builder = new StringBuilder();
|
if (messages == null) messages = new ArrayList<>();
|
||||||
|
|
||||||
OpenAI.getResponse(plugin.getConfig().getConfigurationSection("chatgpt"), builder, e.getMessage()).whenComplete((response, throwable) -> {
|
OpenAI.getResponse(plugin.getConfig().getConfigurationSection("chatgpt"), messages, e.getMessage()).whenComplete((response, throwable) -> {
|
||||||
if (throwable != null) {
|
if (throwable != null) {
|
||||||
throwable.printStackTrace();
|
throwable.printStackTrace();
|
||||||
player.sendMessage(Messages.format(plugin.getConfig().getString("command.error")));
|
player.sendMessage(Messages.format(plugin.getConfig().getString("command.error")));
|
||||||
|
@ -1,6 +1,6 @@
|
|||||||
name: MinecraftGPT
|
name: MinecraftGPT
|
||||||
main: it.ohalee.minecraftgpt.Main
|
main: it.ohalee.minecraftgpt.Main
|
||||||
version: 1.2.7
|
version: 1.3.0
|
||||||
author: ohAlee
|
author: ohAlee
|
||||||
description: A Minecraft plugin that uses ChatGPT
|
description: A Minecraft plugin that uses ChatGPT
|
||||||
api-version: 1.16
|
api-version: 1.16
|
||||||
|
Loading…
Reference in New Issue
Block a user