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 include, but are not limited to:
-
Voice Chat
- Continuous voice input and output
- No need to press a button: the assistant will keep listening until you stop talking
-
Internet access: The assistent will search the web to find the answers it doesn't have in its training data
- E.g. latest news, current events, weather forecasts, etc.
- Powered by DuckDuckGo Search
-
Web browser user interface
- See our demo app on Streamlit Community Cloud
- Voice chat with:
- Continuous voice input and output (using streamlit-webrtc)
- If you prefer, manual on/off toggling of the microphone (using streamlit_mic_recorder)
- A familiar text interface integrated with the voice chat, for those who prefer a traditional chatbot experience
- Your voice prompts and the assistant's voice replies are shown as text in the chat window
- You may also send promts as text even when voice detection is enabled
- Add/remove conversations dynamically
- Automatic/editable conversation summary title
- Autosave & retrieve chat history
- Resume even the text & voice conversations started outside the web interface
-
Chat via terminal
- For a more "Wake up, Neo" experience
-
Fully configurable
- Large number of supported languages (e.g.,
rob --lang pt-br
) - Support for multiple LLMs through the OpenAI API
- Choose your preferred Text-to-Speech (TTS) and Speech-To-Text (STT) engines (google/openai)
- Control over the parameters passed to the OpenAI API, with (hopefully) sensible defaults
- Ability to pass base directives to the LLM
- E.g., to make it adopt a persona, but you decide which directived to pass
- Dynamically modifiable AI parameters in each chat separately
- No need to restart the chat
- Large number of supported languages (e.g.,
-
Chat context handling using embeddings
-
Estimated API token usage and associated costs
-
OpenAI API key is never stored on disk
- Python >= 3.9
- A valid OpenAI API key
- Set it in the Web UI or through the environment variable
OPENAI_API_KEY
- Set it in the Web UI or through the environment variable
- To enable voice chat, you also need:
This, naturally, assumes your system fulfills all requirements.
The recommended way for most users.
pip install pyrobbot
pip install git+https://github.com/paulovcmedeiros/pyRobBot.git
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]'
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).
rob
See also our demo Streamlit app!
rob voice
rob .
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.