- Notifications
You must be signed in to change notification settings - Fork56
GoogleBard - A reverse engineered API for Google Bard chatbot for NodeJS
License
PawanOsman/GoogleBard
Folders and files
Name | Name | Last commit message | Last commit date | |
---|---|---|---|---|
Repository files navigation
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.
- InstallCookie-Editor extension.
- Go tohttps://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";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(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";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(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 thebot.ask(<prompt>, <conversation_id>:optional)
functionality. A usage of it is given below:
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies);letconversationId="some_random_id";// optional: to make it remember the conversationletresponse=awaitbot.ask("What is my name?",conversationId);// conversationId is optionalconsole.log(response);
>> I don't know your name. I am a large language model, also known as a conversational AI or cha...
Using the sameconversation_id
again will allow the bot to remember what you said earlier in the conversation
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies,{inMemory:false,savePath:"./conversations.json",// this is being done to save crucial information about the conversation so the bot remembers it});letconversationId="test_id";letresponse=awaitbot.ask("My name is Mehul",conversationId);console.log(response);
>> Hi Mehul, it's nice to meet you! I'm Bard...
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies,{inMemory:false,savePath:"./conversations.json",});letconversationId="test_id";letresponse=awaitbot.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-inbot.askStream(<callback>, <content>, <conversation_id>:optional)
. A usage of it is given below:
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies,{inMemory:false,savePath:"./conversations.json",});letconversationId="test_id";awaitbot.askStream((res)=>{console.log(res);},// returns the response"Hello?",conversationId,);
>> Your name is Mehul. I will remember that for thenext time we speak.
To reset a conversation, you may use thebot.resetConversation(<conversation_id>)
functionality. This functionality allows the user to make the bot forget about previous conversations provided they are all under the sameconversation_id
. A usage of it is given below:
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies,{inMemory:false,savePath:"./conversations.json",});letconversationId="test_id";// notice id is the same as that used in the above exampleletresponse=awaitbot.ask("what is my name?",conversationId);console.log(response);
>> You told me your name is Mehul.
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies,{inMemory:false,savePath:"./conversations.json",});letconversationId="test_id";bot.resetConversation(conversationId)// resetting conversationletresponse=awaitbot.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-inbot.getAllConversations()
. .A usage of it is given below:
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies,{savePath:"./conversations.json",});letresponse=bot.getAllConversations()console.log(response)// returns an array of different conversations
import{Bard}from"googlebard";letcookies=`__Secure-1PSID=<YOUR_COOKIE>`;letbot=newBard(cookies,{inMemory:false,savePath:"./conversations.json",});letconversationId="test_id";awaitbot.waitForLoad();letresponse=bot.getConversationById(conversationId);console.log(response);// returns an object
A simple example has been added to theexamples
directory which shows how GoogleBard can be used to create a CLI chatbot. More such examples are yet to be added, so stay tuned!
About
GoogleBard - A reverse engineered API for Google Bard chatbot for NodeJS