(Still working on)
Welcome to Joan, a lightweight and resource-efficient smart assistant designed to run seamlessly on low-resource systems like Raspberry Pi. Joan leverages machine learning (scikit-learn) for speed and control, making it a user-friendly alternative to traditional chatbot frameworks. Unlike typical AI frameworks, Joan prioritizes transparency and simplicity for easy understanding.
- Game Time: Play blackjack, rock-paper-scissors, or a number guessing game.
- Ask it to open a specific video on
Youtube
- Entertainment: Joan can tell jokes, riddles, trivia questions, and even gives facts and advice (Do not follow)
- open Websites: Open's random XKCD With a random image; akinator and the wiki game.
- Wikihow: Can search for wikihow articles and either read them to you or show you the webpage.
- news: Can give the latest news articles
- Passcode: A Passcode can be set up. This can be used to confirm you asked for certain commands, such as a factory reset (e.g. "factory reset [passcode]")
- recipes: Has built in dataset of recipes allowing you to ask for a specific one.
- Factory rest: This will remove any data that it has collected from the user, but it still remembers what it has learned from wolfram Alpha
- weather: Can ask for the current weather, what the weather will be like tomorrow or on a specific day.
- Time/date: Can tell the time, full date, the day, the month, and the year.
- Security: Joan can scan a website to determine whether it's safe, proceed with caution, or dangerous. you must have the website open or copy the URL of the website for this to work.
Note
In addition to all these features, there are also Easter Eggs if you can find them 🥚
Joan integrates seamlessly with various APIs:
- Wolfram Alpha - Used to respond to anything that Joan can't or doesn't have a response for. Joan saves the answer allowing it to do "Live Learning".
- Accuweather - Used to get weather data from a location (The user doesn't need to give Joan their location, It just knows).
- omdbapi - (Open Movie Database) API for getting data about movies, although Wolfram Alpha also knows information about movies.
- spaceflightnewsapi - Gets news about space flights and events in relation to it.
- currentsapi - Gets general news which also contains keywords to each article allowing the user to filter news sources.
- genderize - This is used to determine what gener the user is, this seems to work pretty well.
- totalvirus - this is used to scan a website, whether that be the website that is open or a link that was last copied.
- ipapi - This is used to get the user's IP data, which includes their current location.
Warning
While in the development phase the API keys are visible in the code and can be used easily. Many of these API's have limited usage every week/month
.
Ensure the following libraries are installed:
- Pandas
- Scikit-learn
- pywikihow
- joblib
- youtube-search-python
- nltk
- inflect
- fuzzywuzzy
- requests
- pyperclip
- pyautogui
- word2number
- ipinfo
- elevenlabs
- huggingface_hub
pip3 install pandas, scikit-learn pywikihow joblib youtube-search-python nltk inflect fuzzywuzzy requests pyperclip pyautogui word2number ipinfo elevenlabs huggingface_hub
Note
Since this is being developed to run on devices such as a raspberry pi, the modules and libraries above should all install and work as expected, even on 32-bit system.
Run Joan.py, and within 3 to 5 seconds, you're ready to explore the capabilities.
Each tag is surrounded by "<" and ">"
- user-name - can include the user's name
- date - Includes the date whether that is current date or some other date
- emotion - a type of emotion
- F-food - The users favourite food
- game-name - Name of the game (used for user peference when game has multiple names).
- riddle-answe - the answer to the riddle
- correct-answer - The correct answer to a trivia question
- list-games - a list of games that can be played with joan
- unsafe-scans - the amount of scans that returned as a dangerous website
- food - food
- sure-name - the surename of the user
- datasets/ET.csv - Entity tag, this is the main file for recognizing what the user has inputted.
- datasets/ER.csv - Emotion recognition, used to detect the user's emotins based on their input.
- Expected content.txt - This includes what sort of input is expected next.
- last time used.txt - The last time Joan was used, which is used within the code.
- responses.csv - A long list in each row containing different variations of outputs.
- user data.json - all the user's data for Joan to remember.