Skip to content

docs: add the generative-deepseek model provider page set - #513

Merged
g-despot merged 6 commits into
v1-39/mainfrom
v1-39/generative-deepseek
Aug 13, 2026
Merged

docs: add the generative-deepseek model provider page set#513
g-despot merged 6 commits into
v1-39/mainfrom
v1-39/generative-deepseek

Conversation

@g-despot

Copy link
Copy Markdown
Contributor

Rebase of #459 onto the 1.39 release branch, with the client hold lifted. Supersedes #459, which targeted main and predates the morph and twelvelabs page sets.

Diff against v1-39/main is 361 insertions, 0 deletions: nothing from the other two provider sets was disturbed. All three land at disjoint alphabetical positions, so nothing conflicted.

The model aliases are retired, not deprecated

deepseek-chat and deepseek-reasoner are retired and DeepSeek no longer serves them. The generative-deepseek module still defaults to deepseek-chat, so a collection created without a model points at a model that does not exist. The page says to set model on every collection, in three places.

Current models are named as deepseek-v4-flash and deepseek-v4-pro.

Also documented: Weaviate only checks maxTokens against a built-in ceiling for the two retired aliases. For any current model, an over-limit maxTokens is accepted at collection creation and fails later as a DeepSeek error at query time.

Client hold lifted

provider.generative.py carried DEEPSEEK_CLIENT_AVAILABLE = False pending a release containing the DeepSeek builder. That is weaviate-client 4.23.0, which this base already pins, so the guard is removed, the blocks unindented, and their FilteredTextBlock language switched from pyindent back to py.

The builder signature was read at tag v4.23.0 and matches the snippets one for one: base_url, model, temperature, max_tokens, frequency_penalty, presence_penalty, top_p, stop.

One clause of that TODO was deliberately not followed. It also said to add the file to the tests/test_python.py allowlist. No provider.*.py file appears in that allowlist, and adding this one would execute every provider's snippets in the file, requiring credentials for Anthropic, AWS, Cohere, Databricks, Google, Mistral, NVIDIA, OpenAI and others. Display-only is the design for these shared provider includes.

Also in here

  • _category_.json, which deepseek/ was missing. It was the only one of 28 provider directories without one.
  • platform.deepseek.com added to the link-validator ignore list. It 403s automated requests while loading fine in a browser, matching the existing entries for platform.openai.com and others. Both new pages link to it, so the checker fails without it.

CI

Expect the Python lanes to fail at dependency install. weaviate-client 4.23.0 is tagged on GitHub but not yet published to PyPI, so the ==4.23.0 pin on this base cannot resolve. This clears itself when the publish lands.

Document the new generative-deepseek module (DeepSeek as a generative/RAG
provider), available from v1.36.19, v1.37.10, and v1.38.2.

- New provider pages model-providers/deepseek/{index,generative}.md (Python only for now)
- Document the X-Deepseek-Api-Key and X-Deepseek-Baseurl headers and the
  DEEPSEEK_APIKEY env var
- Config keys (model, temperature, maxTokens, frequencyPenalty,
  presencePenalty, topP, baseURL, stop) with defaults
- Recommend deepseek-v4-flash / deepseek-v4-pro; note deepseek-chat and
  deepseek-reasoner are legacy aliases (deprecated 2026-07-24 per DeepSeek)
- Add DeepSeek to the model-providers table and sidebar
- Python snippets show the intended Configure.Generative.deepseek(...) syntax
  (client support to follow); kept out of the CI snippet allowlist
The page shipped with a deprecation notice written as a future event
(2026-07-24). That date has passed, so state it as settled fact:
deepseek-chat and deepseek-reasoner are retired and DeepSeek no longer
serves them.

Core still ships DefaultDeepSeekModel = "deepseek-chat"
(modules/generative-deepseek/config/class_settings.go:33, still true on
v1.38.7), so the page's basic no-model example resolved to a retired
alias. Present setting `model` as required rather than as an optional
refinement: drop the no-model example, lead "Configure collection" with
the warning and then the model-setting example, and disclose the
built-in default as a caution instead of a neutral fact. Name only the
current model names and link DeepSeek's pricing page rather than
maintaining a catalogue.

Correct "Header parameters", which was wrong. X-Deepseek-Api-Key does
not override collection config (there is no API key there); it overrides
the DEEPSEEK_APIKEY env var, and with neither set the request fails with
"api key: no api key found" (clients/deepseek.go:240-248).
X-Deepseek-Baseurl outranks the query-time baseURL param as well as the
collection baseURL (clients/deepseek.go:75, 232-238). Also note that the
base URL must be an API root, since Weaviate appends /chat/completions
to it.

