Coder Social home page Coder Social logo

paulovcmedeiros / pyrobbot Goto Github PK

View Code? Open in Web Editor NEW
60.0 1.0 44.0 1.02 MB

Chat with GPT LLMs over voice, UI & terminal, all with access to the internet. Powered by OpenAI.

License: MIT License

Python 100.00%
chatbot chatgpt gpt openai-api streamlit chatbot-application chatgpt-api python python-chat-application python-chatbot speech-recognition speech-to-text text-to-speech voice-chat-bot voice-recognition voice-gpt websearch latest-events artificial-intelligence personal-assistant

pyrobbot's Introduction

pyrobbot-logo

pyRobBot
Chat with GPT LLMs over voice, text or both.
All with access to the internet.

Pepy Total Downlods PyPI - Version Streamlit App

Poetry Contributors Welcome Linting Tests codecov

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:

  • 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:
    • 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
  • Chat context handling using embeddings

  • Estimated API token usage and associated costs

  • OpenAI API key is never stored on disk

System Requirements

  • Python >= 3.9
  • A valid OpenAI API key
    • Set it in the Web UI or through the environment variable OPENAI_API_KEY
  • To enable voice chat, you also need:
    • PortAudio
      • Install on Ubuntu with sudo apt-get --assume-yes install portaudio19-dev python-all-dev
      • Install on CentOS/RHEL with sudo yum install portaudio portaudio-devel
    • ffmpeg
      • Install on Ubuntu with sudo apt-get --assume-yes install ffmpeg
      • Install on CentOS/RHEL with sudo yum install ffmpeg

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.

pyrobbot's People

Contributors

paulovcmedeiros avatar

Stargazers

 avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar  avatar

Watchers

 avatar

pyrobbot's Issues

Chat with STT in ui

Hello, this rep is a good source to learn. I want to chat with ai in streamlit, but I dont find the record button or voice button when using this app. Is there any suggestion?

Recommend Projects

  • React photo React

    A declarative, efficient, and flexible JavaScript library for building user interfaces.

  • Vue.js photo Vue.js

    🖖 Vue.js is a progressive, incrementally-adoptable JavaScript framework for building UI on the web.

  • Typescript photo Typescript

    TypeScript is a superset of JavaScript that compiles to clean JavaScript output.

  • TensorFlow photo TensorFlow

    An Open Source Machine Learning Framework for Everyone

  • Django photo Django

    The Web framework for perfectionists with deadlines.

  • D3 photo D3

    Bring data to life with SVG, Canvas and HTML. 📊📈🎉

Recommend Topics

  • javascript

    JavaScript (JS) is a lightweight interpreted programming language with first-class functions.

  • web

    Some thing interesting about web. New door for the world.

  • server

    A server is a program made to process requests and deliver data to clients.

  • Machine learning

    Machine learning is a way of modeling and interpreting data that allows a piece of software to respond intelligently.

  • Game

    Some thing interesting about game, make everyone happy.

Recommend Org

  • Facebook photo Facebook

    We are working to build community through open source technology. NB: members must have two-factor auth.

  • Microsoft photo Microsoft

    Open source projects and samples from Microsoft.

  • Google photo Google

    Google ❤️ Open Source for everyone.

  • D3 photo D3

    Data-Driven Documents codes.