@namzu/deepseek 1.0.0 → 1.1.0
This diff represents the content of publicly available package versions that have been released to one of the supported registries. The information contained in this diff is provided for informational purposes only and reflects changes between package versions as they appear in their respective public registries.
- package/CHANGELOG.md +6 -0
- package/README.md +21 -6
- package/dist/client.d.ts +1 -9
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +144 -34
- package/dist/client.js.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +161 -35
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,11 @@
|
|
|
1
1
|
# @namzu/deepseek
|
|
2
2
|
|
|
3
|
+
## 1.1.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- 77242a0: Expose optional per-model input modalities through `ModelInfo`, add inline image input for DeepSeek's vision preview while refusing images on text models and documents on every DeepSeek model, and label models whose listing explicitly advertises image input in the CLI picker.
|
|
8
|
+
|
|
3
9
|
## 1.0.0
|
|
4
10
|
|
|
5
11
|
### Major Changes
|
package/README.md
CHANGED
|
@@ -3,8 +3,8 @@ type: Reference
|
|
|
3
3
|
title: "@namzu/deepseek"
|
|
4
4
|
description: >-
|
|
5
5
|
The DeepSeek model driver for the Namzu agent kernel. Chat Completions with
|
|
6
|
-
streaming
|
|
7
|
-
blocks in both directions.
|
|
6
|
+
streaming, tool use and inline image input, with thinking mode mapped onto
|
|
7
|
+
the kernel's reasoning blocks in both directions.
|
|
8
8
|
tags: [readme, package, provider, deepseek]
|
|
9
9
|
timestamp: 2026-08-20T00:00:00Z
|
|
10
10
|
status: active
|
|
@@ -21,7 +21,7 @@ diataxis: reference
|
|
|
21
21
|
[](https://github.com/cogitave/namzu/actions/workflows/ci.yml)
|
|
22
22
|
[](https://github.com/cogitave/namzu/blob/main/LICENSE.md)
|
|
23
23
|
|
|
24
|
-
[Install](#install) · [Usage](#usage) · [Thinking mode](#thinking-mode) · [Documentation](#documentation)
|
|
24
|
+
[Install](#install) · [Usage](#usage) · [Image input](#image-input) · [Thinking mode](#thinking-mode) · [Documentation](#documentation)
|
|
25
25
|
|
|
26
26
|
</div>
|
|
27
27
|
|
|
@@ -63,8 +63,23 @@ for await (const chunk of provider.chatStream({
|
|
|
63
63
|
}
|
|
64
64
|
```
|
|
65
65
|
|
|
66
|
-
|
|
67
|
-
`deepseek-
|
|
66
|
+
The built-in catalogue offers `deepseek-v4-flash`, `deepseek-v4-pro`, and
|
|
67
|
+
`deepseek-v4-flash-vision-exp`. `deepseek-chat` and `deepseek-reasoner` were
|
|
68
|
+
discontinued on 2026-07-24 and are not aliases.
|
|
69
|
+
|
|
70
|
+
## Image input
|
|
71
|
+
|
|
72
|
+
Only `deepseek-v4-flash-vision-exp` accepts images. User attachments are sent
|
|
73
|
+
as ordered `image_url` data-URL parts. Images returned by tools keep their
|
|
74
|
+
`role: "tool"` result and follow it in a separate user image message, so the
|
|
75
|
+
tool-call/result sequence remains valid. PNG, JPEG, WebP and GIF are accepted.
|
|
76
|
+
|
|
77
|
+
The SDK's accumulated request-rich-content budget still applies before this
|
|
78
|
+
projection and leaves durable `Run.messages` unchanged. This driver currently
|
|
79
|
+
uses inline base64 only; it does not upload through the Files API or claim to
|
|
80
|
+
normalize or decode caller-supplied image bytes. Documents, unresolved stored
|
|
81
|
+
refs, unsupported image types, and images sent to either text model are refused
|
|
82
|
+
before transport.
|
|
68
83
|
|
|
69
84
|
## Thinking mode
|
|
70
85
|
|
|
@@ -83,7 +98,7 @@ is on. Both refusals, and how to opt out, are in the documentation below.
|
|
|
83
98
|
|
|
84
99
|
## Documentation
|
|
85
100
|
|
|
86
|
-
- [The DeepSeek driver](https://github.com/cogitave/namzu/blob/main/docs/providers/deepseek.md) — thinking mode, reasoning replay, what this wire refuses, and why it carries no price rows
|
|
101
|
+
- [The DeepSeek driver](https://github.com/cogitave/namzu/blob/main/docs/providers/deepseek.md) — image input, thinking mode, reasoning replay, what this wire refuses, and why it carries no price rows
|
|
87
102
|
- [Namzu docs](https://github.com/cogitave/namzu/tree/main/docs)
|
|
88
103
|
|
|
89
104
|
## License
|
package/dist/client.d.ts
CHANGED
|
@@ -1,15 +1,7 @@
|
|
|
1
1
|
import type { ChatCompletionParams, LLMProvider, ModelInfo, ProviderCapabilities, ProviderRoute, ReasoningEffort, StreamChunk, ThinkingConfig } from '@namzu/sdk';
|
|
2
2
|
import type { ChatCompletionMessageParam, ChatCompletionTool } from 'openai/resources/chat/completions';
|
|
3
3
|
import type { DeepSeekConfig } from './types.js';
|
|
4
|
-
/**
|
|
5
|
-
* No vision, no documents.
|
|
6
|
-
*
|
|
7
|
-
* The wire is OpenAI's Chat Completions, which has `image_url` content parts —
|
|
8
|
-
* but the models behind this endpoint are text-only, and a capability set is a
|
|
9
|
-
* claim about what a call will actually do, not about what the request format
|
|
10
|
-
* can express. Claiming vision here would route an image-bearing run to a
|
|
11
|
-
* driver that sends the image and gets prose about nothing.
|
|
12
|
-
*/
|
|
4
|
+
/** Driver-level mapping capabilities; model input support is listed separately. */
|
|
13
5
|
export declare const DEEPSEEK_CAPABILITIES: ProviderCapabilities;
|
|
14
6
|
/**
|
|
15
7
|
* Is thinking on for this call?
|
package/dist/client.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,
|
|
1
|
+
{"version":3,"file":"client.d.ts","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"AAAA,OAAO,KAAK,EACX,oBAAoB,EAGpB,WAAW,EACX,SAAS,EAET,oBAAoB,EACpB,aAAa,EAEb,eAAe,EACf,WAAW,EACX,cAAc,EAId,MAAM,YAAY,CAAA;AAUnB,OAAO,KAAK,EACX,0BAA0B,EAC1B,kBAAkB,EAElB,MAAM,mCAAmC,CAAA;AAC1C,OAAO,KAAK,EAAE,cAAc,EAAE,MAAM,YAAY,CAAA;AAEhD,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,oBAMnC,CAAA;AAoGD;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAAC,QAAQ,EAAE,cAAc,GAAG,SAAS,GAAG,OAAO,CAE7E;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACvB,IAAI,CAQN;AAED;;;;;;;;;;;;;GAaG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAK1E;AAuGD,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAC1C,WAAW,EAAE,aAAa,GACxB,0BAA0B,EAAE,CA6E9B;AA0ED,wBAAgB,eAAe,CAAC,MAAM,EAAE,oBAAoB,GAAG,kBAAkB,EAAE,GAAG,SAAS,CAe9F;AAED,qBAAa,gBAAiB,YAAW,WAAW;IACnD,QAAQ,CAAC,EAAE,cAAa;IACxB,QAAQ,CAAC,IAAI,cAAa;IAC1B,QAAQ,CAAC,YAAY,uBAAwB;IAE7C,OAAO,CAAC,MAAM,CAAQ;IACtB,OAAO,CAAC,YAAY,CAAC,CAAQ;IAC7B,OAAO,CAAC,YAAY,CAAqB;gBAE7B,MAAM,EAAE,cAAc;IAmBlC,OAAO,CAAC,YAAY;IAUpB,2EAA2E;IAC3E,wBAAwB,CAAC,MAAM,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAI7D,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,CAAC,WAAW,CAAC;IA6KrE,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IAyBtD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQrC"}
|
package/dist/client.js
CHANGED
|
@@ -1,22 +1,27 @@
|
|
|
1
|
-
import { ProviderRequestError, attributionHeaders, isCallerAbortError, isProviderRequestError, providerVendorError,
|
|
1
|
+
import { ProviderRequestError, attributionHeaders, isCallerAbortError, isProviderRequestError, providerVendorError, toToolResultBlocks, } from '@namzu/sdk';
|
|
2
2
|
import OpenAI from 'openai';
|
|
3
|
-
/**
|
|
4
|
-
* No vision, no documents.
|
|
5
|
-
*
|
|
6
|
-
* The wire is OpenAI's Chat Completions, which has `image_url` content parts —
|
|
7
|
-
* but the models behind this endpoint are text-only, and a capability set is a
|
|
8
|
-
* claim about what a call will actually do, not about what the request format
|
|
9
|
-
* can express. Claiming vision here would route an image-bearing run to a
|
|
10
|
-
* driver that sends the image and gets prose about nothing.
|
|
11
|
-
*/
|
|
3
|
+
/** Driver-level mapping capabilities; model input support is listed separately. */
|
|
12
4
|
export const DEEPSEEK_CAPABILITIES = {
|
|
13
5
|
supportsTools: true,
|
|
14
6
|
supportsStreaming: true,
|
|
15
7
|
supportsFunctionCalling: true,
|
|
16
|
-
supportsVision:
|
|
8
|
+
supportsVision: true,
|
|
17
9
|
supportsDocuments: false,
|
|
18
10
|
};
|
|
19
11
|
const DEFAULT_BASE_URL = 'https://api.deepseek.com';
|
|
12
|
+
const VISION_MODEL = 'deepseek-v4-flash-vision-exp';
|
|
13
|
+
const TEXT_MODALITIES = Object.freeze(['text']);
|
|
14
|
+
const VISION_MODALITIES = Object.freeze(['text', 'image']);
|
|
15
|
+
const IMAGE_MEDIA_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif']);
|
|
16
|
+
const KNOWN_MODELS = Object.freeze([
|
|
17
|
+
{ id: 'deepseek-v4-flash', name: 'DeepSeek-V4-Flash', inputModalities: TEXT_MODALITIES },
|
|
18
|
+
{ id: 'deepseek-v4-pro', name: 'DeepSeek-V4-Pro', inputModalities: TEXT_MODALITIES },
|
|
19
|
+
{
|
|
20
|
+
id: VISION_MODEL,
|
|
21
|
+
name: 'DeepSeek-V4-Flash-Vision-Exp',
|
|
22
|
+
inputModalities: VISION_MODALITIES,
|
|
23
|
+
},
|
|
24
|
+
]);
|
|
20
25
|
function mapFinishReason(reason) {
|
|
21
26
|
switch (reason) {
|
|
22
27
|
case 'length':
|
|
@@ -189,25 +194,59 @@ function replayReasoning(message, targetRoute) {
|
|
|
189
194
|
return durable !== undefined && durable === state.reasoningContent ? durable : undefined;
|
|
190
195
|
}
|
|
191
196
|
export function toDeepSeekMessages(messages, targetRoute) {
|
|
192
|
-
|
|
193
|
-
|
|
194
|
-
|
|
197
|
+
assertDeepSeekRichContent(messages, targetRoute.model);
|
|
198
|
+
const imagePart = (image) => ({
|
|
199
|
+
type: 'image_url',
|
|
200
|
+
image_url: { url: `data:${image.mediaType};base64,${image.data}` },
|
|
201
|
+
});
|
|
202
|
+
const wire = [];
|
|
203
|
+
let pendingToolImages = [];
|
|
204
|
+
const flushToolImages = () => {
|
|
205
|
+
if (pendingToolImages.length === 0)
|
|
206
|
+
return;
|
|
207
|
+
wire.push({
|
|
208
|
+
role: 'user',
|
|
209
|
+
content: [
|
|
210
|
+
{ type: 'text', text: 'Attached image(s) from tool result:' },
|
|
211
|
+
...pendingToolImages,
|
|
212
|
+
],
|
|
213
|
+
});
|
|
214
|
+
pendingToolImages = [];
|
|
215
|
+
};
|
|
216
|
+
for (const msg of messages) {
|
|
217
|
+
if (msg.role !== 'tool')
|
|
218
|
+
flushToolImages();
|
|
219
|
+
if (msg.role === 'system') {
|
|
220
|
+
wire.push({ role: 'system', content: msg.content });
|
|
221
|
+
continue;
|
|
222
|
+
}
|
|
195
223
|
if (msg.role === 'user') {
|
|
196
|
-
|
|
197
|
-
|
|
198
|
-
|
|
199
|
-
// a picture it never saw.
|
|
200
|
-
if (msg.attachments && msg.attachments.length > 0) {
|
|
201
|
-
throw new Error('DeepSeekProvider: this driver has no vision or document support, and a message carried attachments. Route multimodal turns to a provider whose capabilities include them.');
|
|
224
|
+
if (!msg.attachments || msg.attachments.length === 0) {
|
|
225
|
+
wire.push({ role: 'user', content: msg.content });
|
|
226
|
+
continue;
|
|
202
227
|
}
|
|
203
|
-
|
|
228
|
+
const content = [];
|
|
229
|
+
if (msg.content.length > 0)
|
|
230
|
+
content.push({ type: 'text', text: msg.content });
|
|
231
|
+
for (const attachment of msg.attachments) {
|
|
232
|
+
// The preflight above proves these are inline images. This local check
|
|
233
|
+
// keeps the narrowing explicit instead of casting a public union.
|
|
234
|
+
if (attachment.type === 'stored' || attachment.type === 'document')
|
|
235
|
+
continue;
|
|
236
|
+
content.push(imagePart(attachment));
|
|
237
|
+
}
|
|
238
|
+
wire.push({ role: 'user', content });
|
|
239
|
+
continue;
|
|
204
240
|
}
|
|
205
241
|
if (msg.role === 'tool') {
|
|
206
|
-
|
|
242
|
+
const { text, images } = splitToolResult(msg.content);
|
|
243
|
+
wire.push({
|
|
207
244
|
role: 'tool',
|
|
208
|
-
content:
|
|
245
|
+
content: text || '(no output)',
|
|
209
246
|
tool_call_id: msg.toolCallId,
|
|
210
|
-
};
|
|
247
|
+
});
|
|
248
|
+
pendingToolImages.push(...images.map(imagePart));
|
|
249
|
+
continue;
|
|
211
250
|
}
|
|
212
251
|
const assistant = {
|
|
213
252
|
role: 'assistant',
|
|
@@ -229,8 +268,67 @@ export function toDeepSeekMessages(messages, targetRoute) {
|
|
|
229
268
|
;
|
|
230
269
|
assistant.reasoning_content = replayed;
|
|
231
270
|
}
|
|
232
|
-
|
|
233
|
-
}
|
|
271
|
+
wire.push(assistant);
|
|
272
|
+
}
|
|
273
|
+
flushToolImages();
|
|
274
|
+
return wire;
|
|
275
|
+
}
|
|
276
|
+
function splitToolResult(content) {
|
|
277
|
+
const text = [];
|
|
278
|
+
const images = [];
|
|
279
|
+
for (const block of toToolResultBlocks(content)) {
|
|
280
|
+
if (block.type === 'text')
|
|
281
|
+
text.push(block.text);
|
|
282
|
+
else if (block.type === 'image')
|
|
283
|
+
images.push(block);
|
|
284
|
+
}
|
|
285
|
+
return { text: text.join('\n'), images };
|
|
286
|
+
}
|
|
287
|
+
/**
|
|
288
|
+
* Refuse every rich-content shape this exact model/wire cannot represent.
|
|
289
|
+
*
|
|
290
|
+
* This runs before the request object is built, so a text model never sees an
|
|
291
|
+
* image data URL and a document never reaches a wire that would silently drop
|
|
292
|
+
* it. Stored user refs should have been resolved by the SDK attachment store;
|
|
293
|
+
* accepting one here would serialize a reference rather than its bytes.
|
|
294
|
+
*/
|
|
295
|
+
function assertDeepSeekRichContent(messages, model) {
|
|
296
|
+
let hasImage = false;
|
|
297
|
+
const acceptImage = (mediaType) => {
|
|
298
|
+
if (!IMAGE_MEDIA_TYPES.has(mediaType)) {
|
|
299
|
+
throw new Error(`DeepSeekProvider: image type '${mediaType}' is not supported. Use image/png, image/jpeg, image/webp, or image/gif.`);
|
|
300
|
+
}
|
|
301
|
+
hasImage = true;
|
|
302
|
+
};
|
|
303
|
+
for (const message of messages) {
|
|
304
|
+
if (message.role === 'user') {
|
|
305
|
+
for (const attachment of message.attachments ?? []) {
|
|
306
|
+
if (attachment.type === 'stored') {
|
|
307
|
+
throw new Error('DeepSeekProvider: an unresolved stored attachment reached the driver. Configure an AttachmentStore so Namzu can resolve its bytes before the model request.');
|
|
308
|
+
}
|
|
309
|
+
if (attachment.type === 'document') {
|
|
310
|
+
throw new Error('DeepSeekProvider: this Chat Completions driver does not support document input. Route the turn to a document-capable provider.');
|
|
311
|
+
}
|
|
312
|
+
acceptImage(attachment.mediaType);
|
|
313
|
+
}
|
|
314
|
+
continue;
|
|
315
|
+
}
|
|
316
|
+
if (message.role !== 'tool')
|
|
317
|
+
continue;
|
|
318
|
+
for (const block of toToolResultBlocks(message.content)) {
|
|
319
|
+
if (block.type === 'document') {
|
|
320
|
+
throw new Error('DeepSeekProvider: this Chat Completions driver does not support document tool results. Route the turn to a document-capable provider.');
|
|
321
|
+
}
|
|
322
|
+
if (block.type === 'image')
|
|
323
|
+
acceptImage(block.mediaType);
|
|
324
|
+
}
|
|
325
|
+
}
|
|
326
|
+
if (hasImage && model !== VISION_MODEL) {
|
|
327
|
+
throw new Error(`DeepSeekProvider: model '${model}' does not accept image input. Select '${VISION_MODEL}' or remove the images.`);
|
|
328
|
+
}
|
|
329
|
+
}
|
|
330
|
+
function inputModalitiesFor(model) {
|
|
331
|
+
return KNOWN_MODELS.find((candidate) => candidate.id === model)?.inputModalities;
|
|
234
332
|
}
|
|
235
333
|
export function toDeepSeekTools(params) {
|
|
236
334
|
if (!params.tools || params.tools.length === 0)
|
|
@@ -443,14 +541,26 @@ export class DeepSeekProvider {
|
|
|
443
541
|
signal?.throwIfAborted();
|
|
444
542
|
const page = await this.client.models.list(signal ? { signal } : undefined);
|
|
445
543
|
signal?.throwIfAborted();
|
|
446
|
-
|
|
447
|
-
|
|
448
|
-
name:
|
|
449
|
-
|
|
450
|
-
|
|
451
|
-
|
|
452
|
-
|
|
453
|
-
|
|
544
|
+
const models = new Map();
|
|
545
|
+
for (const model of page.data)
|
|
546
|
+
models.set(model.id, { id: model.id, name: model.id });
|
|
547
|
+
// The preview model is part of the source adapter's verified default
|
|
548
|
+
// catalogue but may lag the account listing endpoint. A successful list
|
|
549
|
+
// therefore augments rather than erases the known selectable catalogue.
|
|
550
|
+
for (const model of KNOWN_MODELS) {
|
|
551
|
+
models.set(model.id, { id: model.id, name: model.name });
|
|
552
|
+
}
|
|
553
|
+
return [...models.values()].map((model) => {
|
|
554
|
+
const inputModalities = inputModalitiesFor(model.id);
|
|
555
|
+
return {
|
|
556
|
+
...model,
|
|
557
|
+
...(inputModalities !== undefined ? { inputModalities } : {}),
|
|
558
|
+
inputPrice: 0,
|
|
559
|
+
outputPrice: 0,
|
|
560
|
+
supportsToolUse: true,
|
|
561
|
+
supportsStreaming: true,
|
|
562
|
+
};
|
|
563
|
+
});
|
|
454
564
|
}
|
|
455
565
|
async healthCheck() {
|
|
456
566
|
try {
|
package/dist/client.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
|
1
|
+
{"version":3,"file":"client.js","sourceRoot":"","sources":["../src/client.ts"],"names":[],"mappings":"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"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namzu/deepseek",
|
|
3
|
-
"version": "1.
|
|
3
|
+
"version": "1.1.0",
|
|
4
4
|
"description": "DeepSeek LLM provider for @namzu/sdk. Chat Completions with streaming, tool use, and thinking mode mapped onto the kernel's reasoning blocks.",
|
|
5
5
|
"license": "FSL-1.1-MIT",
|
|
6
6
|
"engines": {
|
|
@@ -57,7 +57,7 @@
|
|
|
57
57
|
"@types/node": "^22.19.17",
|
|
58
58
|
"typescript": "^5.5.0",
|
|
59
59
|
"vitest": "^3.2.6",
|
|
60
|
-
"@namzu/sdk": "^31.
|
|
60
|
+
"@namzu/sdk": "^31.1.0"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"build": "tsc --build",
|
package/src/client.ts
CHANGED
|
@@ -1,8 +1,10 @@
|
|
|
1
1
|
import type {
|
|
2
2
|
ChatCompletionParams,
|
|
3
3
|
ChatCompletionResponse,
|
|
4
|
+
ImageAttachment,
|
|
4
5
|
LLMProvider,
|
|
5
6
|
ModelInfo,
|
|
7
|
+
ModelInputModality,
|
|
6
8
|
ProviderCapabilities,
|
|
7
9
|
ProviderRoute,
|
|
8
10
|
ReasoningBlock,
|
|
@@ -11,6 +13,7 @@ import type {
|
|
|
11
13
|
ThinkingConfig,
|
|
12
14
|
TokenUsage,
|
|
13
15
|
ToolChoice,
|
|
16
|
+
ToolResultContent,
|
|
14
17
|
} from '@namzu/sdk'
|
|
15
18
|
import {
|
|
16
19
|
ProviderRequestError,
|
|
@@ -18,7 +21,7 @@ import {
|
|
|
18
21
|
isCallerAbortError,
|
|
19
22
|
isProviderRequestError,
|
|
20
23
|
providerVendorError,
|
|
21
|
-
|
|
24
|
+
toToolResultBlocks,
|
|
22
25
|
} from '@namzu/sdk'
|
|
23
26
|
import OpenAI from 'openai'
|
|
24
27
|
import type {
|
|
@@ -28,24 +31,29 @@ import type {
|
|
|
28
31
|
} from 'openai/resources/chat/completions'
|
|
29
32
|
import type { DeepSeekConfig } from './types.js'
|
|
30
33
|
|
|
31
|
-
/**
|
|
32
|
-
* No vision, no documents.
|
|
33
|
-
*
|
|
34
|
-
* The wire is OpenAI's Chat Completions, which has `image_url` content parts —
|
|
35
|
-
* but the models behind this endpoint are text-only, and a capability set is a
|
|
36
|
-
* claim about what a call will actually do, not about what the request format
|
|
37
|
-
* can express. Claiming vision here would route an image-bearing run to a
|
|
38
|
-
* driver that sends the image and gets prose about nothing.
|
|
39
|
-
*/
|
|
34
|
+
/** Driver-level mapping capabilities; model input support is listed separately. */
|
|
40
35
|
export const DEEPSEEK_CAPABILITIES: ProviderCapabilities = {
|
|
41
36
|
supportsTools: true,
|
|
42
37
|
supportsStreaming: true,
|
|
43
38
|
supportsFunctionCalling: true,
|
|
44
|
-
supportsVision:
|
|
39
|
+
supportsVision: true,
|
|
45
40
|
supportsDocuments: false,
|
|
46
41
|
}
|
|
47
42
|
|
|
48
43
|
const DEFAULT_BASE_URL = 'https://api.deepseek.com'
|
|
44
|
+
const VISION_MODEL = 'deepseek-v4-flash-vision-exp'
|
|
45
|
+
const TEXT_MODALITIES = Object.freeze(['text'] as const)
|
|
46
|
+
const VISION_MODALITIES = Object.freeze(['text', 'image'] as const)
|
|
47
|
+
const IMAGE_MEDIA_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif'])
|
|
48
|
+
const KNOWN_MODELS = Object.freeze([
|
|
49
|
+
{ id: 'deepseek-v4-flash', name: 'DeepSeek-V4-Flash', inputModalities: TEXT_MODALITIES },
|
|
50
|
+
{ id: 'deepseek-v4-pro', name: 'DeepSeek-V4-Pro', inputModalities: TEXT_MODALITIES },
|
|
51
|
+
{
|
|
52
|
+
id: VISION_MODEL,
|
|
53
|
+
name: 'DeepSeek-V4-Flash-Vision-Exp',
|
|
54
|
+
inputModalities: VISION_MODALITIES,
|
|
55
|
+
},
|
|
56
|
+
] as const)
|
|
49
57
|
|
|
50
58
|
type DeepSeekFinishReason =
|
|
51
59
|
| 'stop'
|
|
@@ -294,26 +302,59 @@ export function toDeepSeekMessages(
|
|
|
294
302
|
messages: ChatCompletionParams['messages'],
|
|
295
303
|
targetRoute: ProviderRoute,
|
|
296
304
|
): ChatCompletionMessageParam[] {
|
|
297
|
-
|
|
298
|
-
|
|
305
|
+
assertDeepSeekRichContent(messages, targetRoute.model)
|
|
306
|
+
|
|
307
|
+
type ImagePart = { type: 'image_url'; image_url: { url: string } }
|
|
308
|
+
type UserPart = { type: 'text'; text: string } | ImagePart
|
|
309
|
+
const imagePart = (image: ImageAttachment): ImagePart => ({
|
|
310
|
+
type: 'image_url',
|
|
311
|
+
image_url: { url: `data:${image.mediaType};base64,${image.data}` },
|
|
312
|
+
})
|
|
313
|
+
const wire: ChatCompletionMessageParam[] = []
|
|
314
|
+
let pendingToolImages: ImagePart[] = []
|
|
315
|
+
const flushToolImages = (): void => {
|
|
316
|
+
if (pendingToolImages.length === 0) return
|
|
317
|
+
wire.push({
|
|
318
|
+
role: 'user',
|
|
319
|
+
content: [
|
|
320
|
+
{ type: 'text', text: 'Attached image(s) from tool result:' },
|
|
321
|
+
...pendingToolImages,
|
|
322
|
+
],
|
|
323
|
+
})
|
|
324
|
+
pendingToolImages = []
|
|
325
|
+
}
|
|
326
|
+
|
|
327
|
+
for (const msg of messages) {
|
|
328
|
+
if (msg.role !== 'tool') flushToolImages()
|
|
329
|
+
if (msg.role === 'system') {
|
|
330
|
+
wire.push({ role: 'system', content: msg.content })
|
|
331
|
+
continue
|
|
332
|
+
}
|
|
299
333
|
if (msg.role === 'user') {
|
|
300
|
-
|
|
301
|
-
|
|
302
|
-
|
|
303
|
-
|
|
304
|
-
|
|
305
|
-
|
|
306
|
-
|
|
307
|
-
|
|
334
|
+
if (!msg.attachments || msg.attachments.length === 0) {
|
|
335
|
+
wire.push({ role: 'user', content: msg.content })
|
|
336
|
+
continue
|
|
337
|
+
}
|
|
338
|
+
const content: UserPart[] = []
|
|
339
|
+
if (msg.content.length > 0) content.push({ type: 'text', text: msg.content })
|
|
340
|
+
for (const attachment of msg.attachments) {
|
|
341
|
+
// The preflight above proves these are inline images. This local check
|
|
342
|
+
// keeps the narrowing explicit instead of casting a public union.
|
|
343
|
+
if (attachment.type === 'stored' || attachment.type === 'document') continue
|
|
344
|
+
content.push(imagePart(attachment))
|
|
308
345
|
}
|
|
309
|
-
|
|
346
|
+
wire.push({ role: 'user', content })
|
|
347
|
+
continue
|
|
310
348
|
}
|
|
311
349
|
if (msg.role === 'tool') {
|
|
312
|
-
|
|
350
|
+
const { text, images } = splitToolResult(msg.content)
|
|
351
|
+
wire.push({
|
|
313
352
|
role: 'tool',
|
|
314
|
-
content:
|
|
353
|
+
content: text || '(no output)',
|
|
315
354
|
tool_call_id: msg.toolCallId,
|
|
316
|
-
}
|
|
355
|
+
})
|
|
356
|
+
pendingToolImages.push(...images.map(imagePart))
|
|
357
|
+
continue
|
|
317
358
|
}
|
|
318
359
|
const assistant: ChatCompletionMessageParam = {
|
|
319
360
|
role: 'assistant',
|
|
@@ -333,8 +374,82 @@ export function toDeepSeekMessages(
|
|
|
333
374
|
if (replayed !== undefined) {
|
|
334
375
|
;(assistant as { reasoning_content?: string }).reasoning_content = replayed
|
|
335
376
|
}
|
|
336
|
-
|
|
337
|
-
}
|
|
377
|
+
wire.push(assistant)
|
|
378
|
+
}
|
|
379
|
+
flushToolImages()
|
|
380
|
+
return wire
|
|
381
|
+
}
|
|
382
|
+
|
|
383
|
+
function splitToolResult(content: ToolResultContent): {
|
|
384
|
+
readonly text: string
|
|
385
|
+
readonly images: readonly ImageAttachment[]
|
|
386
|
+
} {
|
|
387
|
+
const text: string[] = []
|
|
388
|
+
const images: ImageAttachment[] = []
|
|
389
|
+
for (const block of toToolResultBlocks(content)) {
|
|
390
|
+
if (block.type === 'text') text.push(block.text)
|
|
391
|
+
else if (block.type === 'image') images.push(block)
|
|
392
|
+
}
|
|
393
|
+
return { text: text.join('\n'), images }
|
|
394
|
+
}
|
|
395
|
+
|
|
396
|
+
/**
|
|
397
|
+
* Refuse every rich-content shape this exact model/wire cannot represent.
|
|
398
|
+
*
|
|
399
|
+
* This runs before the request object is built, so a text model never sees an
|
|
400
|
+
* image data URL and a document never reaches a wire that would silently drop
|
|
401
|
+
* it. Stored user refs should have been resolved by the SDK attachment store;
|
|
402
|
+
* accepting one here would serialize a reference rather than its bytes.
|
|
403
|
+
*/
|
|
404
|
+
function assertDeepSeekRichContent(
|
|
405
|
+
messages: ChatCompletionParams['messages'],
|
|
406
|
+
model: string,
|
|
407
|
+
): void {
|
|
408
|
+
let hasImage = false
|
|
409
|
+
const acceptImage = (mediaType: string): void => {
|
|
410
|
+
if (!IMAGE_MEDIA_TYPES.has(mediaType)) {
|
|
411
|
+
throw new Error(
|
|
412
|
+
`DeepSeekProvider: image type '${mediaType}' is not supported. Use image/png, image/jpeg, image/webp, or image/gif.`,
|
|
413
|
+
)
|
|
414
|
+
}
|
|
415
|
+
hasImage = true
|
|
416
|
+
}
|
|
417
|
+
for (const message of messages) {
|
|
418
|
+
if (message.role === 'user') {
|
|
419
|
+
for (const attachment of message.attachments ?? []) {
|
|
420
|
+
if (attachment.type === 'stored') {
|
|
421
|
+
throw new Error(
|
|
422
|
+
'DeepSeekProvider: an unresolved stored attachment reached the driver. Configure an AttachmentStore so Namzu can resolve its bytes before the model request.',
|
|
423
|
+
)
|
|
424
|
+
}
|
|
425
|
+
if (attachment.type === 'document') {
|
|
426
|
+
throw new Error(
|
|
427
|
+
'DeepSeekProvider: this Chat Completions driver does not support document input. Route the turn to a document-capable provider.',
|
|
428
|
+
)
|
|
429
|
+
}
|
|
430
|
+
acceptImage(attachment.mediaType)
|
|
431
|
+
}
|
|
432
|
+
continue
|
|
433
|
+
}
|
|
434
|
+
if (message.role !== 'tool') continue
|
|
435
|
+
for (const block of toToolResultBlocks(message.content)) {
|
|
436
|
+
if (block.type === 'document') {
|
|
437
|
+
throw new Error(
|
|
438
|
+
'DeepSeekProvider: this Chat Completions driver does not support document tool results. Route the turn to a document-capable provider.',
|
|
439
|
+
)
|
|
440
|
+
}
|
|
441
|
+
if (block.type === 'image') acceptImage(block.mediaType)
|
|
442
|
+
}
|
|
443
|
+
}
|
|
444
|
+
if (hasImage && model !== VISION_MODEL) {
|
|
445
|
+
throw new Error(
|
|
446
|
+
`DeepSeekProvider: model '${model}' does not accept image input. Select '${VISION_MODEL}' or remove the images.`,
|
|
447
|
+
)
|
|
448
|
+
}
|
|
449
|
+
}
|
|
450
|
+
|
|
451
|
+
function inputModalitiesFor(model: string): readonly ModelInputModality[] | undefined {
|
|
452
|
+
return KNOWN_MODELS.find((candidate) => candidate.id === model)?.inputModalities
|
|
338
453
|
}
|
|
339
454
|
|
|
340
455
|
export function toDeepSeekTools(params: ChatCompletionParams): ChatCompletionTool[] | undefined {
|
|
@@ -580,14 +695,25 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
580
695
|
signal?.throwIfAborted()
|
|
581
696
|
const page = await this.client.models.list(signal ? { signal } : undefined)
|
|
582
697
|
signal?.throwIfAborted()
|
|
583
|
-
|
|
584
|
-
|
|
585
|
-
|
|
586
|
-
|
|
587
|
-
|
|
588
|
-
|
|
589
|
-
|
|
590
|
-
}
|
|
698
|
+
const models = new Map<string, { id: string; name: string }>()
|
|
699
|
+
for (const model of page.data) models.set(model.id, { id: model.id, name: model.id })
|
|
700
|
+
// The preview model is part of the source adapter's verified default
|
|
701
|
+
// catalogue but may lag the account listing endpoint. A successful list
|
|
702
|
+
// therefore augments rather than erases the known selectable catalogue.
|
|
703
|
+
for (const model of KNOWN_MODELS) {
|
|
704
|
+
models.set(model.id, { id: model.id, name: model.name })
|
|
705
|
+
}
|
|
706
|
+
return [...models.values()].map((model) => {
|
|
707
|
+
const inputModalities = inputModalitiesFor(model.id)
|
|
708
|
+
return {
|
|
709
|
+
...model,
|
|
710
|
+
...(inputModalities !== undefined ? { inputModalities } : {}),
|
|
711
|
+
inputPrice: 0,
|
|
712
|
+
outputPrice: 0,
|
|
713
|
+
supportsToolUse: true,
|
|
714
|
+
supportsStreaming: true,
|
|
715
|
+
}
|
|
716
|
+
})
|
|
591
717
|
}
|
|
592
718
|
|
|
593
719
|
async healthCheck(): Promise<boolean> {
|