mirror of
https://github.com/ReVanced/revanced-bots.git
synced 2026-01-19 17:23:59 +00:00
feat: add wit.ai support
This commit is contained in:
@@ -2,13 +2,7 @@
|
||||
"server": {
|
||||
"port": 3000
|
||||
},
|
||||
|
||||
"transformers": {
|
||||
"model": "./model.onnx",
|
||||
"tokenizer": "./tokenizer.json",
|
||||
"instruction": "Instruction: given a dialog context and related knowledge, you need to answer the question based on the knowledge.",
|
||||
"knowledge": [
|
||||
"ReVanced is a generic patcher that allows you to modify the behavior of any Dalvik based Android application"
|
||||
]
|
||||
"witAI": {
|
||||
"authToken": "AUTH-TOKEN"
|
||||
}
|
||||
}
|
||||
|
||||
@@ -1,24 +1,19 @@
|
||||
import { serialize } from 'bson';
|
||||
|
||||
async function generateResponse(tokenizer, model, config, dialog) {
|
||||
const knowledge = `[KNOWLEDGE] ${config.knowledge.join(' ')}`;
|
||||
const context = `[CONTEXT] ${dialog.substring(0, 64)}`;
|
||||
export default async function runAI(client, data, config) {
|
||||
const witAIReq = await fetch(`https://api.wit.ai/message?v20230319&q=${encodeURI(data.text)}`, {
|
||||
headers: {
|
||||
authorization: `Bearer ${config.authToken}`
|
||||
}
|
||||
});
|
||||
|
||||
const query = `${config.instruction} ${context} ${knowledge}`;
|
||||
|
||||
const inputTokenIds = tokenizer.encode(query);
|
||||
const outputTokenIds = await model.generate(inputTokenIds, { maxLength: 64, topK: 10 });
|
||||
return await tokenizer.decode(outputTokenIds, true);
|
||||
}
|
||||
|
||||
export default async function runAI(client, data, tokenizer, model, config) {
|
||||
const response = await generateResponse(tokenizer, model, config, data.text);
|
||||
const response = await witAIReq.json();
|
||||
|
||||
client.write(
|
||||
serialize({
|
||||
op: 2,
|
||||
id: data.id,
|
||||
response
|
||||
response: response.intents
|
||||
})
|
||||
);
|
||||
|
||||
|
||||
@@ -1,21 +1,10 @@
|
||||
import { readFileSync } from 'node:fs';
|
||||
// Fix __dirname not being defined in ES modules. (https://stackoverflow.com/a/64383997)
|
||||
import { fileURLToPath } from 'node:url';
|
||||
import { dirname } from 'node:path';
|
||||
|
||||
const __filename = fileURLToPath(import.meta.url);
|
||||
const __dirname = dirname(__filename);
|
||||
|
||||
const config = JSON.parse(readFileSync('./config.json', 'utf-8'));
|
||||
|
||||
import { createServer } from 'node:net';
|
||||
import { deserialize } from 'bson';
|
||||
import transformers from 'transformers-nodejs';
|
||||
import { runAI, runOCR } from './events/index.js';
|
||||
|
||||
const tokenizer = await transformers.AutoTokenizer.fromPretrained(config.transformers.tokenizer);
|
||||
const model = await transformers.AutoModelForSeq2SeqLM.fromPretrained(config.transformers.model);
|
||||
|
||||
const server = createServer(async (client) => {
|
||||
client.on('data', async (data) => {
|
||||
const eventData = deserialize(data, {
|
||||
@@ -24,7 +13,7 @@ const server = createServer(async (client) => {
|
||||
|
||||
switch (eventData.op) {
|
||||
case 1: {
|
||||
runAI(client, eventData, tokenizer, model, config.transformers);
|
||||
runAI(client, eventData, config.witAI);
|
||||
break;
|
||||
}
|
||||
|
||||
|
||||
Reference in New Issue
Block a user