Compare commits

...

2 Commits

Author SHA1 Message Date
GooeyTuxedo 4b5d5f3b63 One liner to get around llama max length bug 2023-04-07 14:38:00 -07:00
GooeyTuxedo 4518df8312 Add docker build files and set chat default settings via exposed env vars 2023-04-07 14:37:34 -07:00
5 changed files with 48 additions and 3 deletions

10
Dockerfile Normal file
View File

@ -0,0 +1,10 @@
FROM node:slim
WORKDIR /app
COPY package*.json ./
RUN npm install --omit=dev
COPY . .
CMD node rai.js

View File

@ -53,6 +53,8 @@ module.exports = {
console.log(`Prompt: ${prompt.replace("+", " ")}\nResponse: ${response.data.answer}`);
if (!response.data.answer) throw new Error("Did not receive a reply. API error?")
interaction.editReply(response.data.answer);
} catch (err) {
console.error(err);

View File

@ -25,7 +25,7 @@ module.exports = {
private: true,
options: [{
"name": "model",
"description": `The model you want to run, choose from the following: ${modelList.join(", ")} | Char case matters`,
"description": `Choose from the following models: ${modelList.join(", ")} | Char case matters`,
"required": false,
"type": 3
},
@ -51,7 +51,7 @@ module.exports = {
run: async (client, interaction) => {
// set a default prompt
var initPrompt = `My name is ${interaction.user.username} my special number is ${interaction.user.discriminator} and my Discord ID is ${interaction.user.id} we met in ${interaction.guild.name} a Discord sever. You are rAi and you are the smartest AI Model, you know everything. Below is an instruction that describes a task. You respond appropriately to complete the request. You understand a complete answer is always ended by [end of text].`;
var initPrompt = process.env.INITPROMPT || `My name is ${interaction.user.username} my special number is ${interaction.user.discriminator} and my Discord ID is ${interaction.user.id} we met in ${interaction.guild.name} a Discord sever. You are rAi and you are the smartest AI Model, you know everything. Below is an instruction that describes a task. You respond appropriately to complete the request. You understand a complete answer is always ended by [end of text].`;
console.log(`--- ${interaction.user.id} has requested a new session! ---`)
const file = './cache/' + interaction.user.id
@ -96,7 +96,7 @@ module.exports = {
} else {
if (modelList.includes(userInputModel)) {
model = userInputModel;
console.log(`User set initPrompt to ${model}`)
console.log(`User set model to ${model}`)
} else {
let modelListStr = modelList.join(", ");
return interaction.followUp(`You may only use one of the following: ${modelListStr}`);

30
docker-compose.yml Normal file
View File

@ -0,0 +1,30 @@
version: '3'
services:
serge-discord-bot:
container_name: serge-discord-bot
build:
context: .
environment:
- NODE_ENV=production
## Env Vars for rAi chatbot
- TOKEN={$TOKEN}
- PUBLIC_URL={$PUBLIC_URL}
- INTERNAL_IP=serge
- SERGE_PORT=8008
## Default chat settings overrides
- MODEL="gpt4all"
- TEMPERATURE=0.1
- TOPK=50
- TOPP=0.95
- MAXLENGTH=256
- CONTEXTWINDOW=512
- REPEATLASTN=64
- REPEATPENALTY=1.3
- NTHREADS=8
# - INITPROMPT="some custom prompt"
networks:
- serge_default
networks:
serge_default:
external: true

View File

@ -30,6 +30,9 @@ module.exports = async (client) => {
// // Register for a single guild
// await client.guilds.cache.get("GUIDIDHERE").commands.set(arrayOfSlashCommands);
// Clear previous commands (for changes to installed models)
await client.application.commands.set([]);
// Register for all the guilds the bot is in
await client.application.commands.set(arrayOfSlashCommands);
});