GoogleBard
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.
Table Of Contents
Features
- 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.
Prerequisite - How to get cookies?*
- 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.
Installation
To install the package, run the following command:
npm install googlebard
Documentation
1. How To Initialise The Bot?
import { Bard } from "googlebard";
let cookies = `__Secure-1PSID=<YOUR_COOKIE>`;
let bot = new Bard(cookies);
// other code - scroll below to view different functionalities available
2. How To Configure Bot With Optional Settings?
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
3. How To Ask Bot?
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...
conversation_id
again will allow the bot to remember what you said earlier in the conversation
Using the same 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.
4. How To Ask Bot And Simulate Response Streaming?
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.
Response streaming functionality is used to show as if the bot itself is typing
5. How To Reset A Conversation?
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...
6. How To Get All Your Previous Conversations?
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
7. How To Get A Single Conversation By ID?
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
Examples
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!