chat() and chat_json() now delegate think-tag stripping and JSON
cleanup to Prompture's built-in utilities (strip_think_tags,
clean_json_text). Manual regexes are kept only in the OpenAI
fallback path. Adds LM Studio integration test script.
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
Add optional Prompture integration for 12+ LLM providers (LM Studio,
Ollama, Claude, Groq, Kimi/Moonshot, etc.) as a drop-in backend.
Zero breaking changes — falls back to the existing OpenAI SDK client
when Prompture is not installed.
- Rewrite llm_client.py with dual-backend architecture
- Update .env.example with provider/model format examples
- Add multi-provider table to README Quick Start section
- Add prompture as optional dependency in requirements.txt
Co-Authored-By: Claude Opus 4.6 (1M context) <noreply@anthropic.com>
LM Studio and Ollama do not support response_format: json_object,
only json_schema or text. This causes errors when using local LLMs.
The existing markdown fence cleanup logic in chat_json() already
handles parsing JSON from raw LLM output, making response_format
unnecessary. This change follows the same pattern as commit 985f89f
which improved compatibility with diverse model outputs.
Tested with: LM Studio + qwen3.5-9b (full predict pipeline passes)