Chatting with the bot after giving it a PDF of the game manual for the 2024 - 2025 FRC game season CRESCENDO
For my 11th-grade project, I made a chatbot that was able to read PDF files given to it and extract information from the files. It would then use the information as its knowledge base and would answer prompts given to it using the information. I decided to do this for my 11th-grade project because of a personal experience. I was selected to train my school district's help chatbot for their website. Their chatbot wasn't an artificial intelligence, but a program that had a database of possible questions that could be asked and a list of answers that it could respond with. My job was to go through and add onto the list of answers and see if the current answers were good enough. This was extremely slow and inaccurate. If someone were to ask a question that the chatbot wasn't pre - programmed for, it would respond with "I don't know." Having a generative AI that is able to "think" and produce its own answers to questions without using a set dataset given to it would completely fix this problem, removing the need for someone to go through possible questions and answers.
There are two separate websites that serve different purposes: A chatbot creation website and a chat website. The chatbot creation page is where you can create new chatbots and edit already existing chatbots. The bot name is simply what the bot will respond with. The bot description is where you define the personality of the chatbot. You can also add restrictions in the bot description that don't already exist in the restrictions provided below. It is the system prompt of the chatbot. At the bottom is where you can drag and drop the PDF files that you want the chatbot to use as its knowledge base. Once you press the index button, it processes and creates the chatbot. The chatbot is then saved onto your computer as two files: a JSON file with all of the configuration data saved in it, and a PKL file with the index data from the PDF file(s). Both files have file names that are random numbers, but a chatbot has the same random number sequence for both the PKL file and the JSON file. Editing a chatbot is the same process, except you have to provide the chatbot you want to edit. Once you create the chatbot, you can load it into the chat website. In order to load the chatbot, you just enter the chat website URL and add a query like "load?=(insert the chatbot filename)," and it will load the chatbot from where it is locally stored. This is useful because this makes it allows the chatbot to be embedded onto websites as a URL, or popup window.
Chatbot creation page
Dockers desktop screenshot
For the user interface, I used Streamlit. It was very easy to use as it has built-in chatbot functionality, and it's free for local use. For the LLM, I am currently using Ollama for the chatbot. For processing the PDF files, I am using Unstructured IO through Docker and WSL in order for it to work on a Windows computer. This is because Unstructured IO processes images, tables, and other complex data formats that aren't text very well. For the framework combining the LLM and the index data into a RAG chat, I used Llama Index.
A photo of the device
For a school project, I used what I learned from my science fair project and decided to make a device that could take photos of paper documents and use image manipulation to "scan" them into a digital document. Then, the documents could be fed into a locally ran AI that will use them for context. Then, questions could be asked about the documents.
Kching is one of the projects that happens every nine weeks in my school. It's split into two parts. One part is a grade-wide game where groups pretend to be companies in colonial America, trying to earn the most profit and control the most land. The second part is where groups pretend to be a company, and they make a product and try to sell as many as possible on presentation day. My group ended up not only becoming the supreme leaders of the game, but we also made the most amount of money, winning both the game and the simulation.
End of project presentation showing who won (my team)
Our business plan
For the project, my group had to make a business plan that includes our team's mission, products, competitors, and analysis's of our products and the market. We showed who our ideal customer is, as well as the pros and cons of each of our products. On top of our products, sketches of possible storefronts are included as well.
Everyone in my group was required to come up with multiple sketches for our team logo. These were the sketches that I came up with.