2023-03-08 19:47:23 -05:00
|
|
|
require('dotenv').config();
|
|
|
|
|
const { KeyvFile } = require('keyv-file');
|
|
|
|
|
|
|
|
|
|
const askSydney = async ({ text, progressCallback, convo }) => {
|
2023-03-10 07:43:43 -05:00
|
|
|
const { BingAIClient } = await import('@waylaidwanderer/chatgpt-api');
|
2023-03-08 19:47:23 -05:00
|
|
|
|
2023-03-10 07:43:43 -05:00
|
|
|
const clientOptions = {
|
2023-03-08 19:47:23 -05:00
|
|
|
userToken: process.env.BING_TOKEN,
|
|
|
|
|
debug: false,
|
2023-03-08 21:06:58 -05:00
|
|
|
cache: { store: new KeyvFile({ filename: './data/cache.json' }) }
|
2023-03-10 07:43:43 -05:00
|
|
|
};
|
|
|
|
|
|
|
|
|
|
const cookies = process.env.BING_COOKIES;
|
|
|
|
|
|
|
|
|
|
if (cookies?.length > 0) {
|
|
|
|
|
clientOptions.cookies = cookies;
|
|
|
|
|
delete clientOptions.userToken;
|
|
|
|
|
}
|
|
|
|
|
|
|
|
|
|
const sydneyClient = new BingAIClient(clientOptions);
|
2023-03-08 19:47:23 -05:00
|
|
|
|
|
|
|
|
let options = {
|
|
|
|
|
jailbreakConversationId: true,
|
2023-03-10 07:43:43 -05:00
|
|
|
onProgress: async (partialRes) => await progressCallback(partialRes)
|
2023-03-08 19:47:23 -05:00
|
|
|
};
|
|
|
|
|
|
2023-03-08 21:06:58 -05:00
|
|
|
if (convo.parentMessageId) {
|
2023-03-10 07:43:43 -05:00
|
|
|
options = {
|
|
|
|
|
...options,
|
|
|
|
|
jailbreakConversationId: convo.jailbreakConversationId,
|
|
|
|
|
parentMessageId: convo.parentMessageId
|
|
|
|
|
};
|
2023-03-08 19:47:23 -05:00
|
|
|
}
|
|
|
|
|
|
2023-03-08 21:06:58 -05:00
|
|
|
console.log('sydney options', options);
|
|
|
|
|
|
2023-03-10 07:43:43 -05:00
|
|
|
const res = await sydneyClient.sendMessage(text, options);
|
2023-03-08 19:47:23 -05:00
|
|
|
|
|
|
|
|
return res;
|
|
|
|
|
|
|
|
|
|
// for reference:
|
|
|
|
|
// https://github.com/waylaidwanderer/node-chatgpt-api/blob/main/demos/use-bing-client.js
|
|
|
|
|
};
|
|
|
|
|
|
|
|
|
|
module.exports = { askSydney };
|