For a detailed description of the project’s goals, architecture, and deliverables, see Project description.md.
This application is an interactive chat-based GUI for data analysis, powered by PyQt5 and a local LLM (Large Language Model) backend. It allows users to:
- Chat with an AI assistant
- Upload datasets (CSV or text files)
- Request statistical analysis and visualizations via natural language
- View results (including plots) directly in the chat interface
- Manage multiple chat rooms, each with its own context and file
- Create, switch, and delete chat rooms
- Each room maintains its own chat history and file context
- Upload CSV or text files to a chat room
- The uploaded file becomes the context for that room
- The AI can answer questions and perform analysis based on the loaded file
- Ask questions about the uploaded file in plain English
- Example:
What is the mean of column A? - Example:
Show the time series for KO samples
- Request plots by describing them in chat
- Example:
Plot histogram of column X - Example:
Plot the ratio of A to B - Plots are generated using matplotlib and shown directly in the chat
- Request ratio analysis between columns
- Example:
Show the ratio of column1 to column2 - Get summary statistics, head, and description of the dataset
- If a file is loaded, the LLM uses it as context (RAG)
- If no file is loaded, the LLM answers general questions
- Responsive, resizable interface
- Status bar for feedback
- Clean separation of UI and logic for maintainability
-
Clone the repository
-
Install dependencies (in your virtual environment):
pip install -r requirements.txt
-
Set up your local LLM backend (e.g., Ollama)
- See Set Up Ollama.md for platform-specific installation and setup instructions.
-
Run the application:
python main.py
- Start the app:
python main.py - Create or select a chat room
- Click
Load Fileto upload a CSV or text file - Type your analysis request (e.g.,
plot histogram of column X,show the ratio of A to B) - View results and plots in the chat
Plot histogram of column temperatureShow the ratio of pressure to volumeWhat are the main differences between OK and KO samples?Describe the dataset
main.py
logic/
llm_handler.py
...
gui/
chat_window.py
room_list_panel.py
chat_display_panel.py
input_panel.py
...
dataset/
resources/
tests/
- Python 3.8+
- PyQt5
- pandas, matplotlib
- langchain, ollama, faiss, etc. (see requirements.txt)
MIT