ansari-project / ansari-backend

Ansari is an AI assistant to help Muslims practice more effectively and non-Muslims to understand Islam
77 stars 14 forks source link

Ansari

Try Ansari now at ansari.chat!

Ansari is an experimental open source project that explores the application of large language models in helping Muslims improve their practice of Islam and non-Muslims develop an accurate understanding of the teachings of Islam.

It is not always correct and can get things wrong. The list below includes some of the issues we’ve seen in working with Ansari.

It uses carefully crafted prompts and several sources accessed through retrieval augmented generation.

How can you help?

What can Ansari do?

A complete list of what Ansari can do can be found here.

What is logged with Ansari?

Getting the Ansari Backend running on your local machine

Ansari will quite comfortably run on your local machine -- almost all heavy lifting is done using other services. The only complexities are it needs a lot of environment variables to be set and you need to run postgres.

You can also run it on Heroku and you can use the Procfile and runtime.txt filed to deploy it directly on Heroku.

Set up postgres on your machine

Follow the instructions here to install postgres.

Make sure you have Python 3 installed

Do a % python -V to checck that you have python 3 installed. If you get an error or the version starts with a 2, follow the instructions here.

Download the repository

% git clone git@github.com:waleedkadous/ansari-backend.git
% cd ansari-backend

Create a python virtual environment and activate it.

% python -m venv .venv
% source .venv/bin/activate

Install dependencies

% pip install -r requirements.txt

Set the appropriate environment variables

You can have a look at .env.example, and save it as .env.

Required environment variables

You need at a minimum:

Optional environment variables

There are two optional environment variables.

Initialize your database

You can run the follwing commad to create missing tables in your database.

% python setup_database.py

Time to run!

Running as a backend service

We use uvicorn to run the service.

% # Make sure to load environment variables: 
% source .env
% uvicorn main_api:app --reload # Reload automatically reloads python files as you edit. 

This starts a service on port 8000. You can check it's up by checking at http://localhost:8000/docs which gives you a nice interface to the API.

Running on the command line

If you just want to run Ansari on the command line such that it takes input from stdin and outputs on stdout (e.g. for debugging or to feed it text) you can just do:

% python main_stdio.py

Side note: If you're contributing to the main project, you should style your code with ruff.

The Roadmap

This roadmap is preliminary, but it gives you an idea of where Ansari is heading. Please contact us at feedback@ansari.chatif you’d like to help with these.

Acknowledgements