Provider Interface
Providers live under apps/api/app/providers.
llm/base.py: reasoning provider for GLM-5.2 or another OpenAI-compatible model.vision/base.py: visual grounding provider for GLM-5V-Turbo or another grounding-capable model.ocr/base.py: OCR provider for GLM-OCR or another structured OCR service.
Lenses depend on interfaces, not concrete providers. Test mode uses deterministic fakes and makes no external API calls.