#1044 LLM router: Prism provider, deepseek-v4-flash as default chat model (#921 chat half)
Description
EditEARS SPEC:
- The LLM router shall offer a provider 'prism' (OpenAI-compatible, base [llm.providers.prism] base_url default https://prism.rodmena.co.uk/v1) authenticated with the platform secret prism_api_key, read through Config.get_secret (file, then SECRET_PRISM_API_KEY env; #924).
- default_route and the agent/fast/smart/cheap routes shall use prism/deepseek-v4-flash as the first candidate; Ollama stays configured only for embeddings until Prism serves /v1/embeddings.
- If prism_api_key is missing, then the prism provider shall not appear in any route and /api/v1/health llm_routes shall report the routes with zero live candidates as down.
- If Prism answers 400, 401, 403, 404 or 413, then the LLM step shall fail non-retryably with Prism's error code and message (<= 500 chars).
- If Prism answers 429, then the step shall be retried no earlier than the reset time named in the response (Retry-After when present), within the task's retry policy.
- If Prism answers 503 (model_unavailable, metering_unavailable, auth_service_unavailable), then the step shall retry with backoff honouring Retry-After; if 502 or 504, then at most one retry.
- If a 200 response has finish_reason content_filter or length, then the step shall fail with that reason and shall not return partial content as success.
- When a caller asks for structured output with a JSON Schema on deepseek-v4-flash, the router shall send response_format json_object with the schema in the system prompt and shall validate the parsed result against the schema; a result that does not validate shall fail the step (json_schema is refused upstream with 400, measured 2026-10-22).
- The router shall send max_tokens on every Prism call (Prism reserves prompt + max_tokens against the TokenGate budget; reasoning tokens count against max_tokens).
EVIDENCE 2026-10-22 22:28Z with the Highway key: models 200; chat 200 0.88 s; tools 200 finish_reason tool_calls; json_schema 400 'This response_format type is unavailable now'; json_object + prompt schema 200, values exact; crypto-trader alias 403 model_not_allowed. Limits: bucket 2000, 200/s, 1M req/day, 5e9 tokens/day. Single upstream (DeepSeek), no fallback until Prism #81. Parent #921, #913.
Comments
Loading comments...
Context
Loading context...
Audit History
View AllLoading audit history...