DeepSeek
Configure deepseek deployments and understand provider-specific behavior.
Configure a deployment
Send this body to POST /admin/deployments with an operator credential. Replace the example
credentials and choose a model available to your provider account. See
Creating deployments for the shared configuration fields.
{ "publicModel": "deepseek", "adapterKey": "deepseek", "upstreamModel": "deepseek-v4-flash", "credentials": { "apiKey": "..." } }Behavior and limitations
- Credentials:
apiKeyonly. NobaseUrlneeded — defaults tohttps://api.deepseek.com/v1. - Default transport: Chat Completions. Strict tools automatically use DeepSeek's
/betaChat endpoint and require every declared function to setstrict: true— DeepSeek validates the schema server-side and rejects unsupported constructs. JSON Schema output on V4 models requires an explicittransportOverrides["text.generate"]: "responses", wheretext.formatis supported and toolstrictis not. Requests never switch transport automatically, and the two strict modes cannot be combined in one DeepSeek request. - Base URL per feature: the Responses transport is pinned to
https://api.deepseek.comand strict tools tohttps://api.deepseek.com/beta, because DeepSeek documents/v1only as an OpenAI-SDK alias for Chat Completions. A custombaseUrlis never rewritten. - Reasoning:
openai_body(nativethinking/effort controls), per model in the catalog. On the Responses transport those controls are emitted as OpenAI's nestedreasoning.effortinstead, which is what DeepSeek supports there — it silently ignores unknown top-level keys, so the Chat-shapedthinkingfield is deliberately not sent. deepseek-chatanddeepseek-reasonerare retired compatibility aliases. New deployments should usedeepseek-v4-flashordeepseek-v4-pro.- Catalog:
src/adapters/deepseek/catalog.json.
Next steps
- Reasoning — the
openai_bodykind in detail. - Creating deployments — the full request shape.