Skip to main content

A chatbot that assists rather than manipulates.

Project description

Buy Us Tea PyPI version License codecov DigitalOcean Referral Badge

qary

The qary package is both a chatbot framework and a 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 prosocial intelligence.

We started work on qary as part of 1st editition of NLP in Action. It has slowly grown into the core framework for a social-impact startup Tangible AI. Tangible AI interns and volunteers are constantly fixing bugs, adding new features and dialog trees to qary's repetoire. The San Diego Python User Group meetups have been the scene for some fun qary demos. The San Diego Machine Learning Book Club is a great place for support on advanced concepts in the NLP in Action book or anything NLP and machine learning related. You can find more ideas in docs/.

Install

Install from source

Retrieve the source code from GitLab using a bash console:

git clone git@gitlab.com:tangibleai/qary
cd qary

If that doesn't work or you don't know what a bash console is, then you probably want to start with the Windows Users Instructions here: docs/README-windows-install.md

Make sure you install qary in a virtual environment using the latest version of pip and the python virtualenv package:

pip install --upgrade pip virtualenv
python -m virtualenv venv
source venv/bin/activate

Now that you have your environment activated, make sure you are in the qary/ repository along side the pyproject.toml file so you can install qary in developer (editable) mode:

pip install --editable .

Now you're ready to run qary from the command line (bash console):

qary "Hi!"

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/*.yml
  • glossary (skills/glossary.py): definitions from glossary yml files in data/faq/glossary-*.yml
  • eliza (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:

  1. search: chatterbot, will
  2. pattern matching and response templates: Alexa, AIML
  3. generative deep learning: robot-bernie, movie-bot
  4. grounding: snips

It's all explained in detail at NLP in Action.

Presentations for San Diego Python User Group are in [docs/](/docs/2019-08-22--San Diego Python User Group -- How to Build a Chatbot.odp) and on the web at http://totalgood.org/midata/talks

Contributing pattern for developers

DM @hobs on SD PUG's discord server if you'd like to join us for weekly collaborative-coding sessions on qary and other open source projects.

  1. Create a fork of the main qary repository on Gitlab.
  2. Make your changes in a branch named something different from master, e.g. create a new branch my-pull-request.
  3. Create a merge request.
  4. 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!

Project details


Release history Release notifications | RSS feed

Download files

Download the file for your platform. If you're not sure which to choose, learn more about installing packages.

Source Distribution

qary-0.7.27.tar.gz (5.7 MB view details)

Uploaded Source

Built Distribution

qary-0.7.27-py3-none-any.whl (5.9 MB view details)

Uploaded Python 3

File details

Details for the file qary-0.7.27.tar.gz.

File metadata

  • Download URL: qary-0.7.27.tar.gz
  • Upload date:
  • Size: 5.7 MB
  • Tags: Source
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.6 Linux/5.15.0-56-generic

File hashes

Hashes for qary-0.7.27.tar.gz
Algorithm Hash digest
SHA256 4bee3e28f4eb6e21889248edc4ded6fc2e6ac2237250a0fd69988304c9d369a3
MD5 6821a60653a6dd175533ba061c1cf267
BLAKE2b-256 01b4cb229eeda2f49c8fbbe2160e7d87d5c08bdcb61cc93f9e30ee1056127f01

See more details on using hashes here.

File details

Details for the file qary-0.7.27-py3-none-any.whl.

File metadata

  • Download URL: qary-0.7.27-py3-none-any.whl
  • Upload date:
  • Size: 5.9 MB
  • Tags: Python 3
  • Uploaded using Trusted Publishing? No
  • Uploaded via: poetry/1.2.2 CPython/3.10.6 Linux/5.15.0-56-generic

File hashes

Hashes for qary-0.7.27-py3-none-any.whl
Algorithm Hash digest
SHA256 a64ea95b04e2db4ae8b1090a79327a97511b03409feaf6596b1e8a7176a385a9
MD5 95b6d0540174275a77687c339ad7f27b
BLAKE2b-256 f7f8d30ceb44e40710b4c1dc11d822b8a194c8777a5a6032fa3b2c8b8fd6d4a4

See more details on using hashes here.

Supported by

AWS AWS Cloud computing and Security Sponsor Datadog Datadog Monitoring Fastly Fastly CDN Google Google Download Analytics Microsoft Microsoft PSF Sponsor Pingdom Pingdom Monitoring Sentry Sentry Error logging StatusPage StatusPage Status page