@namzu/deepseek
v1.1.0
Published
DeepSeek LLM provider for @namzu/sdk. Chat Completions with streaming, tool use, and thinking mode mapped onto the kernel's reasoning blocks.
Readme
The DeepSeek model driver for Namzu.
Install · Usage · Image input · Thinking mode · Documentation
Implements the kernel's LLMProvider over DeepSeek's Chat Completions
endpoint, which is OpenAI-shaped — and then diverges where it counts, which is
why this is its own package rather than a baseURL on @namzu/openai.
Installed only if you use it; the kernel has no preferred vendor.
Install
pnpm add @namzu/sdk @namzu/deepseek@namzu/sdk is a peer dependency. Install both. Requires Node.js 20+.
Usage
import { ProviderRegistry } from '@namzu/sdk'
import { registerDeepSeek } from '@namzu/deepseek'
registerDeepSeek() // once, at startup
const { provider } = ProviderRegistry.create({
type: 'deepseek',
apiKey: process.env.DEEPSEEK_API_KEY ?? '',
model: 'deepseek-v4-flash',
})
for await (const chunk of provider.chatStream({
model: 'deepseek-v4-flash',
messages: [{ role: 'user', content: 'Is 91 prime?' }],
})) {
if (chunk.delta.reasoning?.text) process.stderr.write(chunk.delta.reasoning.text)
if (chunk.delta.content) process.stdout.write(chunk.delta.content)
}The built-in catalogue offers deepseek-v4-flash, deepseek-v4-pro, and
deepseek-v4-flash-vision-exp. deepseek-chat and deepseek-reasoner were
discontinued on 2026-07-24 and are not aliases.
Image input
Only deepseek-v4-flash-vision-exp accepts images. User attachments are sent
as ordered image_url data-URL parts. Images returned by tools keep their
role: "tool" result and follow it in a separate user image message, so the
tool-call/result sequence remains valid. PNG, JPEG, WebP and GIF are accepted.
The SDK's accumulated request-rich-content budget still applies before this
projection and leaves durable Run.messages unchanged. This driver currently
uses inline base64 only; it does not upload through the Files API or claim to
normalize or decode caller-supplied image bytes. Documents, unresolved stored
refs, unsupported image types, and images sent to either text model are refused
before transport.
Thinking mode
Thinking is on by default — the vendor's default, not this driver's. The
chain of thought arrives as delta.reasoning fragments, the same channel
@namzu/anthropic uses. The kernel persists it with versioned adapter state and
the exact provider/model/fallback route, so the same configured route replays it
after restart or /resume. A model, provider, or chain-member switch keeps the
portable assistant/tool history and omits the foreign native reasoning field.
Turn it off per call with thinking: { type: 'disabled' }.
Two parameters are refused rather than sent, because the vendor accepts
them and applies neither: effort, and the sampling parameters while thinking
is on. Both refusals, and how to opt out, are in the documentation below.
Documentation
- The DeepSeek driver — image input, thinking mode, reasoning replay, what this wire refuses, and why it carries no price rows
- Namzu docs
License
FSL-1.1-MIT, converting to MIT two years after each release.
