ac2dded35ba0ae3e1eea86c35a73626282851eb2
Three root causes fixed: 1. docker-compose.yml — celery-worker and celery-beat missing PYTHONPATH=/app ForkPoolWorker processes inherit sys.path with '' (CWD), but fork can change CWD so lazy imports like `from db.session import ...` raised ModuleNotFoundError. Adding PYTHONPATH=/app ensures /app is always explicit in the path. 2. provider_config.py — lmstudio SUPPORTS_JSON_MODE set to False LM Studio only accepts response_format type 'json_schema' or 'text', not 'json_object'. GenericOpenAIProvider now omits response_format for lmstudio and relies on parse_classification() fallback (same path as Gemini). 3. generic_openai_provider.py — max_tokens raised 1024→4096 (classify) / 256→1024 (suggest) Qwen3 thinking models (like qwen/qwen3.5-9b) consume reasoning tokens from the same budget. With max_tokens=1024 the model exhausts the budget in the thinking trace, leaving content=''. 4096 gives room for both thinking and the JSON output. Also updates lmstudio PROVIDER_DEFAULTS model to qwen/qwen3.5-9b (confirmed loaded in LM Studio) and context_chars to 32_000 (Qwen3 context window). Tested: classify(invoice_text, ['Finance','Legal','HR']) → topics=['Finance'] ✓ Backend tests: 376 passed ✓ Co-Authored-By: Claude Sonnet 4.6 <noreply@anthropic.com>
Description
No description provided
8.1 MiB
Languages
Python
57.2%
JavaScript
16.5%
HTML
14.2%
Vue
12%