qary
¶
The qary
package is both a chatbot framework and a working “reference implementation” virtual assistant that actually assists! Most bots manipulate you to make money for their corporate masters. With qary, you can build your bot to protect you and amplify your intelligence and prosocial instincts.
qary
was conceived as part of NLP in Action book, is maintained by an active developer community and is supported by San Diego Python User Group (some qary talks here and in docs/
) and San Diego Machine Learning Group.
Install¶
Install from source¶
Retrieve the source code from GitLab:
git clone git@gitlab.com:tangibleai/qary
cd qary
Then, install and use the conda
python package manager within the Anaconda software package.
conda update -y -n base -c defaults conda
conda create -y -n qaryenv 'python==3.9.7'
conda env update -n qaryenv -f ./scripts/environment.yml
conda activate qaryenv || source activate qaryenv
pip install --editable .
Windows Users: docs/README-windows-install.md
PyPi package¶
qary
is on PyPi but this install is unlikely to work, unless you’ve already installed all the dependencies:
pip install qary
Usage¶
$ qary --help
usage: qary [-h] [--version] [--name STR] [-p] [-s STR] [-v] [-vv] [words [words ...]]
Running qary
for just one skill¶
$ qary -s qa
# ... (logging messages)
YOU: When was Barack Obama born?
# ... (logging messages)
qary: August 4, 1961
qary
skills¶
qary
‘s probabilistic conversation manager chooses a reply from the possiblities generated by the different personalities:
pattern
(skills/pattern.py
): example skill using regex patterns to reply to greetings like “hi”qa
(skills/qa.py
): BERT and ALBERT Wikipedia Question Answering (WikiQA reading comprehension tests)faq
(skills/faq.py
): answers to frequently asked questions using data/faq/*.ymlglossary
(skills/glossary.py
): definitions from glossary yml files in data/faq/glossary-*.ymleliza
(eliza.py
): a python port of the ELIZA therapist bot
Configuring default personalities¶
By default, qary
runs with qa
personality. Check out the config file in qary.ini
to change the default skills loaded for your own custom skill in the skills directory.
Approach¶
qary
‘s chatbot framework allows you to combine many approaches to give you state-of-the-art capability to answer questions and carry on a conversation:
search: chatterbot, will
pattern matching and response templates: Alexa, AIML
generative deep learning: robot-bernie, movie-bot
grounding: snips
It’s all explained in detail at NLP in Action.
Presentations for San Diego Python User Group are in docs/ and on the web at http://totalgood.org/midata/talks
Contributing pattern for developers¶
DM @hobs if you’d like to join us for weekly Zoom collaborative-coding sessions.
Create a fork of the main qary repository on Gitlab.
Make your changes in a branch named something different from
master
, e.g. create a new branchmy-pull-request
.Help your fellow contributors out by:
Follow the PEP-8 style guide.
Try to include a docstring, at least a single line, in any function, method, or class
Bonus points for adding a doctest as part of your contribution.
If you add a new feature, write some quick docs in the README.
Add your name and attribution to the AUTHORS file.
Know we are grateful for your contribution! You’ve made the chatbot world a little better!