Python Client for Bard.
Project description
Bard.py
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
F12or right-clicking on the chat dialog and selectingInspect). - Select the
Applicationtab and click on theCookiesoption to view all cookies associated withhttps://bard.google.com. - Look for the
__Secure-1PSIDand__Secure-1PSIDTScookies 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:
ProfessionalCasual
[!NOTE] It is recommended to use the
toneparameter 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:
ShortLong
[!NOTE] It is recommended to use the
lengthparameter 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
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
191e3ef302e65a43ffa28b88c997d03e105bed43a25f2608ab4d61524c2af0e7
|
|
| MD5 |
b41dc43c654d9aecba8a38223b28f17b
|
|
| BLAKE2b-256 |
df39a782fbb9e12ad2ef8820702f00295700bbd4d06b3975cac60586124e35af
|
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
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
d074d4e34c89817d4790548280a1b71924cb8e23703a03e5c3bcaebed4470ed4
|
|
| MD5 |
d0fc1ec076044ce2aa62d2ed36f66d6a
|
|
| BLAKE2b-256 |
8bbb6f43d0881731dbeb0a094cebd597805528cc9935b0d115f82972cd738eb9
|