Add two traps that were missing. MODULES_CLIENT_TIMEOUT defaults to 50s
and covers the whole request including the body read
(usecases/config/environment.go:869-876); the module's own acceptance
test raises it to 120s, so reasoning models need a note. And the
maxTokens ceiling is only consulted for the two retired aliases, so for
a current model a value above the model's limit passes validation and
only fails later as an error from DeepSeek; negative values are still
rejected for every model by the unconditional arm of the same check
(class_settings.go:89).

Fold the reasoning caveats into one "Reasoning models" subsection rather
than stacking admonitions, and link MODULES_CLIENT_TIMEOUT by its
APITable row anchor.

Update the Python snippet guard comment: Configure.Generative.deepseek()
and GenerativeConfig.deepseek() are merged upstream (PR #2084, commit
afc0e0eb) and signature-matched, but are not in a released client, so
the blocks stay display-only and out of the test allowlist.

Ignore platform.deepseek.com in the link validator; it 403s automated
requests but loads fine in a browser, matching existing entries.
The DeepSeek blocks shipped behind DEEPSEEK_CLIENT_AVAILABLE = False with a
TODO to lift the hold once pyproject.toml pinned a client release containing
Configure.Generative.deepseek() and GenerativeConfig.deepseek() (PR #2084,
commit afc0e0eb). This base pins weaviate-client==4.23.0, and both builders
exist at that tag with the keyword-only signature the snippets already use:
base_url, model, temperature, max_tokens, frequency_penalty, presence_penalty,
top_p, stop.

Per that TODO: set the flag to True, drop the now-empty guard and unindent the
three blocks, and switch their FilteredTextBlock language from pyindent back
to py, since there is no longer a guard indent to strip.

The TODO's fourth clause, adding this file to the allowlist in
tests/test_python.py, is deliberately not carried out. No model-provider
include is in that allowlist; it lists only files under _includes/code/.
Executing this file end to end would run every provider's snippets and require
a credential per provider, so these blocks stay display-only like every other
block in this file.
Every other model provider directory carries one; deepseek was the only one
without. Position 225.5 places it between Databricks (225) and DigitalOcean
(226), which matches its row in the provider table and its sidebar position.

@orca-security-eu orca-security-eu Bot left a comment

Copy link
Copy Markdown

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Orca Security Scan Summary

Status Check Issues by priority
Passed Passed Secrets high 0   medium 0   low 0   info 0 View in Orca

Copilot AI left a comment

Copy link
Copy Markdown
Contributor

Choose a reason for hiding this comment

The reason will be displayed to describe this comment to others. Learn more.

Pull request overview

Adds DeepSeek generative-model provider documentation for Weaviate 1.39.

Changes:

  • Adds DeepSeek setup, configuration, model, and RAG guidance.
  • Adds Python examples and navigation entries.
  • Excludes DeepSeek’s platform from automated link validation.

Reviewed changes

Copilot reviewed 8 out of 11 changed files in this pull request and generated 1 comment.

Show a summary per file
File Description
sidebars.js Adds DeepSeek navigation.
docs/weaviate/model-providers/index.md Lists DeepSeek support.
docs/weaviate/model-providers/deepseek/index.md Adds provider overview.
docs/weaviate/model-providers/deepseek/generative.md Adds integration guidance.
docs/weaviate/model-providers/deepseek/_category_.json Configures category metadata.
docs/weaviate/model-providers/_includes/provider.generative.py Adds generative examples.
docs/weaviate/model-providers/_includes/provider.connect.py Adds authentication example.
_build_scripts/link-validator.js Ignores DeepSeek platform links.

💡 Add a code-review agent skill or configure MCP servers for context-aware, tailored reviews. Learn more in the docs.

Comment thread docs/weaviate/model-providers/_includes/provider.generative.py Outdated
Co-authored-by: Copilot Autofix powered by AI <175728472+Copilot@users.noreply.github.com>
@g-despot
g-despot merged commit 772e278 into v1-39/main Aug 13, 2026
3 checks passed
@g-despot
g-despot deleted the v1-39/generative-deepseek branch August 13, 2026 14:46
Sign up for free to join this conversation on GitHub. Already have an account? Sign in to comment

Labels

None yet

Projects

None yet

Development

Successfully merging this pull request may close these issues.

2 participants