Ecosyste.ms: Awesome
An open API service indexing awesome lists of open source software.
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
- Host: GitHub
- URL: https://github.com/PawanOsman/GoogleBard
- Owner: PawanOsman
- License: mit
- Created: 2023-03-22T10:44:56.000Z (over 1 year ago)
- Default Branch: main
- Last Pushed: 2024-01-11T06:38:45.000Z (10 months ago)
- Last Synced: 2024-07-11T04:34:48.178Z (4 months ago)
- Topics: ai, api, assistant, assistant-chat-bots, chatgpt, google, google-bard, prompt, reverse-engineering, scraping
- Language: TypeScript
- Homepage: https://bard.google.com
- Size: 78.1 KB
- Stars: 415
- Watchers: 7
- Forks: 58
- Open Issues: 15
-
Metadata Files:
- Readme: README.md
- License: LICENSE
Awesome Lists containing this project
- awesome - PawanOsman/GoogleBard - GoogleBard - A reverse engineered API for Google Bard chatbot for NodeJS (TypeScript)
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.
## 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 conversationlet 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 conversationlet 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!