diff --git a/java/lc-irc-bot/src/main/java/lc/irc/bot/IrcBot.java b/java/lc-irc-bot/src/main/java/lc/irc/bot/IrcBot.java index 6d7180d48b80e6b471176c09a89edd6faf479289..e175cdeea93602139653f30ac81d02be79761f2e 100644 --- a/java/lc-irc-bot/src/main/java/lc/irc/bot/IrcBot.java +++ b/java/lc-irc-bot/src/main/java/lc/irc/bot/IrcBot.java @@ -43,6 +43,7 @@ public class IrcBot extends ListenerAdapter implements Runnable { private final Pattern p = Pattern.compile("\\G\\s*(.{1," + maxLength + "})(?=\\s|$)", Pattern.DOTALL); private final Random r = new Random(); + String hedgePrompt = null; private final HashMap> history = new HashMap<>(); public String prePrompt = null; @@ -63,9 +64,11 @@ public class IrcBot extends ListenerAdapter implements Runnable { switch (botName) { case "Werner": prePrompt = "Pretending to be Werner Herzog, respond to the following: "; + hedgePrompt = "Pretending to be Werner Herzog, you just overheard the following, say something interesting about it: "; break; case "BlackBeard": prePrompt = "Pretending to the dread pirate Blackbeard, respond to the following: "; + hedgePrompt = "Pretending to be the dread pirate Blackbeard, you just overheard the following, say something interesting about it: "; break; } } @@ -100,51 +103,57 @@ public class IrcBot extends ListenerAdapter implements Runnable { String msg = event.getMessage(); String lMsg = msg.toLowerCase(Locale.ROOT); + String prompt = null; + if (lMsg.startsWith(botLetter.toLowerCase() + ": ") || lMsg.startsWith(botName.toLowerCase() + ": ")) { - - String prompt = msg.substring(2); - + prompt = msg.substring(2); if (prePrompt != null) { - prompt = prePrompt + prompt; + prompt = prePrompt + msg.substring(2); } + } - ChatMessage userMessage = new ChatMessage(ChatMessageRole.USER.value(), prompt); + if (hedgePrompt != null && prompt == null && r.nextInt(100) == 0) { + prompt = hedgePrompt + msg.substring(2); + } - LinkedList msgs = getHistory(event.getUser().getNick()); + if (prompt == null) return; - push(msgs, userMessage); + ChatMessage userMessage = new ChatMessage(ChatMessageRole.USER.value(), prompt); - ChatCompletionRequest completionRequest = ChatCompletionRequest.builder() - .messages(msgs) - .model(model) - .stream(false) - .maxTokens(500) - .build(); + LinkedList msgs = getHistory(event.getUser().getNick()); - ChatMessage responseMessage = service.createChatCompletion(completionRequest).getChoices().get(0).getMessage(); + push(msgs, userMessage); - if (responseMessage == null) { - event.respond("Hrm, I really don't know."); - return; - } + ChatCompletionRequest completionRequest = ChatCompletionRequest.builder() + .messages(msgs) + .model(model) + .stream(false) + .maxTokens(500) + .build(); + + ChatMessage responseMessage = service.createChatCompletion(completionRequest).getChoices().get(0).getMessage(); + + if (responseMessage == null) { + event.respond("Hrm, I really don't know."); + return; + } - push(msgs, responseMessage); - - logger.info("Result: {}", responseMessage); - - logger.info("CompletionChoice: {}", responseMessage); - String txt = responseMessage.getContent(); - String[] lines = txt.split("\\R"); - for (String s : lines) { - s = s.trim(); - if (!StringUtils.isBlank(s)) { - Matcher m = p.matcher(s); - while (m.find()) { - String subStr = m.group(1); - if (!StringUtils.isBlank(subStr)) - event.respond(m.group(1)); - } + push(msgs, responseMessage); + + logger.info("Result: {}", responseMessage); + + logger.info("CompletionChoice: {}", responseMessage); + String txt = responseMessage.getContent(); + String[] lines = txt.split("\\R"); + for (String s : lines) { + s = s.trim(); + if (!StringUtils.isBlank(s)) { + Matcher m = p.matcher(s); + while (m.find()) { + String subStr = m.group(1); + if (!StringUtils.isBlank(subStr)) + event.respond(m.group(1)); } } }