From 0f55f5f52e84fd5cdedb448d408dfa3c69c5fe5f Mon Sep 17 00:00:00 2001 From: Andrew Lee Date: Thu, 20 Mar 2025 16:20:59 -0400 Subject: Modularized LLM chatbot; Added back eval --- bot/src/plugins/chatbot.js | 35 ++++++++++++++++++++++++++++++++++- 1 file changed, 34 insertions(+), 1 deletion(-) (limited to 'bot/src/plugins/chatbot.js') diff --git a/bot/src/plugins/chatbot.js b/bot/src/plugins/chatbot.js index f4095a2..3da7421 100644 --- a/bot/src/plugins/chatbot.js +++ b/bot/src/plugins/chatbot.js @@ -1 +1,34 @@ -// add llm feature here +import { ollamaGlobal, ollamaModel } from '../storage/consts.js'; +import { ollama } from '../utils/ollama.js'; +import { AttachmentBuilder } from 'discord.js'; +import { guildSettings } from '../models/guild-settings.js'; + +export async function ChatBot(msg, args) { + const guildSetting = await guildSettings.findOne({ where: { guildID: msg.guild.id } }); + + if (!guildSetting.ollamaEnabled) return; + if (!ollamaGlobal) return msg.reply('Sorry, the LLM chatbot feature has been turned off.'); + if (!args) return msg.reply('Sorry? What was that?'); + + try { + const loadingMessage = await msg.reply('Thinking...'); + + const response = await ollama.chat({ + model: ollamaModel, + messages: [{ role: 'user', content: args }], + }); + + let content = response.message.content; + + if (content.length > 2000) { + const attachment = new AttachmentBuilder(Buffer.from(content, 'utf-8'), { name: 'output.txt' }); + return await loadingMessage.edit({ files: [attachment] }); + } else { + return await loadingMessage.edit({ content }); + } + + } catch (err) { + console.error(err); + await msg.reply(`Something went wrong. [Submit an issue at the AleeBot repository.]()\nMessage:\n\`\`\`${err.stack}\`\`\``); + } +} -- cgit v1.2.3