npm package discovery and stats viewer.

Discover Tips

  • General search

    [free text search, go nuts!]

  • Package details

    pkg:[package-name]

  • User packages

    @[username]

Sponsor

Optimize Toolset

I’ve always been into building performant and accessible sites, but lately I’ve been taking it extremely seriously. So much so that I’ve been building a tool to help me optimize and monitor the sites that I build to make sure that I’m making an attempt to offer the best experience to those who visit them. If you’re into performant, accessible and SEO friendly sites, you might like it too! You can check it out at Optimize Toolset.

About

Hi, 👋, I’m Ryan Hefner  and I built this site for me, and you! The goal of this site was to provide an easy way for me to check the stats on my npm packages, both for prioritizing issues and updates, and to give me a little kick in the pants to keep up on stuff.

As I was building it, I realized that I was actually using the tool to build the tool, and figured I might as well put this out there and hopefully others will find it to be a fast and useful way to search and browse npm packages as I have.

If you’re interested in other things I’m working on, follow me on Twitter or check out the open source projects I’ve been publishing on GitHub.

I am also working on a Twitter bot for this site to tweet the most popular, newest, random packages from npm. Please follow that account now and it will start sending out packages soon–ish.

Open Software & Tools

This site wouldn’t be possible without the immense generosity and tireless efforts from the people who make contributions to the world and share their work via open source initiatives. Thank you 🙏

© 2024 – Pkg Stats / Ryan Hefner

googlebard

v1.0.7

Published

A reverse engineered API for Google Bard chatbot

Downloads

2,654

Readme

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?*

  1. Install Cookie-Editor 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:

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?

  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
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...
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.

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!