paulovcmedeiros / pyRobBot

Chat with GPT LLMs over voice, UI & terminal, all with access to the internet. Powered by OpenAI.
MIT License
73 stars 52 forks source link
artificial-intelligence chatbot chatbot-application chatgpt chatgpt-api gpt latest-events openai-api personal-assistant python python-chat-application python-chatbot speech-recognition speech-to-text streamlit text-to-speech voice-chat-bot voice-gpt voice-recognition websearch
[![pyrobbot-logo](https://github.com/paulovcmedeiros/pyRobBot/blob/main/pyrobbot/app/data/assistant_avatar.png?raw=true)]((https://github.com/paulovcmedeiros/pyRobBot)) # [pyRobBot](https://github.com/paulovcmedeiros/pyRobBot)
Chat with GPT LLMs over voice, text or both.
All with access to the internet. [![Pepy Total Downlods](https://img.shields.io/pepy/dt/pyrobbot?style=flat&label=Downloads)](https://www.pepy.tech/projects/pyrobbot) [![PyPI - Version](https://img.shields.io/pypi/v/pyrobbot)](https://pypi.org/project/pyrobbot/) [![Streamlit App](https://static.streamlit.io/badges/streamlit_badge_black_white.svg)](https://pyrobbot.streamlit.app) [](https://openai.com/blog/openai-api) [![Poetry](https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json)](https://python-poetry.org/) [![Contributors Welcome](https://img.shields.io/badge/Contributors-welcome-.svg)](https://github.com/paulovcmedeiros/pyRobBot/pulls) [![Linting](https://github.com/paulovcmedeiros/pyRobBot/actions/workflows/linting.yaml/badge.svg)](https://github.com/paulovcmedeiros/pyRobBot/actions/workflows/linting.yaml) [![Tests](https://github.com/paulovcmedeiros/pyRobBot/actions/workflows/tests.yaml/badge.svg)](https://github.com/paulovcmedeiros/pyRobBot/actions/workflows/tests.yaml) [![codecov](https://codecov.io/gh/paulovcmedeiros/pyRobBot/graph/badge.svg?token=XI8G1WH9O6)](https://codecov.io/gh/paulovcmedeiros/pyRobBot)

PyRobBot is a python package that uses OpenAI's GPT large language models (LLMs) to implement a fully configurable personal assistant that, on top of the traditional chatbot interface, can also speak and listen to you using AI-generated human-like voices.

Features

Features include, but are not limited to:

System Requirements

Installation

This, naturally, assumes your system fulfills all requirements.

Regular Installation

The recommended way for most users.

Using pip

pip install pyrobbot

From the GitHub repository

pip install git+https://github.com/paulovcmedeiros/pyRobBot.git

Developer-Mode Installation

The recommended way for those who want to contribute to the project. We use poetry with the poethepoet plugin. To get everything set up, run:

# Clean eventual previous install
curl -sSL https://install.python-poetry.org | python3 - --uninstall
rm -rf ${HOME}/.cache/pypoetry/ ${HOME}/.local/bin/poetry ${HOME}/.local/share/pypoetry
# Download and install poetry
curl -sSL https://install.python-poetry.org | python3 -
# Install needed poetry plugin(s)
poetry self add 'poethepoet[poetry_plugin]'

Basic Usage

Upon succesfull installation, you should be able to run

rob [opts] SUBCOMMAND [subcommand_opts]

where [opts] and [subcommand_opts] denote optional command line arguments that apply, respectively, to rob in general and to SUBCOMMAND specifically.

Please run rob -h for information about the supported subcommands and general rob options. For info about specific subcommands and the options that apply to them only, please run rob SUBCOMMAND -h (note that the -h goes after the subcommand in this case).

Using the Web UI (defult, supports voice & text chat)

rob

See also our demo Streamlit app!

Chatting Only by Voice

rob voice

Running on the Terminal

rob .

Disclaimers

This project's main purpose has been to serve as a learning exercise for me, as well as tool for experimenting with OpenAI API, GPT LLMs and text-to-speech/speech-to-text.

While it does not claim to be the best or more robust OpenAI-powered chatbot out there, it does aim to provide a friendly user interface that is easy to install, use and configure.

Feel free to open an issue or, even better, submit a pull request if you find a bug or have a suggestion.

Last but not least: This project is independently developed and not affiliated, endorsed, or sponsored by OpenAI in any way. It is separate and distinct from OpenAI’s own products and services.