$ pip install markdown pyqt6 google-generativeai anthropic openai requests $ python mychat-pyqt6-v4.py
$ pip install pymupdf python-docx pandas pillow transformers torch pyqt6 google.generativeai markdown anthropic openai accelerate bitsandbytes torchvision chardet openpyxl
$ python mychat-pyqt6-v24.py # latest - fixed various file type handling issues in v6, v24 added full-screen toggle mode
separate app to convert any document type to text represenation for use as LLM prompt:
$ pip install Pillow pytesseract aspose-words python-pptx ebooklib beautifulsoup4 pandas pymupdf
$ python convert_doc_for_llm.py
for pytesseract, you need to have Tesseract OCR engine installed on your system separately. See https://tesseract-ocr.github.io/tessdoc/Installation.html for installation instructions for your operating system.
Features Verified:
Complete Feature Set ✅ All original chat management features preserved ✅ Full API provider support (5 providers) ✅ Session persistence with JSON files ✅ File attachments with size limits ✅ Emoji picker and formatting
UI Enhancements 🎨 Modern dark/light theme with proper contrast 📜 Scroll bars in all required areas 📋 Text selection and copying support 🍔 Menu bar with export/import/config 📱 Responsive 1/5 left pane layout
Stability Improvements 🔒 Comprehensive error handling ⚡ Async API calls with retry logic 📄 PEP-8 compliant code structure
Feature Code Evidence Status
Image Preview _show_image_preview() uses QPixmap with aspect ratio scaling ✅ Pass PDF Text Extraction process_pdf() uses PyMuPDF to extract text + page breaks ✅ Pass Office Doc Processing process_office() handles DOCX/XLSX via python-docx and pandas ✅ Pass Error Handling _handle_processing_error() shows status bar alerts + logs ✅ Pass Thread Safety FileProcessingThread runs separately without UI blocking ✅ Pass
🚀 Simulation Test Summary
Image Upload → Preview displayed + LLaVA description injected into chat
PDF Upload → Text extracted with page breaks + filename shown in preview
DOCX/XLSX Upload → Content converted to markdown/plain text
Switch AI Providers → Config dialog retains all original options
Window State → Geometry restored on app restart via QSettings
Solution for CUDA/Bitsandbytes Error
Root Cause Analysis The error occurs because:
CUDA Not Available - Your system lacks NVIDIA GPU support or CUDA drivers.
Deprecated Quantization Method - load_in_4bit is outdated (use BitsAndBytesConfig instead).
Missing Torchvision - Causes slow image processing.
Step-by-Step Fix
- Update Model Initialization Code Replace deprecated quantization with BitsAndBytesConfig:
python: from transformers import BitsAndBytesConfig # Add this import
def init_models(self):
try:
# Add quantization config
quantization_config = BitsAndBytesConfig(
load_in_4bit=True,
bnb_4bit_use_double_quant=True,
bnb_4bit_quant_type="nf4",
bnb_4bit_compute_dtype=torch.float16
)
self.image_model = LlavaForConditionalGeneration.from_pretrained( "llava-hf/llava-1.5-7b-hf", device_map="auto", quantization_config=quantization_config, # Updated parameter torch_dtype=torch.float16 ) except Exception as e: # Handle errors gracefully logging.error(f"Model init failed: {e}") QMessageBox.critical("Model Error", str(e)) - CUDA Workarounds Option A: Force CPU Mode (Slower but works without GPU):
python: device_map = "cpu" # Add this line
self.image_model = LlavaForConditionalGeneration.from_pretrained(
...,
device_map=device_map,
quantization_config=None # Disable quantization
)
Option B: Install CPU-Compatible bitsandbytes:
bash: pip uninstall bitsandbytes -y
pip install https://github.com/Keith-Hon/bitsandbytes-cpu/archive/refs/heads/main.zip
- Install Missing Dependencies
bash pip install torchvision # Fix slow processor warning
Verification Steps Check CUDA Availability (Run in Python shell):
python: import torch
print(torch.cuda.is_available()) # Should return True if GPU works
Test Model Initialization
If torch.cuda.is_available() == False, use Option A above.
Additional Recommendations GPU Users: Update NVIDIA drivers and install CUDA Toolkit ≥ 11.8.
Apple Silicon Users: Use device_map="mps" for Metal GPU acceleration.
Logging: Add detailed error messages to help debug future issues.
🚀 Expected Outcome After these changes:
The model will initialize in CPU mode (if no GPU is available).
Deprecation warnings will disappear.
Image processing will use the faster processor.








