Compare commits
2 Commits
e3c5341561
...
4b5d5f3b63
Author | SHA1 | Date | |
---|---|---|---|
|
4b5d5f3b63 | ||
|
4518df8312 |
10
Dockerfile
Normal file
10
Dockerfile
Normal file
@ -0,0 +1,10 @@
|
|||||||
|
FROM node:slim
|
||||||
|
|
||||||
|
WORKDIR /app
|
||||||
|
|
||||||
|
COPY package*.json ./
|
||||||
|
RUN npm install --omit=dev
|
||||||
|
|
||||||
|
COPY . .
|
||||||
|
|
||||||
|
CMD node rai.js
|
@ -53,6 +53,8 @@ module.exports = {
|
|||||||
|
|
||||||
console.log(`Prompt: ${prompt.replace("+", " ")}\nResponse: ${response.data.answer}`);
|
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);
|
interaction.editReply(response.data.answer);
|
||||||
} catch (err) {
|
} catch (err) {
|
||||||
console.error(err);
|
console.error(err);
|
||||||
|
@ -25,7 +25,7 @@ module.exports = {
|
|||||||
private: true,
|
private: true,
|
||||||
options: [{
|
options: [{
|
||||||
"name": "model",
|
"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,
|
"required": false,
|
||||||
"type": 3
|
"type": 3
|
||||||
},
|
},
|
||||||
@ -51,7 +51,7 @@ module.exports = {
|
|||||||
|
|
||||||
run: async (client, interaction) => {
|
run: async (client, interaction) => {
|
||||||
// set a default prompt
|
// 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! ---`)
|
console.log(`--- ${interaction.user.id} has requested a new session! ---`)
|
||||||
const file = './cache/' + interaction.user.id
|
const file = './cache/' + interaction.user.id
|
||||||
@ -96,7 +96,7 @@ module.exports = {
|
|||||||
} else {
|
} else {
|
||||||
if (modelList.includes(userInputModel)) {
|
if (modelList.includes(userInputModel)) {
|
||||||
model = userInputModel;
|
model = userInputModel;
|
||||||
console.log(`User set initPrompt to ${model}`)
|
console.log(`User set model to ${model}`)
|
||||||
} else {
|
} else {
|
||||||
let modelListStr = modelList.join(", ");
|
let modelListStr = modelList.join(", ");
|
||||||
return interaction.followUp(`You may only use one of the following: ${modelListStr}`);
|
return interaction.followUp(`You may only use one of the following: ${modelListStr}`);
|
||||||
|
30
docker-compose.yml
Normal file
30
docker-compose.yml
Normal 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
|
@ -30,6 +30,9 @@ module.exports = async (client) => {
|
|||||||
// // Register for a single guild
|
// // Register for a single guild
|
||||||
// await client.guilds.cache.get("GUIDIDHERE").commands.set(arrayOfSlashCommands);
|
// 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
|
// Register for all the guilds the bot is in
|
||||||
await client.application.commands.set(arrayOfSlashCommands);
|
await client.application.commands.set(arrayOfSlashCommands);
|
||||||
});
|
});
|
||||||
|
Loading…
Reference in New Issue
Block a user