Ecosyste.ms: Awesome

An open API service indexing awesome lists of open source software.

Awesome Lists | Featured Topics | Projects

https://github.com/PawanOsman/GoogleBard

GoogleBard - A reverse engineered API for Google Bard chatbot for NodeJS
https://github.com/PawanOsman/GoogleBard

ai api assistant assistant-chat-bots chatgpt google google-bard prompt reverse-engineering scraping

Last synced: 3 months ago
JSON representation

GoogleBard - A reverse engineered API for Google Bard chatbot for NodeJS

Awesome Lists containing this project

README

        

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.




npm version





GitHub issues


GitHub forks










## Table Of Contents
- [Features](#features)
- [Prerequisites](#prerequisite---how-to-get-cookies)
- [Installation](#installation)
- [Documentation](#documentation)
- [Examples](#examples)


## 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?*
1. Install [Cookie-Editor](https://cookie-editor.cgagnier.ca/) extension.
2. Go to https://bard.google.com and login.
3. 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`.
4. Paste the cookie in your code.


## Installation
To install the package, run the following command:

```bash
npm install googlebard
```


## Documentation
### 1. How To Initialise The Bot?
```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
let bot = new Bard(cookies);

// other code - scroll below to view different functionalities available
```


### 2. How To Configure Bot With Optional Settings?
1. `inMemory`: optional - if true will not save conversations to disk
2. `savePath`: optional - path to save conversations (e.g './conversations.json')
3. `proxy`: optional - handles proxy configurations

```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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(, :optional)` functionality. A usage of it is given below:

```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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

```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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...
```

```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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(, , :optional)`. A usage of it is given below:

```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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()` 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:
```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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.
```

```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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:
```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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?
```js
import { Bard } from "googlebard";

let cookies = `__Secure-1PSID=`;
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!