Metadata-Version: 2.1
Name: bondable
Version: 0.1.4
Summary: Bond AI is and SDK and UI for working with agents built using the OpenAI Assistants API
Home-page: https://github.com/jmcarnahan/bond-ai
License: MIT
Author: jmcarnahan
Author-email: jmcarny@gmail.com
Requires-Python: >=3.13,<4.0
Classifier: License :: OSI Approved :: MIT License
Classifier: Programming Language :: Python :: 3
Classifier: Programming Language :: Python :: 3.13
Requires-Dist: google-api-python-client (>=2.163.0,<3.0.0)
Requires-Dist: google-auth (>=2.38.0,<3.0.0)
Requires-Dist: google-auth-httplib2 (>=0.2.0,<0.3.0)
Requires-Dist: google-auth-oauthlib (>=1.2.1,<2.0.0)
Requires-Dist: google-cloud-firestore (>=2.20.0,<3.0.0)
Requires-Dist: google-cloud-secret-manager (>=2.23.1,<3.0.0)
Requires-Dist: ipython (>=8.31.0,<9.0.0)
Requires-Dist: openai (>=1.66.3,<2.0.0)
Requires-Dist: pytest (>=8.3.4,<9.0.0)
Requires-Dist: python-dotenv (>=1.0.1,<2.0.0)
Requires-Dist: sqlalchemy (>=2.0.36,<3.0.0)
Requires-Dist: streamlit-autorefresh (>=1.0.1,<2.0.0)
Requires-Dist: streamlit-cookies-controller (>=0.0.4,<0.0.5)
Requires-Dist: streamlit-google-auth (>=1.1.8,<2.0.0)
Requires-Dist: twine (>=6.0.1,<7.0.0)
Project-URL: Repository, https://github.com/jmcarnahan/bond-ai
Description-Content-Type: text/markdown

# Bond AI

Bond AI leverages OpenAI's Assistant APi to help develop Generative AI agents and chatbots with access to your own tools, APIs and data sources. Bond AI also has a web UI with a built-in chat interface and is extensible to other interfaces with access to these agents. 


## Features

- Simple definition of agents with tools and data
- Automatic discovery of agents
- Built-in threads, tool access and data integration from the Assistants API
- Google authentication support
- Thread sharing between users
- Modular design with agents, threads, and pages

## Getting Started

### Prerequisites

- Python 3.13
- Poetry

### Installation

1. Clone the repository:

    ```sh
    git clone https://github.com/yourusername/bond-ai.git
    cd bond-ai
    ```

2. Install dependencies using Poetry:

    ```sh
    poetry config virtualenvs.in-project true

    poetry install

    poetry build

    poetry shell

    source $(poetry env info --path)/bin/activate
    ```

3. Set up environment variables:

    Create a .env file in the project root directory and add the following variables:

    ```env
    OPENAI_API_KEY=your_openai_api_key
    OPENAI_PROJECT=you_openai_project_id
    OPENAI_DEPLOYMENT=openai_model #(e.g. "gpt-4o-mini")

    # or
    # AZURE_OPENAI_API_KEY=your_azure_openai_api_key
    # AZURE_OPENAI_ENDPOINT=your_azure_openai_endpoint
    # AZURE_OPENAI_API_VERSION=api_version (e.g. 2024-08-01-preview)
    
    AUTH_ENABLED=True
    GOOGLE_AUTH_CREDS_PATH=path_to_your_google_auth_creds.json
    GOOGLE_AUTH_REDIRECT_URI=your_redirect_uri_for_this_app

    METADATA_DB_URL=database_url_for_metadata #(e.g. sqlite:///.metadata.db)
    ```

### Running the Application

To start the application, run the following command:

```sh
python -m bond_ai.app.start --server.port=8080 --server.address=0.0.0.0
```

### Running Tests

To run the tests, use the following command:

```sh
poetry run pytest
```

This will execute all the tests in the `tests` directory and provide a summary of the results.

The primary source code is located in the `bond_ai` directory, and the test code is in the `tests` directory. This project uses Poetry for dependency management and setup.

### Contributing

We welcome contributions to the Bond AI project! To contribute, please follow these steps:

1. Fork the repository on GitHub.
2. Clone your forked repository to your local machine:

  ```sh
  git clone https://github.com/yourusername/bond-ai.git
  cd bond-ai
  ```

3. Create a new branch for your feature or bugfix:

  ```sh
  git checkout -b your-feature-branch
  ```

4. Make your changes and commit them with a descriptive message:

  ```sh
  git add .
  git commit -m "Description of your changes"
  ```

5. Push your changes to your forked repository:

  ```sh
  git push origin your-feature-branch
  ```

6. Open a pull request on the original repository and describe your changes in detail.

Thank you for contributing!
