Compare commits

..

No commits in common. "f4592fff96244bad1b4e738015415ce543130a47" and "0b8391a7e0fe5bcc5ea6a0af2ad5cbd3341d4838" have entirely different histories.

7 changed files with 57 additions and 73 deletions

1
.gitignore vendored
View file

@ -66,4 +66,3 @@ TEST-results.xml
messages.json
dist/
.env
persist/

View file

@ -1,25 +0,0 @@
FROM node:20.12.2-alpine
RUN apk update > /dev/null && apk add git > /dev/null
RUN git clone https://git.povario.com/powermaker450/Tailchat-Assistant app > /dev/null
WORKDIR /app
RUN npm i && npm run build
ENV HOST="http://localhost:11000"
ENV ID=""
ENV SECRET=""
ENV API_ENDPOINT="http://localhost:8080/v1"
ENV API_KEY="none"
ENV TEXT_MODEL="gpt-4"
ENV CREATE_IMAGE_MODEL="stablediffusion-cpp"
ENV ANALYZE_IMAGE_MODEL="gpt-4-vision-preview"
ENV TEMPERATURE=1
ENV ALLOWED_CHAT=""
ENV SAFE_WORD="\\"
COPY ./entrypoint.sh ./entrypoint.sh
RUN chmod +x ./entrypoint.sh
ENTRYPOINT ["sh", "-c", "./entrypoint.sh"]

View file

@ -1,20 +0,0 @@
services:
assistant:
container_name: tailchat_assistant
image: tailchat_assistant
build:
context: .
env_file: ".env"
environment:
- HOST=${HOST}
- ID=${ID}
- SECRET=${SECRET}
- API_ENDPOINT=${API_ENDPOINT}
- API_KEY=${API_KEY}
- TEXT_MODEL=${TEXT_MODEL}
- CREATE_IMAGE_MODEL=${CREATE_IMAGE_MODEL}
- ANALYZE_IMAGE_MODEL=${ANALYZE_IMAGE_MODEL}
- ALLOWED_CHAT=${ALLOWED_CHAT}
- SAFE_WORD=${SAFE_WORD}
volumes:
- ./persist:/app/persist

View file

@ -1,16 +0,0 @@
cd /app
echo "" > .env && \
echo "HOST=$HOST" >> .env && \
echo "ID=$ID" >> .env && \
echo "SECRET=$SECRET" >> .env && \
echo "API_ENDPOINT=$API_ENDPOINT" >> .env && \
echo "API_KEY=$API_KEY" >> .env && \
echo "TEXT_MODEL=$TEXT_MODEL" >> .env && \
echo "CREATE_IMAGE_MODEL=$CREATE_IMAGE_MODEL" >> .env && \
echo "ANALYZE_IMAGE_MODEL=$ANALYZE_IMAGE_MODEL" >> .env && \
echo "TEMPERATURE=$TEMPERATURE" >> .env && \
echo "ALLOWED_CHAT=$ALLOWED_CHAT" >> .env && \
echo "SAFE_WORD=$SAFE_WORD" >> .env
npm run start

View file

@ -38,7 +38,7 @@ if (!allVarsFilled) {
}
// Define the initial system message for the LLM.
const session = new GuildData(checkFile("messages.json", "utf-8"));
const session = new GuildData(checkFile("./messages.json", "utf-8"));
session.data.toString()
? console.log("Our conversation is:", session.data)
@ -146,7 +146,7 @@ client.connect().then(async () => {
});
fs.writeFileSync(
"messages.json",
"./messages.json",
JSON.stringify(session.data),
"utf8",
);
@ -181,7 +181,7 @@ client.connect().then(async () => {
});
fs.writeFileSync(
"messages.json",
"./messages.json",
JSON.stringify(session.data),
"utf8",
);
@ -223,7 +223,11 @@ client.connect().then(async () => {
content: `[md]${contentOf(response)}[/md]`,
});
fs.writeFileSync("messages.json", JSON.stringify(session.data), "utf8");
fs.writeFileSync(
"./messages.json",
JSON.stringify(session.data),
"utf8",
);
} catch (err) {
console.log("Failed", err);

View file

@ -5,7 +5,9 @@ import {
ChatCompletionSystemMessageParam,
} from "openai/resources";
import { TailchatWsClient } from "tailchat-client-sdk";
import { formatNewHistory } from "./utils";
import { ChatMessage } from "tailchat-types";
import { formatNewHistory, formatUserMessage, getUsername } from "./utils";
import { HOST } from "./bot";
import chalk from "chalk";
export interface ImageMessage {

View file

@ -1,6 +1,7 @@
import * as fs from "fs";
import {
AnyChatCompletion,
AnyChatCompletionRole,
ChatHistory,
ChatHistoryData,
ImageMessage,
@ -8,22 +9,61 @@ import {
import { system } from "./assistant";
import { ChatCompletion, ChatCompletionMessage } from "openai/resources";
import { stripMentionTag } from "tailchat-client-sdk";
import { ChatMessage } from "tailchat-types";
import { HOST } from "./bot";
import chalk from "chalk";
//export function checkFile(
// file: string,
// encoding: fs.EncodingOption,
// defaultContent: string,
//): Messages {
// let final: Messages;
// const generic: Messages = [
// {
// role: "system",
// content: defaultContent,
// },
// ];
//
// if (fs.existsSync(file)) {
// const data = fs.readFileSync(file, encoding);
//
// final = !data.toString().trim() ? generic : JSON.parse(data.toString());
// } else {
// fs.createWriteStream(file);
// final = generic;
// }
//
// return final;
//}
export function checkFile(
file: string,
encoding: fs.EncodingOption,
): ChatHistory {
const dirname = "./persist/";
const fullPath = dirname + file;
let final: ChatHistory;
if (fs.existsSync(fullPath)) {
const data = fs.readFileSync(fullPath, encoding);
if (fs.existsSync(file)) {
const data = fs.readFileSync(file, encoding);
final = !data.toString().trim() ? [] : JSON.parse(data.toString());
try {
// @ts-ignore
if (final.at(0).role) {
console.warn(
chalk.yellow(
"Your persistent storage uses the old data structure for persistent messages. These messages will be moved to a backup file and the existing file will be overwritten.",
),
);
fs.writeFileSync(`${file}.bak`, data);
final = [];
}
} catch {}
} else {
fs.mkdirSync(dirname);
fs.createWriteStream(fullPath);
fs.createWriteStream(file);
final = [];
}