Skip to main content

Python Client for Bard.

Project description

Bard.py

Latest Release Python MIT License

Python Client for Bard, a Chat Based AI tool by Google.

[!NOTE] This is an unofficial client.

Features

  • Connect to Bard, Google's AI-powered personal assistant.
  • Ask questions and have a conversation.
  • Improve responses by defining the conversation tone and length.
  • Use asyncio for efficient and non-blocking I/O operations.

Requirements

  • Python 3.10 or newer
  • Google account with access to Bard

Installation

To install Bard.py, run the following command:

pip install bard-py

or, if you use poetry:

poetry add bard-py

[!TIP] Make sure you're using the latest version of Bard.py to ensure best compatibility with Bard.

Usage

Prerequisites

To use Bard.py you first need to extract the __Secure-1PSID and __Secure-1PSIDTS cookies from the Bard web page. These cookies are used to authenticate your requests to the Bard API.

To get the cookies, follow these steps on Chrome:

  • Go to the Bard web page.
  • Write a message on the chat dialog that appears.
  • Open the developer tools in your browser (usually by pressing F12 or right-clicking on the chat dialog and selecting Inspect).
  • Select the Application tab and click on the Cookies option to view all cookies associated with https://bard.google.com.
  • Look for the __Secure-1PSID and __Secure-1PSIDTS cookies and click on them to expand their details.
  • Copy the values of the cookies (they should look like a long string of letters and numbers).

Then, set them as environment variables in your shell:

export SECURE_1PSID=<your-cookie>
export SECURE_1PSIDTS=<your-other-cookie>

or, in your Python code:

os.environ["SECURE_1PSID"] = "<your-cookie>"
os.environ["SECURE_1PSIDTS"] = "<your-other-cookie>"

Example

You can use Bard.py to easily create a CLI client for Bard:

import asyncio

from bard import BardClient


async def main() -> None:
    async with BardClient() as bard:
        while True:
            prompt = input("You: ")

            if prompt == "!reset":
                await bard.reset_conversation()
                continue
            elif prompt == "!exit":
                break

            response = await bard.ask(prompt)
            print(f"Bard: {response}")


if __name__ == "__main__":
    asyncio.run(main())

Bard Client

You can create a Bard Client and initialize a connection with Bard which starts a conversation:

bard = BardClient()

await bard.start_conversation()

# Conversation

await bard.end_conversation()

Alternatively, you can use the async with statement to keep the code compact:

async with BardClient() as bard:
    # Conversation

Reset Conversation

You can reset the conversation in order to make the client forget the previous conversation:

async with BardClient() as bard:
    # Conversation
    await bard.reset_conversation()

Ask

You can ask Bard questions and get the results:

async with BardClient() as bard:
    response = await bard.ask("When was Bard released?")
    print(response)

Tone

You can set the tone when having a conversation with Bard:

async with BardClient() as bard:
    _ = await bard.ask("When was Bard released?")

    response = await bard.ask("When was Bard released?", tone="Professional")
    print(response)

The available options for the tone parameter are:

  • Professional
  • Casual

[!NOTE] It is recommended to use the tone parameter on subsequent prompts and not in the first one. This is because this feature is typically used to change the previous response, rather than define the entire conversation tone.

Length

You can set the response length when having a conversation with Bard:

async with BardClient() as bard:
    _ = await bard.ask("When was Bard released?")

    response = await bard.ask("When was Bard released?", length="Short")
    print(response)

The available options for the length parameter are:

  • Short
  • Long

[!NOTE] It is recommended to use the length parameter on subsequent prompts and not in the first one. This is because this feature is typically used to change the previous response, rather than define the entire conversation length.

Exceptions

When something goes wrong, Sydney.py might throw one of the following exceptions:

Exception Meaning Solution
CreateConversationException Failed to create conversation Retry or use new cookies
AskException Failed to get response from Bard Retry or use new cookies
NoResponseException Received an empty response from Bard Wait and retry

For more detailed documentation and options, please refer to the code docstrings.

License

This project is licensed under the MIT License - see the LICENSE file for details.

Project details


Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

bard_py-0.4.0.tar.gz (6.4 kB view details)

Uploaded Source

Built Distribution

bard_py-0.4.0-py3-none-any.whl (7.4 kB view details)

Uploaded Python 3

File details

Details for the file bard_py-0.4.0.tar.gz.

File metadata

  • Download URL: bard_py-0.4.0.tar.gz
  • Upload date:
  • Size: 6.4 kB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.10.10 Linux/6.1.62-1-lts

File hashes

Hashes for bard_py-0.4.0.tar.gz
Algorithm Hash digest
SHA256 191e3ef302e65a43ffa28b88c997d03e105bed43a25f2608ab4d61524c2af0e7
MD5 b41dc43c654d9aecba8a38223b28f17b
BLAKE2b-256 df39a782fbb9e12ad2ef8820702f00295700bbd4d06b3975cac60586124e35af

See more details on using hashes here.

File details

Details for the file bard_py-0.4.0-py3-none-any.whl.

File metadata

  • Download URL: bard_py-0.4.0-py3-none-any.whl
  • Upload date:
  • Size: 7.4 kB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.7.0 CPython/3.10.10 Linux/6.1.62-1-lts

File hashes

Hashes for bard_py-0.4.0-py3-none-any.whl
Algorithm Hash digest
SHA256 d074d4e34c89817d4790548280a1b71924cb8e23703a03e5c3bcaebed4470ed4
MD5 d0fc1ec076044ce2aa62d2ed36f66d6a
BLAKE2b-256 8bbb6f43d0881731dbeb0a094cebd597805528cc9935b0d115f82972cd738eb9

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page