The CS50 AI Chatbot is designed to provide an interactive chatting experience using artificial intelligence. Built on the Flask framework and leveraging the power of Mistral AI, this project demonstrates the integration of AI with web applications. Users can interact with the chatbot through a web interface, and the chatbot can respond intelligently based on the inputs provided.
- User Authentication: Secure login and registration system.
- Persistent Chat Sessions: Users can start new chats, continue existing ones, and have their conversations stored.
- AI-Powered Responses: Utilizes Mistral AI for generating chatbot responses.
- Responsive Design: User interface built with Bootstrap for seamless experience across devices.
- Logging and Error Handling: Integrated logging for debugging and tracking errors.
Ensure you have the following installed:
- Python 3.7+
- Flask
- Flask-Session
- cs50
- Mistral AI SDK
You will also need MISTRAL_API_KEY
as an environmental variable. To get it, visit mistral.ai and
generate an API token. Place it into your IDE configuration or use a .env file.
For example, in PyCharm:
- Go to
Run
->Edit Configurations
. - Add a new environment variable:
MISTRAL_API_KEY
with the value of your API token.
Navigate to the folder where app.py
is located and create a .env file:
echo "export MISTRAL_API_KEY=<YOUR_API_TOKEN>" >> .env
Ensure your code loads the environment variables correctly. You can use the python-dotenv
package to manage your
environment variables. Update your code as follows:
from dotenv import load_dotenv
import os
# Load environment variables (if .env is in the same folder)
load_dotenv()
# Change ChatBot initialization (global scope)
bot = ChatBot(api_key=os.getenv("MISTRAL_API_KEY"), model=DEFAULT_MODEL, system_message="", temperature=DEFAULT_TEMPERATURE)
To start the project, open a terminal in the folder where app.py
is located and run:
flask run
This will start the Flask development server. You can then open your web browser and navigate to http://127.0.0.1:5000
to interact with the chatbot.
Here's a brief overview of the project's structure:
- app.py: The main Flask application file that initializes the app and routes.
- templates/: Contains the HTML templates for rendering the web pages.
- static/: Contains static files such as CSS and JavaScript.
- helpers.py: Includes helper functions for handling user authentication and other utilities.
- chatbot.py: Defines the ChatBot class and its methods.
The application provides secure login and registration functionality using Flask-Session to manage user sessions. Passwords are hashed for security.
Users can start new chats or continue previous ones. Each chat is associated with a user and stored in the database. The chat interface displays the conversation history and allows users to send new messages.
The chatbot uses Mistral AI to generate responses based on user inputs. The integration is handled by the ChatBot
class, which sends user inputs to the Mistral API and processes the responses.
After setting up the environment and starting the Flask server, follow these steps to use the chatbot:
- Register: Create a new user account by providing a username, email, and password.
- Login: Log in with your credentials.
- Start a New Chat: Click on "Start a New Chat" to begin a new conversation.
- Interact with the Chatbot: Type your messages and receive responses from the chatbot.
If you encounter issues, check the following:
- Ensure your
MISTRAL_API_KEY
is correctly set. - Verify that all required packages are installed (check
requirements.txt
) or run:
pip install -r requirements.txt
- Check the terminal for error messages and stack traces to debug the issue.
- Ensure the Flask server is running and accessible at
http://127.0.0.1:5000
.
To further enhance the chatbot, consider implementing the following features:
- RAG Training: Train the model on a new data, for example, from Harvard University, so that the Chatbot will be able to answer any questions about Harvard.
- Add Workers through GitHub Actions: Automatically start and deploy your Chatbot on the Internet when an update is pushed/merged to the
main
branch. - User Profiles: Allow users to update their profiles with additional information.
- Chat Export: Provide an option to export chat history as a text file.
- Advanced AI Integration: Explore other AI models or APIs to improve the chatbot's responses.
- Mobile Optimization: Ensure the web interface is fully optimized for mobile devices.
Contributions to the project are welcome. If you have ideas for new features or improvements, feel free to fork the repository and submit a pull request.
This project is licensed under the MIT License. See the LICENSE file for more details.
- CS50x: Thanks to the CS50x course for providing the foundational knowledge and inspiration for this project.
- Flask: A lightweight WSGI web application framework in Python.
- Mistral AI: For providing the AI model used in this project.
For any questions or feedback, please reach out to me on GitHub.
By following this guide and using the provided code, you should be able to set up and run the CS50 AI Chatbot successfully. Happy chatting!