Developer Docs | Features | Usage | Architecture | Funders and Partners
Ask A Question is a free and open-source tool created to help non-profit organizations, governments in developing nations, and social sector organizations use Large Language Models for responding to citizen inquiries in their native languages.
Match your questions to content in the database using embeddings from LLMs.
Craft a custom reponse to the question using LLM chat and the content in your database
Easily deploy using WhatsApp Business API
Use the Admin App to add, edit, and delete content in the database
Ask questions in local languages. Languages currently on the roadmap
- Xhosa
- Zulu
- Hindi
- Igbo
Refine or clarify your question through conversation
Respond with not just text but voice, images, and videos as well.
Identify urgent or important messages. Handle them differently.
Monitor uptime, response rates, throughput HTTP reponse codes and more
See which content is the most sought after, the kinds of questions that receive poor feedback, identify missing content, and more
Note
Looking for other features? Please raise an issue with [FEATURE REQUEST]
before the title.
There are two major endpoints for Question-Answering:
- Embeddings search: Finds the most similar content in the database using cosine similarity between embeddings.
- LLM response: Crafts a custom response using LLM chat using the most similar content.
See docs or SwaggerUI at https://<DOMAIN>/api/docs
or https://<DOMAIN>/docs
for more details and other API endpoints.
curl -X 'POST' \
'https://[DOMAIN]/api/embeddings-search' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <BEARER TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"query_text": "how are you?",
"query_metadata": {}
}'
curl -X 'POST' \
'https://[DOMAIN]/api/llm-response' \
-H 'accept: application/json' \
-H 'Authorization: Bearer <BEARER TOKEN>' \
-H 'Content-Type: application/json' \
-d '{
"query_text": "this is my question",
"query_metadata": {}
}'
You can access the admin console at
https://[DOMAIN]/
We use docker-compose to orchestrate containers with a reverse proxy that manages all incoming traffic to the service. The database and LiteLLM proxy are only accessed by the core app.
See here for full documentation.