A desktop GUI application for text classification using LLMs (Ollama, vLLM, SGLang, llama.cpp)
Project description
LLM Classifier GUI
A desktop GUI application for text classification using LLMs. Supports multiple inference backends: Ollama, vLLM, SGLang, and llama.cpp.
Built with Flet and powered by ollama-classifier.
Features
- Multiple backends: Ollama, vLLM, SGLang, llama.cpp (local or remote)
- Load data from CSV or Excel files
- Flexible classification schema: define labels manually or load from a CSV/Excel file
- Two classification methods:
- Classify: single-call prediction with confidence score
- Score: multi-call evaluation with softmax probabilities for all labels
- Output format options:
- Top label only: prediction + confidence
- All labels: each label becomes a column with its probability
- Batch size control: process multiple texts concurrently for speed
- Save results to Excel (merged with original data)
- Dark/Light mode toggle
- Secure storage for API keys
Prerequisites
- Python 3.11+
- At least one inference backend:
- Ollama (local)
- vLLM server
- SGLang server
- llama.cpp server
Linux system dependencies
| Dependency | Purpose | Install (Debian/Ubuntu) |
|---|---|---|
zenity |
File picker dialogs | sudo apt install zenity |
libsecret-1-0 |
Secure storage backend | sudo apt install libsecret-1-0 |
gnome-keyring or kwalletmanager or secret-service |
Keyring service | sudo apt install gnome-keyring |
Installation
# Via uvx (recommended — no installation needed)
uvx ollama-classifier-gui
# Or via pip
pip install ollama-classifier-gui
ollama-classifier-gui
Run from source
uv sync
uv run python -m ollama_classifier_gui.main
Usage
1. Settings tab
Configure your inference backend:
- Select the backend type (Ollama, vLLM, SGLang, llama.cpp)
- Set the endpoint URL (auto-fills with defaults)
- Enter the model name (or use "Test Connection" to auto-detect available models)
- Optionally set an API key for authenticated remote servers
- Toggle dark/light mode
- Click Save Settings
2. Data Input tab
- Click Select File to load a CSV or Excel file
- For Excel files, select the sheet from the dropdown
- Select the text column that contains the text to classify
3. Schema tab
Define your classification labels:
- Manual Labels: click "Add Label" to add labels with optional descriptions
- Load from File: select a CSV/Excel file containing labels (and optionally descriptions)
Then choose:
- Classification Method: Classify (fast) or Score (accurate probabilities)
- Output Format: Top label only or All labels (each as a column)
- Optionally override the system prompt
4. Results tab
- Click Run Classification to start
- Monitor progress in real-time
- Click Save Results to export to Excel (original data + classification columns)
5. Info tab
- Shows the application version and a link to the GitHub repository (both read from the package metadata defined in
pyproject.toml) - Click "Open in Browser" to open the repository in your default browser
Configuration
Settings are stored in a JSON config file:
| OS | Path |
|---|---|
| Linux | $XDG_CONFIG_HOME/ollama-classifier-gui/config.json (fallback ~/.config) |
| macOS | ~/Library/Application Support/ollama-classifier-gui/config.json |
| Windows | %APPDATA%\ollama-classifier-gui\config.json |
API keys are stored separately using the OS native secure storage (Keychain, Credential Manager, libsecret).
Default Endpoints
| Backend | Default URL |
|---|---|
| Ollama | http://localhost:11434 |
| vLLM | http://localhost:8000/v1 |
| SGLang | http://localhost:30000/v1 |
| llama.cpp | http://localhost:8080/v1 |
License
MIT
Change Log
- 0.2.1 — Fix launch & runtime bugs
- Fix the Schema tab "Classification Labels" card that failed to render (Tabs/TabBarView now have bounded height; tab switching wired via
on_change) - Fix "Save Results" Excel export: remove invalid
engineargument and addxlsxwriter(the polars 1.40 writer backend) - Rename entry module
app.py→main.py(run directly withpython -m ollama_classifier_gui.main) - Resolve all Flet deprecation warnings (
ElevatedButton→Button,border.all→Border.all,margin.only→Margin.only) to prepare for Flet 1.0 - Add
tests/smoke tests; fix CI Python matrix (3.11/3.12)
- Fix the Schema tab "Classification Labels" card that failed to render (Tabs/TabBarView now have bounded height; tab switching wired via
- 0.2.2 — Add Info section
- New "Info" navigation tab showing the application version and GitHub repository link (sourced from
pyproject.tomlviaimportlib.metadata)
- New "Info" navigation tab showing the application version and GitHub repository link (sourced from
Project details
Release history Release notifications | RSS feed
Download files
Download the file for your platform. If you're not sure which to choose, learn more about installing packages.
Source Distribution
Built Distribution
Filter files by name, interpreter, ABI, and platform.
If you're not sure about the file name format, learn more about wheel file names.
Copy a direct link to the current filters
File details
Details for the file ollama_classifier_gui-0.2.0.tar.gz.
File metadata
- Download URL: ollama_classifier_gui-0.2.0.tar.gz
- Upload date:
- Size: 57.1 kB
- Tags: Source
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
f1124f8caf53e10c023e36ea2acbdc9645abeec69686fdcf61c3ac89c323451f
|
|
| MD5 |
44b42272592b6fb96cc7102c34e9064a
|
|
| BLAKE2b-256 |
daafa0a19d51e1d5e91090f834aa5a67d04b8fcf10d07032120efb59b0fd953f
|
Provenance
The following attestation bundles were made for ollama_classifier_gui-0.2.0.tar.gz:
Publisher:
python-publish.yml on paluigi/ollama-classifier-gui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ollama_classifier_gui-0.2.0.tar.gz -
Subject digest:
f1124f8caf53e10c023e36ea2acbdc9645abeec69686fdcf61c3ac89c323451f - Sigstore transparency entry: 1828919786
- Sigstore integration time:
-
Permalink:
paluigi/ollama-classifier-gui@6113f4788fa69b13936cd33e5f8b2be82c1d812f -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/paluigi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6113f4788fa69b13936cd33e5f8b2be82c1d812f -
Trigger Event:
release
-
Statement type:
File details
Details for the file ollama_classifier_gui-0.2.0-py3-none-any.whl.
File metadata
- Download URL: ollama_classifier_gui-0.2.0-py3-none-any.whl
- Upload date:
- Size: 16.5 kB
- Tags: Python 3
- Uploaded using Trusted Publishing? Yes
- Uploaded via: twine/6.1.0 CPython/3.13.12
File hashes
| Algorithm | Hash digest | |
|---|---|---|
| SHA256 |
86ffdae2e0bcae1ae0664f457e49993bd16a1ea2344d8354173cd662b51df5b4
|
|
| MD5 |
c826d3e31ce6cc8feb5b34beb21235b1
|
|
| BLAKE2b-256 |
d1d0fcbe3579802c366b72b5fec4c181119fc62935f4f149e765b785f41a2d7e
|
Provenance
The following attestation bundles were made for ollama_classifier_gui-0.2.0-py3-none-any.whl:
Publisher:
python-publish.yml on paluigi/ollama-classifier-gui
-
Statement:
-
Statement type:
https://in-toto.io/Statement/v1 -
Predicate type:
https://docs.pypi.org/attestations/publish/v1 -
Subject name:
ollama_classifier_gui-0.2.0-py3-none-any.whl -
Subject digest:
86ffdae2e0bcae1ae0664f457e49993bd16a1ea2344d8354173cd662b51df5b4 - Sigstore transparency entry: 1828919891
- Sigstore integration time:
-
Permalink:
paluigi/ollama-classifier-gui@6113f4788fa69b13936cd33e5f8b2be82c1d812f -
Branch / Tag:
refs/tags/v0.2.0 - Owner: https://github.com/paluigi
-
Access:
public
-
Token Issuer:
https://token.actions.githubusercontent.com -
Runner Environment:
github-hosted -
Publication workflow:
python-publish.yml@6113f4788fa69b13936cd33e5f8b2be82c1d812f -
Trigger Event:
release
-
Statement type: