Skip to content
This repository has been archived by the owner on Nov 7, 2023. It is now read-only.

kamushadenes/chloe

⚠️ AI is advancing incredibly fast.

Most of what Chloe and other assistant projects did is now superseeded by advances not only from OpenAI's API but the entire AI space as a whole, including open source models.

Chloe is no longer needed.

It was incredibly fun to play around with this exciting technology, and while Chloe is no more (for now), I'll keep busy with AI-related projects for a long time.

Keep hacking!


Chloe

A powerful AI assistant

Chloe

tests status license

Chloe is a powerful AI Assistant written in Go that leverages OpenAI technologies (ChatGPT, Whisper, and DALL-E) along with Google's Text-to-Speech engine and ElevenLabs' Text-To-Speech engine to provide versatile and comprehensive assistance.

It offers multiple interfaces and is able to understand and respond to complex instructions making use of several tools.

πŸš€ Features

  • Calculates and logs the cost of each request as well as the total cost of the session
  • Scrapes websites to have them on its context
  • Searches Google for information
  • Searches and summarizes news articles
  • Performs calculations
  • Uses Google's Text-to-Speech engine to speak
  • Uses OpenAI's DALL-E to generate images
  • Automatically summarizes messages in order to have a longer context
  • Automatically moderates message using OpenAI's moderation endpoint
  • Many more, check Actions
complete.webm

🌟 Power Chloe's Growth: Lend Your Support

For the price of a single coffee, you can play a crucial role in advancing Chloe, an exciting project that's pushing the boundaries of fully autonomous AI! This labor of love is developed during my precious free time, requiring countless hours of dedication. Your generous contributions keep the momentum going and are deeply appreciated!

To support Chloe's growth, click here.

πŸ“± Supported Interfaces

πŸ›£οΈ Roadmap

You can track Chloe's progress on the Roadmap project.

πŸ”— Dependencies

Dependency Description License Type
aria2 Chloe uses aria2 to speed up the download YouTube videos for transcription. Although highly recommended, this is not a mandatory dependency. If you don't have it installed, Chloe will fall back to using the youtube-dl default downloader. GPL-2.0 Runtime
ffmpeg Chloe uses ffmpeg to convert YouTube videos to audio, and also to convert audio received from Telegram to an appropriate format for Whisper. It is also used to perform cost calculation on Whisper requests. LGPL-2.1 Runtime
imagemagick Chloe uses imagemagick to convert images to the appropriate format for DALL-E. Apache-2.0 Runtime
youtube-dl Chloe uses youtube-dl to download YouTube videos for transcription. Unlicense Runtime

πŸ’Ύ Installation

Pre-built binaries

Pre-built binaries are available for Linux (amd64) and macOS (Intel and M1).

You can download them from the releases page.

Windows might work if you compile from source, but it's untested.

From source

  1. Clone the repository
git clone https://github.com/kamushadenes/chloe.git
  1. Change directory to the project folder
cd chloe
  1. Compile
make

βš™οΈ Usage

Setup the required environment variables

# This is the only mandatory variable
export OPENAI_API_KEY="your_openai_api_key"

# Only necessary if you want to use the Telegram interface
export CHLOE_TELEGRAM_TOKEN="your_telegram_bot_token"

# Only necessary if you want to use the Discord interface
export CHLOE_DISCORD_TOKEN="your_discord_bot_token"

# Only necessary if you want to use the Text-to-Speech engine
export GOOGLE_APPLICATION_CREDENTIALS="/path/to/credentials.json"

Running the chloe binary will start the bot.

cd cmd/chloe/

./chloe

Here's the complete list of available commands:

Usage: chloe <command>

Chloe is a powerful AI Assistant

Running Chloe without arguments will start the server

Flags:
  -h, --help       Show context-sensitive help.
      --version    Print version information and quit

Commands:
  complete              Complete a prompt
  generate              Generate an prompt
  tts                   Generate an audio from a prompt
  action                Performs an action
  forget                Forget all users
  count-tokens          Count tokens
  create-user           Create a new user
  delete-user           Delete a user
  list-users            List users
  merge-users           Merge users
  add-external-id       Add external ID to user
  delete-external-id    Delete external ID from user
  list-messages         List messages
  create-api-key        Create an API key for use with the HTTP interface

Run "chloe <command> --help" for more information on a command.

πŸ“š Documentation

Check out the Wiki for more information.

πŸ”§ Configuration

See Configuration for more information.

πŸ’¬ Improving responses

See Few-shot prompting.

πŸ› οΈ Extending capabilities

See Extending Chloe.

πŸ‘₯ User management

See User management.

🀝 Contributing

We welcome contributions! If you would like to improve Chloe, please check out the Contributing Guide.

⚠️ Disclaimer

There are some rushed parts of the code, and some parts that are not very well documented. You can also find a few TODOs scattered around the codebase and some duplicate code too.

Feel free to open an issue if you have any questions, or even better, open a pull request!

πŸ“„ License

Chloe is licensed under the GPL-3.0 License.

πŸ“š References

πŸ™ Acknowledgements