An NPM module for creating GoogleBard chatbot using Bard's reverse-engineered API. With reverse-engineered API functionalities, it empowers developers to harness the full potential of Bard.
- Simulating Response Streaming: The package simulates response streaming, allowing you to get the response as soon as it is available.
- Multiple Conversations: The package supports multiple conversations, allowing you to have multiple parallel conversations with the chatbot.
- Proxy Support: The package supports proxies, allowing you to use the chatbot from any location.
- Lightweight: The package is very lightweight, making it easy to use and integrate into your projects.
- Install Cookie-Editor extension.
- Go to https://bard.google.com and login.
- Click on the extension icon and copy a cookie starting with
__Secure-{account_number}PSID
.- For example,
__Secure-1PSID
- Ensure you are copying the correct cookie corresponding to the account number, which can be found in the URL as
bard.google.com/u/{account_number}
. - If your account number is
/u/2
, search for the cookie named__Secure-2PSID
. - If your account number is
/u/3
, search for the cookie named__Secure-3PSID
.
- For example,
- Paste the cookie in your code.
To install the package, run the following command:
npm install googlebard
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies);
// other code - scroll below to view different functionalities available
inMemory
: optional - if true will not save conversations to disksavePath
: optional - path to save conversations (e.g './conversations.json')proxy
: optional - handles proxy configurations
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
inMemory: false,
savePath: "./conversations.json",
proxy: {
host: process.env.PROXY_HOST,
port: process.env.PROXY_PORT,
auth: {
username: process.env.PROXY_USERNAME,
password: process.env.PROXY_PASSWORD,
},
protocol: "http",
},
});
// other code
To ask bot questions, you may use the bot.ask(<prompt>, <conversation_id>:optional)
functionality. A usage of it is given below:
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies);
let conversationId = "some_random_id"; // optional: to make it remember the conversation
let response = await bot.ask("What is my name?", conversationId); // conversationId is optional
console.log(response);
>> I don't know your name. I am a large language model, also known as a conversational AI or cha...
Using the same conversation_id
again will allow the bot to remember what you said earlier in the conversation
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
inMemory: false,
savePath: "./conversations.json", // this is being done to save crucial information about the conversation so the bot remembers it
});
let conversationId = "test_id";
let response = await bot.ask("My name is Mehul", conversationId);
console.log(response);
>> Hi Mehul, it's nice to meet you! I'm Bard...
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
inMemory: false,
savePath: "./conversations.json",
});
let conversationId = "test_id";
let response = await bot.ask("What is my name?", conversationId)
console.log(response);
>> I know your name is Mehul. You told me earlier.
To ask bot questions and simulate response streaming, you can either implement it through custom logic or use the built-in bot.askStream(<callback>, <content>, <conversation_id>:optional)
. A usage of it is given below:
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
inMemory: false,
savePath: "./conversations.json",
});
let conversationId = "test_id";
await bot.askStream(
(res) => {
console.log(res);
}, // returns the response
"Hello?",
conversationId,
);
>> Your
name
is
Mehul.
I
will
remember
that
for
the
next
time
we
speak.
To reset a conversation, you may use the bot.resetConversation(<conversation_id>)
functionality. This functionality allows the user to make the bot forget about previous conversations provided they are all under the same conversation_id
. A usage of it is given below:
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
inMemory: false,
savePath: "./conversations.json",
});
let conversationId = "test_id"; // notice id is the same as that used in the above example
let response = await bot.ask("what is my name?", conversationId);
console.log(response);
>> You told me your name is Mehul.
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
inMemory: false,
savePath: "./conversations.json",
});
let conversationId = "test_id";
bot.resetConversation(conversationId) // resetting conversation
let response = await bot.ask("what is my name?", conversationId);
console.log(response);
>> I understand that you are trying to get me to say your name, but...
In order to retrieve all your conversations, you may either implement the functionality through a custom logic or simply use the built-in bot.getAllConversations()
. .A usage of it is given below:
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
savePath: "./conversations.json",
});
let response = bot.getAllConversations()
console.log(response) // returns an array of different conversations
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies, {
inMemory: false,
savePath: "./conversations.json",
});
let conversationId = "test_id";
await bot.waitForLoad();
let response = bot.getConversationById(conversationId);
console.log(response); // returns an object
A simple example has been added to the examples
directory which shows how GoogleBard can be used to create a CLI chatbot. More such examples are yet to be added, so stay tuned!