Closed boygoboy closed 1 year ago
Hi @boygoboy! The contextual dialogue feature works just fine with me. Let me have a look at your code.
Hi @boygoboy! The contextual dialogue feature works just fine with me. Let me have a look at your code.
Thank you, haha I understand, the conversationId of the same group of contextual conversations cannot be changed, I thought this conversationId was the id of the previous conversation
Thank you, haha I understand, the conversationId of the same group of contextual conversations cannot be changed, I thought this conversationId was the id of the previous conversation
So now is it fixed?
this is an example on how you can get conversations, you don't need to load the saved file,
also, you must create the bot instance a single time, so you need to create it outside the bardUnofficalChat
function
const { Bard } = await import("googlebard")
let cookies = `__Secure-1PSID=${process.env.BARD_AUTH}`;
let bot = new Bard(cookies, {
inMemory: false, // optional: if true, it will not save conversations to disk
savePath: "./chatjson/conversations.json", // optional: path to save conversations
});
const bardUnofficalChat = async (req, res) => {
let { message, isfirst } = req.body
let conversationId = ''; // optional: to make it remember the conversation
if (isfirst) {
conversationId = Date.now()
} else {
let allConversations = bot.getAllConversations()
conversationId = allConversations[allConversations.length - 1].id
}
let response = await bot.ask(message, conversationId); // conversationId is optional
console.log(response);
res.json({
data: response
})
}
module.exports = {
bardUnofficalChat
}
however its better to use a static conversation id instead of getting the last conversation id like this example, instead of isfirst it will send a unique id with the request and it will be remain in the same conversation
const { Bard } = await import("googlebard")
let cookies = `__Secure-1PSID=${process.env.BARD_AUTH}`;
let bot = new Bard(cookies, {
inMemory: false, // optional: if true, it will not save conversations to disk
savePath: "./chatjson/conversations.json", // optional: path to save conversations
});
const bardUnofficalChat = async (req, res) => {
let { message, convId } = req.body
let response = await bot.ask(message, convId); // conversationId is optional
console.log(response);
res.json({
data: response
})
}
module.exports = {
bardUnofficalChat
}
Thank you, I understand. I read the usage of bing before (https://github.com/waylaidwanderer/node-chatgpt-api/blob/main/demos/use-bing-client.js) and misunderstood that bard also needs a dialogue messageId
Sorry for the delay @boygoboy! I refactored your code a bit and the contextual dialogue things works for me. Let me know if it does for you too.
const chatjson = require("../../chatjson/conversations.json"); const bardUnofficalChat = async (req, res) => { let { message, isfirst } = req.body; const { Bard } = await import("googlebard"); let cookies = `__Secure-1PSID=${process.env.BARD_AUTH}`; let bot = new Bard(cookies, { inMemory: false, savePath: "../../chatjson/conversations.json", //both paths should be same }); let conversationId = ""; if (isfirst) { conversationId = Date.now(); } else { conversationId = chatjson.conversations.rows[chatjson.conversations.rows.length - 1].id; } let response = await bot.ask(message, conversationId); console.log(response); res.json({ data: response, }); }; module.exports = { bardUnofficalChat, };
One improvement I can think of is to use the built-in
bot.getAllConversations()
as mentioned by @/PawanOsman method instead of using the json file yourself.Hope this answer resolves your issue!
chatjson.conversations.rows[chatjson.conversations.rows.length - 1].id;
The conversationId obtained by the above writing method is always the first conversation id, which is actually equivalent to the static conversation id written by the author. It is better to use the static conversation id written by the author.
Hello, this is my case of trying to use contextual dialog:
But it is not possible to carry out contextual dialogue. Please tell me how to use the correct usage. The cases in the document are not very clear.