1
1
<div align =" center " >
2
2
3
- [ ![ pyrobbot-logo] ( ./ pyrobbot/app/data/assistant_avatar.png)] ( (https://github.com/paulovcmedeiros/pyRobBot) )
3
+ [ ![ pyrobbot-logo] ( https://github.com/paulovcmedeiros/pyRobBot/blob/main/ pyrobbot/app/data/assistant_avatar.png?raw=true )] ( (https://github.com/paulovcmedeiros/pyRobBot) )
4
4
# <code >[ pyRobBot] ( https://github.com/paulovcmedeiros/pyRobBot ) </code ><br >Chat with GPT LLMs over voice, UI & terminal.<br >All with access to the internet.
5
5
6
6
[ ![ Pepy Total Downlods] ( https://img.shields.io/pepy/dt/pyrobbot?style=flat&label=Downloads )] ( https://www.pepy.tech/projects/pyrobbot )
7
7
[ ![ PyPI - Version] ( https://img.shields.io/pypi/v/pyrobbot )] ( https://pypi.org/project/pyrobbot/ )
8
8
[ ![ Streamlit App] ( https://static.streamlit.io/badges/streamlit_badge_black_white.svg )] ( https://pyrobbot.streamlit.app )
9
- [ <img src =" . /pyrobbot/app/data/powered-by-openai-badge-outlined-on-dark.svg" width =" 100 " >] ( https://openai.com/blog/openai-api )
9
+ [ <img src =" https://raw.githubusercontent.com/paulovcmedeiros/pyRobBot/107f4576463d56b8d55bd913a56507940a37b675 /pyrobbot/app/data/powered-by-openai-badge-outlined-on-dark.svg" width =" 100 " >] ( https://openai.com/blog/openai-api )
10
10
11
11
12
12
[ ![ Poetry] ( https://img.shields.io/endpoint?url=https://python-poetry.org/badge/v0.json )] ( https://python-poetry.org/ )
18
18
</div >
19
19
20
20
PyRobBot is a python package that uses OpenAI's [ GPT large language models (LLMs)] ( https://platform.openai.com/docs/models ) to implement:
21
- * A fully configurable ** personal assistant** that can speak and listen to you
21
+ * A fully configurable ** personal assistant** that can speak and listen to you using AI-generated ** human-like voices **
22
22
* An equally fully configurable text-based ** chatbot** that can be used either via web UI or terminal
23
23
24
24
25
25
## Features
26
- - [x] Personal assistant with text-to-speech and speech-to-text capabilities
27
- - Talk to the GPT assistant and the assistant will talk back to you!
28
- - Choose your preferred language (e.g., ` rob --lang pt-br ` )
29
- - Choose your preferred Text-to-Speech (TTS) engine (e.g., ` rob --tts google ` )
30
- - [ OpenAI Text-to-Speech] ( https://platform.openai.com/docs/guides/text-to-speech ) (default): AI-generated * human-like* voice
31
- - [ Google TTS] ( https://cloud.google.com/text-to-speech ) : free at the time being, with decent quality
32
- - Choose your preferred Speech-to-Text (STT) engine
33
- - Also between OpenAI and Google (default)
26
+
27
+ Features include, but are not limited to:
28
+
29
+ - [x] Voice Chat
30
+ - Continuous voice input and output
31
+ - No need to press a button: the assistant will keep listening until you stop talking
32
+
33
+ - [x] Internet access: The assistent will ** search the web** to find the answers it doesn't have in its training data
34
+ - E.g. latest news, current events, weather forecasts, etc.
35
+
34
36
- [x] Web browser UI (made with [ Streamlit] ( https://pyrobbot.streamlit.app ) )
37
+ - Voice chat with continuous voice input and output
38
+ - Plus, a familiar interface for those who prefer a traditional chatbot experience
35
39
- Add/remove conversations dynamically
36
40
- Automatic/editable conversation summary title
37
- - Input via text or voice
38
- - [x] Terminal UI
41
+ - Autosave & retrieve chat history
42
+ - Resume even the text & voice conversations started outside the web interface
43
+
44
+ - [x] Chat via terminal
39
45
- For a more "Wake up, Neo" experience
40
- - [x] Internet access: The assistent will ** search the web** and to find the answers it doesn't have in its training data
41
- - E.g. current events, weather forecasts, etc.
46
+
42
47
- [x] Fully configurable
43
- - Support for multiple GPT LLMs
48
+ - Large number of supported languages (* e.g.* , ` rob --lang pt-br ` )
49
+ - Support for multiple LLMs through the OpenAI API
50
+ - Choose your preferred Text-to-Speech (TTS) and Speech-To-Text (STT) engines (google/openai)
44
51
- Control over the parameters passed to the OpenAI API, with (hopefully) sensible defaults
45
52
- Ability to pass base directives to the LLM
46
53
- E.g., to make it adopt a persona, but you decide which directived to pass
47
54
- Dynamically modifiable AI parameters in each chat separately
48
55
- No need to restart the chat
49
- - [x] Autosave & retrieve chat history
50
- - In the browser UI, you can even read the transcripts of your voice conversations with the AI
56
+
51
57
- [x] Chat context handling using [ embeddings] ( https://platform.openai.com/docs/guides/embeddings )
52
58
- [x] Estimated API token usage and associated costs
53
59
- [x] OpenAI API key is ** never** stored on disk
@@ -57,7 +63,7 @@ PyRobBot is a python package that uses OpenAI's [GPT large language models (LLMs
57
63
## System Requirements
58
64
- Python >= 3.9
59
65
- A valid [ OpenAI API key] ( https://platform.openai.com/account/api-keys )
60
- - Set in the Web UI or through the environment variable ` OPENAI_API_KEY `
66
+ - Set it in the Web UI or through the environment variable ` OPENAI_API_KEY `
61
67
- To enable voice chat, you also need:
62
68
- [ PortAudio] ( https://www.portaudio.com/docs/v19-doxydocs/index.html )
63
69
- Install on Ubuntu with ` sudo apt-get --assume-yes install portaudio19-dev python-all-dev `
@@ -68,16 +74,32 @@ PyRobBot is a python package that uses OpenAI's [GPT large language models (LLMs
68
74
69
75
## Installation
70
76
This, naturally, assumes your system fulfills all [ requirements] ( #system-requirements ) .
71
- ### Using pip
77
+
78
+ ### Regular Installation
79
+ The recommended way for most users.
80
+
81
+ #### Using pip
72
82
``` shell
73
83
pip install pyrobbot
74
84
```
75
-
76
- ### From source
85
+ #### From the GitHub repository
77
86
``` shell
78
87
pip install git+https://github.com/paulovcmedeiros/pyRobBot.git
79
88
```
80
89
90
+ ### Developer-Mode Installation
91
+ The recommended way for those who want to contribute to the project. We use [ poetry] ( https://python-poetry.org ) with the [ poethepoet] ( https://poethepoet.natn.io/index.html ) plugin. To get everything set up, run:
92
+ ``` shell
93
+ # Clean eventual previous install
94
+ curl -sSL https://install.python-poetry.org | python3 - --uninstall
95
+ rm -rf ${HOME} /.cache/pypoetry/ ${HOME} /.local/bin/poetry ${HOME} /.local/share/pypoetry
96
+ # Download and install poetry
97
+ curl -sSL https://install.python-poetry.org | python3 -
98
+ # Install needed poetry plugin(s)
99
+ poetry self add ' poethepoet[poetry_plugin]'
100
+ ```
101
+
102
+
81
103
## Basic Usage
82
104
Upon succesfull installation, you should be able to run
83
105
``` shell
@@ -92,16 +114,16 @@ and general `rob` options. For info about specific subcommands and the
92
114
options that apply to them only, ** please run ` rob SUBCOMMAND -h ` ** (note
93
115
that the ` -h ` goes after the subcommand in this case).
94
116
95
- ### Chatting by Voice (default )
117
+ ### Using the Web UI (defult, supports voice & text chat )
96
118
``` shell
97
119
rob
98
120
```
121
+ See also our [ demo Streamlit app] ( https://pyrobbot.streamlit.app ) !
99
122
100
- ### Using the Web UI
123
+ ### Chatting Only by Voice
101
124
``` shell
102
- rob ui
125
+ rob voice
103
126
```
104
- See also our [ demo Streamlit app] ( https://pyrobbot.streamlit.app ) !
105
127
106
128
### Running on the Terminal
107
129
``` shell
0 commit comments