separation of concerns
This commit is contained in:
20
src/main.ts
20
src/main.ts
@ -26,7 +26,7 @@ export const prisma = new PrismaClient();
|
||||
export const envConfig = {
|
||||
pleromaInstanceUrl: process.env.PLEROMA_INSTANCE_URL || "",
|
||||
pleromaInstanceDomain: process.env.PLEROMA_INSTANCE_DOMAIN || "",
|
||||
whitelistOnly: process.env.ONLY_WHITELIST === "true" ? true : false || "true",
|
||||
whitelistOnly: process.env.ONLY_WHITELIST === "true" ? true : false,
|
||||
whitelistedDomains: process.env.WHITELISTED_DOMAINS
|
||||
? process.env.WHITELISTED_DOMAINS.split(",")
|
||||
: [process.env.PLEROMA_INSTANCE_DOMAIN],
|
||||
@ -42,9 +42,14 @@ export const envConfig = {
|
||||
};
|
||||
|
||||
const ollamaConfig: OllamaConfigOptions = {
|
||||
temperature: 1.2,
|
||||
temperature: 1.4,
|
||||
top_k: 100,
|
||||
top_p: 0.8,
|
||||
};
|
||||
|
||||
// this could be helpful
|
||||
// https://replicate.com/blog/how-to-prompt-llama
|
||||
|
||||
const generateOllamaRequest = async (
|
||||
notification: Notification
|
||||
): Promise<OllamaResponse | undefined> => {
|
||||
@ -68,9 +73,9 @@ const generateOllamaRequest = async (
|
||||
const ollamaRequestBody: OllamaRequest = {
|
||||
model: ollamaModel,
|
||||
system: ollamaSystemPrompt,
|
||||
prompt: `@${notification.status.account.fqn} says: ${trimInputData(
|
||||
notification.status.content
|
||||
)}`,
|
||||
prompt: `[INST] @${
|
||||
notification.status.account.fqn
|
||||
} says: ${trimInputData(notification.status.content)} [/INST]`,
|
||||
stream: false,
|
||||
options: ollamaConfig,
|
||||
};
|
||||
@ -162,4 +167,9 @@ console.log(
|
||||
console.log(
|
||||
`Accepting prompts from: ${envConfig.whitelistedDomains.join(", ")}`
|
||||
);
|
||||
console.log(
|
||||
`Using model: ${envConfig.ollamaModel}\nConfig: ${JSON.stringify(
|
||||
ollamaConfig
|
||||
)}`
|
||||
);
|
||||
await beginFetchCycle();
|
||||
|
@ -2,7 +2,6 @@ import striptags from "striptags";
|
||||
import { prisma } from "./main.js";
|
||||
import { envConfig } from "./main.js";
|
||||
import { Notification } from "../types.js";
|
||||
import { deleteNotification } from "./api.js";
|
||||
|
||||
const trimInputData = (input: string): string => {
|
||||
const strippedInput = striptags(input);
|
||||
@ -26,9 +25,7 @@ const recordPendingResponse = async (notification: Notification) => {
|
||||
}
|
||||
};
|
||||
|
||||
const isFromWhitelistedDomain = async (
|
||||
notification: Notification
|
||||
): Promise<boolean> => {
|
||||
const isFromWhitelistedDomain = (notification: Notification): boolean => {
|
||||
try {
|
||||
const domain = notification.status.account.fqn.split("@")[1];
|
||||
if (envConfig.whitelistedDomains.includes(domain)) {
|
||||
@ -37,8 +34,6 @@ const isFromWhitelistedDomain = async (
|
||||
console.log(
|
||||
`Rejecting prompt request from non-whitelisted domain: ${domain}`
|
||||
);
|
||||
// delete the notification so we don't keep trying to fetch it
|
||||
await deleteNotification(notification);
|
||||
return false;
|
||||
} catch (error: any) {
|
||||
console.error(`Error with domain check: ${error.message}`);
|
||||
|
Reference in New Issue
Block a user