@namzu/deepseek 2.2.0 → 2.3.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 +7 -0
- package/README.md +39 -8
- package/dist/client.d.ts +53 -3
- package/dist/client.d.ts.map +1 -1
- package/dist/client.js +216 -11
- package/dist/client.js.map +1 -1
- package/dist/index.d.ts +2 -1
- package/dist/index.d.ts.map +1 -1
- package/dist/index.js +1 -1
- package/dist/index.js.map +1 -1
- package/package.json +2 -2
- package/src/client.ts +256 -13
- package/src/index.ts +2 -0
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,12 @@
|
|
|
1
1
|
# @namzu/deepseek
|
|
2
2
|
|
|
3
|
+
## 2.3.0
|
|
4
|
+
|
|
5
|
+
### Minor Changes
|
|
6
|
+
|
|
7
|
+
- dd0f7eb: Reasoning effort now works on the native driver: it is sent as `reasoning_effort` (the vendor's documented field), so `NAMZU_EFFORT_LEVEL=max` no longer errors. `minimal` goes to `low`, `medium` and `xhigh` to `high`, `ultra` to `max` (the vendor's own mapping), and a level the model's `effort.supported_levels` lacks falls to the nearest offered one. `none` turns thinking off; `reasoningEffortLevelsFor` and `reasoningEffortDefaultFor` publish the menu and default. New export `resolveDeepSeekEffort`; `assertEffortUnsupported` is deprecated and no longer called. A call that sets `temperature` and friends with an effort other than `none` is still refused.
|
|
8
|
+
- dd0f7eb: `deepseek-flash`, the vendor's current Flash id, is now in the catalogue and accepts images; `deepseek-v4-pro` stays text only, and `deepseek-v4-flash` and `deepseek-v4-flash-vision-exp` stay as the legacy names the vendor still serves. The driver reads `context_window` and `max_output_tokens` from the models endpoint when the vendor returns them and falls back to the documented 1,000,000 / 384,000, so compaction is measured against the real window instead of a 64,000-token guess. An image sent to a model that does not take one now names `deepseek-flash` in the error. The documented numbers are offered only on the vendor's own host (a custom `baseURL` gets what the listing reports), and `DEEPSEEK_CAPABILITIES` no longer declares `maxOutputTokens` driver-wide; the summary trigger is unchanged at 967,000 because the reserve is capped at 20,000 anyway.
|
|
9
|
+
|
|
3
10
|
## 2.2.0
|
|
4
11
|
|
|
5
12
|
### Minor Changes
|
package/README.md
CHANGED
|
@@ -50,11 +50,11 @@ registerDeepSeek() // once, at startup
|
|
|
50
50
|
const { provider } = ProviderRegistry.create({
|
|
51
51
|
type: 'deepseek',
|
|
52
52
|
apiKey: process.env.DEEPSEEK_API_KEY ?? '',
|
|
53
|
-
model: 'deepseek-
|
|
53
|
+
model: 'deepseek-flash',
|
|
54
54
|
})
|
|
55
55
|
|
|
56
56
|
for await (const chunk of provider.chatStream({
|
|
57
|
-
model: 'deepseek-
|
|
57
|
+
model: 'deepseek-flash',
|
|
58
58
|
messages: [{ role: 'user', content: 'Is 91 prime?' }],
|
|
59
59
|
})) {
|
|
60
60
|
if (chunk.delta.reasoning?.text) process.stderr.write(chunk.delta.reasoning.text)
|
|
@@ -62,13 +62,29 @@ for await (const chunk of provider.chatStream({
|
|
|
62
62
|
}
|
|
63
63
|
```
|
|
64
64
|
|
|
65
|
-
The built-in catalogue offers `deepseek-
|
|
66
|
-
`deepseek-v4-
|
|
65
|
+
The built-in catalogue offers `deepseek-flash` (the current Flash model, which
|
|
66
|
+
takes images), `deepseek-v4-pro` (text only), and the legacy names
|
|
67
|
+
`deepseek-v4-flash` and `deepseek-v4-flash-vision-exp`, which the vendor still
|
|
68
|
+
serves from the Flash model. `deepseek-chat` and `deepseek-reasoner` were
|
|
67
69
|
discontinued on 2026-07-24 and are not aliases.
|
|
68
70
|
|
|
71
|
+
## Context window
|
|
72
|
+
|
|
73
|
+
The vendor documents a 1M-token context and a 384K-token output cap for every
|
|
74
|
+
current model (one row for `deepseek-flash` and `deepseek-v4-pro` on
|
|
75
|
+
https://api-docs.deepseek.com/quick_start/pricing). The driver asks the models
|
|
76
|
+
endpoint first and uses its `context_window` and `max_output_tokens` when the
|
|
77
|
+
vendor returns them; those two fields are optional there, so the documented
|
|
78
|
+
limits are only the fallback for the ids the driver lists, and only on the vendor's own host: behind a custom `baseURL` the driver
|
|
79
|
+
offers just what the listing reports. The runtime measures
|
|
80
|
+
compaction against that window, so the first summary is due at 967,000 tokens,
|
|
81
|
+
not at the 32,000 that a 64,000-token guess produced. An id the driver neither
|
|
82
|
+
lists nor was told about is left to the SDK's table, which keeps a conservative
|
|
83
|
+
64,000 for it.
|
|
84
|
+
|
|
69
85
|
## Image input
|
|
70
86
|
|
|
71
|
-
|
|
87
|
+
`deepseek-flash` and the legacy `deepseek-v4-flash-vision-exp` accept images. User attachments are sent
|
|
72
88
|
as ordered `image_url` data-URL parts. Images returned by tools keep their
|
|
73
89
|
`role: "tool"` result and follow it in a separate user image message, so the
|
|
74
90
|
tool-call/result sequence remains valid. PNG, JPEG, WebP and GIF are accepted.
|
|
@@ -91,9 +107,24 @@ portable assistant/tool history and omits the foreign native reasoning field.
|
|
|
91
107
|
|
|
92
108
|
Turn it off per call with `thinking: { type: 'disabled' }`.
|
|
93
109
|
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
110
|
+
### Effort
|
|
111
|
+
|
|
112
|
+
Effort rides on `reasoning_effort`, the field the vendor documents, beside
|
|
113
|
+
`thinking`. The vendor offers `low`, `high` and `max` (default `high`); the
|
|
114
|
+
models endpoint's `effort.supported_levels` and `default_level` are read once
|
|
115
|
+
per session and published through `reasoningEffortLevelsFor` and
|
|
116
|
+
`reasoningEffortDefaultFor` (plus `none`, which turns thinking off). Namzu's
|
|
117
|
+
wider vocabulary goes through the vendor's own mapping: `minimal` to `low`,
|
|
118
|
+
`medium` and `xhigh` to `high`, `ultra` to `max`. If the model's menu lacks the
|
|
119
|
+
mapped level, the nearest offered one is sent, the lower one on a tie
|
|
120
|
+
(`resolveDeepSeekEffort` says which). `none` is sent as
|
|
121
|
+
`thinking: { type: 'disabled' }`, and an explicit `thinking: disabled` wins over
|
|
122
|
+
a level, as it does at the vendor. Without `maxTokens` the vendor's default
|
|
123
|
+
output is 64K in thinking mode and 128K at `max`.
|
|
124
|
+
|
|
125
|
+
The sampling parameters (`temperature`, `topP` and the two penalties) are
|
|
126
|
+
**refused** while thinking is on, because the vendor accepts them and applies
|
|
127
|
+
none; `samplingInThinkingMode: 'ignore'` sends them anyway.
|
|
97
128
|
|
|
98
129
|
## Documentation
|
|
99
130
|
|
package/dist/client.d.ts
CHANGED
|
@@ -11,7 +11,7 @@ export declare const DEEPSEEK_CAPABILITIES: ProviderCapabilities;
|
|
|
11
11
|
* below that turns on "thinking is enabled" has to read it this way, or it
|
|
12
12
|
* applies to explicit callers only and misses the common case entirely.
|
|
13
13
|
*/
|
|
14
|
-
export declare function thinkingEnabled(thinking: ThinkingConfig | undefined): boolean;
|
|
14
|
+
export declare function thinkingEnabled(thinking: ThinkingConfig | undefined, effort?: ReasoningEffort): boolean;
|
|
15
15
|
/**
|
|
16
16
|
* Refuse a sampling parameter that thinking mode will discard.
|
|
17
17
|
*
|
|
@@ -39,8 +39,33 @@ export declare function assertSamplingUsable(params: ChatCompletionParams, mode:
|
|
|
39
39
|
* The vendor's Anthropic-format endpoint does take `reasoning.effort`. A
|
|
40
40
|
* driver built on that wire could honour this; this one is built on Chat
|
|
41
41
|
* Completions and says so.
|
|
42
|
+
*
|
|
43
|
+
* @deprecated The driver now carries effort on `reasoning_effort`, the field
|
|
44
|
+
* the vendor's Chat Completions reference documents (the field measured here
|
|
45
|
+
* earlier was `thinking.effort`, which the vendor never defined). Nothing in
|
|
46
|
+
* this package calls it any more; use {@link resolveDeepSeekEffort}.
|
|
42
47
|
*/
|
|
43
48
|
export declare function assertEffortUnsupported(params: ChatCompletionParams): void;
|
|
49
|
+
/** The effort levels the vendor's pages list, in the order they rank. */
|
|
50
|
+
declare const VENDOR_EFFORT_ORDER: readonly ["low", "high", "max"];
|
|
51
|
+
type VendorEffort = (typeof VENDOR_EFFORT_ORDER)[number];
|
|
52
|
+
export interface DeepSeekEffortResolution {
|
|
53
|
+
/** `none` turns thinking off; otherwise the level sent as `reasoning_effort`. */
|
|
54
|
+
readonly level: VendorEffort | 'none';
|
|
55
|
+
/** True when the level asked for is not the level sent. */
|
|
56
|
+
readonly mapped: boolean;
|
|
57
|
+
}
|
|
58
|
+
/**
|
|
59
|
+
* Turn a requested effort into the one this model offers.
|
|
60
|
+
*
|
|
61
|
+
* `none` is thinking off. A level the model offers is sent as is. Any other
|
|
62
|
+
* level goes through the vendor's documented mapping (`medium` and `xhigh`
|
|
63
|
+
* to `high`, `minimal` to `low`, `ultra` to `max`); if the model's menu lacks
|
|
64
|
+
* that target, the nearest offered level is used, the lower one on a tie, and
|
|
65
|
+
* `mapped` says so. It never throws: a level this model does not offer must
|
|
66
|
+
* degrade to its neighbour rather than fail a run that asked for more thought.
|
|
67
|
+
*/
|
|
68
|
+
export declare function resolveDeepSeekEffort(requested: ReasoningEffort, offered?: readonly string[]): DeepSeekEffortResolution;
|
|
44
69
|
export declare function toDeepSeekMessages(messages: ChatCompletionParams['messages'], targetRoute: ProviderRoute): ChatCompletionMessageParam[];
|
|
45
70
|
export declare function toDeepSeekTools(params: ChatCompletionParams): ChatCompletionTool[] | undefined;
|
|
46
71
|
export declare class DeepSeekProvider implements LLMProvider {
|
|
@@ -50,13 +75,38 @@ export declare class DeepSeekProvider implements LLMProvider {
|
|
|
50
75
|
private client;
|
|
51
76
|
private defaultModel?;
|
|
52
77
|
private samplingMode;
|
|
78
|
+
private vendorLimits;
|
|
79
|
+
private readonly documentedLimits;
|
|
53
80
|
constructor(config: DeepSeekConfig);
|
|
54
81
|
private resolveModel;
|
|
55
|
-
/**
|
|
56
|
-
|
|
82
|
+
/** Last models-endpoint answer, once a turn has fetched it; the sync menus read this. */
|
|
83
|
+
private vendorSnapshot;
|
|
84
|
+
/**
|
|
85
|
+
* `none` (thinking off) plus the levels the models endpoint lists for the
|
|
86
|
+
* model, or the vendor's documented low, high and max until it has been read.
|
|
87
|
+
*/
|
|
88
|
+
reasoningEffortLevelsFor(model: string): readonly ReasoningEffort[];
|
|
89
|
+
/** The level a request without one runs at: the endpoint's `default_level`, else `high`. */
|
|
90
|
+
reasoningEffortDefaultFor(model: string): ReasoningEffort;
|
|
57
91
|
chatStream(params: ChatCompletionParams): AsyncIterable<StreamChunk>;
|
|
92
|
+
/**
|
|
93
|
+
* What the vendor's models endpoint says about each model it lists. The
|
|
94
|
+
* endpoint may leave `context_window` and `max_output_tokens` out (both are
|
|
95
|
+
* optional there), so an absent field is simply not an answer. A failed
|
|
96
|
+
* request is not cached: the next turn asks again.
|
|
97
|
+
*/
|
|
98
|
+
private fetchVendorLimits;
|
|
99
|
+
/**
|
|
100
|
+
* The window the runtime measures compaction against: what the vendor's
|
|
101
|
+
* models endpoint reports for the id when it reports one, else the
|
|
102
|
+
* documented limit of a model this driver lists, else `undefined` rather
|
|
103
|
+
* than a guess, which leaves the SDK's table to answer for it. The vendor
|
|
104
|
+
* answers first and the built-in table is only the fallback.
|
|
105
|
+
*/
|
|
106
|
+
resolveContextWindow(model: string, signal?: AbortSignal): Promise<number | undefined>;
|
|
58
107
|
probeCredential(signal?: AbortSignal): Promise<void>;
|
|
59
108
|
listModels(signal?: AbortSignal): Promise<ModelInfo[]>;
|
|
60
109
|
healthCheck(): Promise<boolean>;
|
|
61
110
|
}
|
|
111
|
+
export {};
|
|
62
112
|
//# sourceMappingURL=client.d.ts.map
|
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,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;
|
|
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;AAYhD,mFAAmF;AACnF,eAAO,MAAM,qBAAqB,EAAE,oBASnC,CAAA;AAiID;;;;;;;GAOG;AACH,wBAAgB,eAAe,CAC9B,QAAQ,EAAE,cAAc,GAAG,SAAS,EACpC,MAAM,CAAC,EAAE,eAAe,GACtB,OAAO,CAGT;AAED;;;;;;;;;;;;GAYG;AACH,wBAAgB,oBAAoB,CACnC,MAAM,EAAE,oBAAoB,EAC5B,IAAI,EAAE,QAAQ,GAAG,QAAQ,GACvB,IAAI,CAQN;AAED;;;;;;;;;;;;;;;;;;GAkBG;AACH,wBAAgB,uBAAuB,CAAC,MAAM,EAAE,oBAAoB,GAAG,IAAI,CAK1E;AAED,yEAAyE;AACzE,QAAA,MAAM,mBAAmB,iCAAkC,CAAA;AAC3D,KAAK,YAAY,GAAG,CAAC,OAAO,mBAAmB,CAAC,CAAC,MAAM,CAAC,CAAA;AAoBxD,MAAM,WAAW,wBAAwB;IACxC,iFAAiF;IACjF,QAAQ,CAAC,KAAK,EAAE,YAAY,GAAG,MAAM,CAAA;IACrC,2DAA2D;IAC3D,QAAQ,CAAC,MAAM,EAAE,OAAO,CAAA;CACxB;AAED;;;;;;;;;GASG;AACH,wBAAgB,qBAAqB,CACpC,SAAS,EAAE,eAAe,EAC1B,OAAO,GAAE,SAAS,MAAM,EAA0B,GAChD,wBAAwB,CAmB1B;AAuGD,wBAAgB,kBAAkB,CACjC,QAAQ,EAAE,oBAAoB,CAAC,UAAU,CAAC,EAC1C,WAAW,EAAE,aAAa,GACxB,0BAA0B,EAAE,CA6E9B;AA6HD,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;IACzC,OAAO,CAAC,YAAY,CAAgD;IACpE,OAAO,CAAC,QAAQ,CAAC,gBAAgB,CAAS;gBAE9B,MAAM,EAAE,cAAc;IAqBlC,OAAO,CAAC,YAAY;IAUpB,yFAAyF;IACzF,OAAO,CAAC,cAAc,CAAuC;IAE7D;;;OAGG;IACH,wBAAwB,CAAC,KAAK,EAAE,MAAM,GAAG,SAAS,eAAe,EAAE;IAQnE,4FAA4F;IAC5F,yBAAyB,CAAC,KAAK,EAAE,MAAM,GAAG,eAAe;IAOlD,UAAU,CAAC,MAAM,EAAE,oBAAoB,GAAG,aAAa,CAAC,WAAW,CAAC;IA6M3E;;;;;OAKG;IACH,OAAO,CAAC,iBAAiB;IAczB;;;;;;OAMG;IACG,oBAAoB,CAAC,KAAK,EAAE,MAAM,EAAE,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,MAAM,GAAG,SAAS,CAAC;IActF,eAAe,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,IAAI,CAAC;IAMpD,UAAU,CAAC,MAAM,CAAC,EAAE,WAAW,GAAG,OAAO,CAAC,SAAS,EAAE,CAAC;IA8BtD,WAAW,IAAI,OAAO,CAAC,OAAO,CAAC;CAQrC"}
|
package/dist/client.js
CHANGED
|
@@ -1,5 +1,14 @@
|
|
|
1
1
|
import { ProviderRequestError, attributionHeaders, isCallerAbortError, isProviderRequestError, providerVendorError, toToolResultBlocks, } from '@namzu/sdk';
|
|
2
2
|
import OpenAI from 'openai';
|
|
3
|
+
/**
|
|
4
|
+
* What the vendor documents for every current model: a 1M-token context and a
|
|
5
|
+
* 384K-token output cap (https://api-docs.deepseek.com/quick_start/pricing,
|
|
6
|
+
* one row for `deepseek-flash` and `deepseek-v4-pro`; the retired
|
|
7
|
+
* `deepseek-v4-flash` and `deepseek-v4-flash-vision-exp` names are served by
|
|
8
|
+
* the Flash model at the same limits).
|
|
9
|
+
*/
|
|
10
|
+
const CONTEXT_WINDOW_TOKENS = 1_000_000;
|
|
11
|
+
const MAX_OUTPUT_TOKENS = 384_000;
|
|
3
12
|
/** Driver-level mapping capabilities; model input support is listed separately. */
|
|
4
13
|
export const DEEPSEEK_CAPABILITIES = {
|
|
5
14
|
supportsTools: true,
|
|
@@ -12,11 +21,32 @@ export const DEEPSEEK_CAPABILITIES = {
|
|
|
12
21
|
supportsToolResultDocuments: false,
|
|
13
22
|
};
|
|
14
23
|
const DEFAULT_BASE_URL = 'https://api.deepseek.com';
|
|
24
|
+
/**
|
|
25
|
+
* The documented 1M / 384K only describe the vendor's own service. A gateway
|
|
26
|
+
* behind a custom `baseURL` may serve the same id at a smaller window, so
|
|
27
|
+
* there the documented numbers are not offered and only what the listing
|
|
28
|
+
* reports counts.
|
|
29
|
+
*/
|
|
30
|
+
function isVendorBaseUrl(baseURL) {
|
|
31
|
+
if (!baseURL)
|
|
32
|
+
return true;
|
|
33
|
+
try {
|
|
34
|
+
return new URL(baseURL).hostname === new URL(DEFAULT_BASE_URL).hostname;
|
|
35
|
+
}
|
|
36
|
+
catch {
|
|
37
|
+
return false;
|
|
38
|
+
}
|
|
39
|
+
}
|
|
40
|
+
/** The current Flash id; it accepts images (https://api-docs.deepseek.com/quick_start/pricing). */
|
|
41
|
+
const CURRENT_FLASH_MODEL = 'deepseek-flash';
|
|
42
|
+
/** A retired name the vendor still serves; it routes to the Flash model, images included. */
|
|
15
43
|
const VISION_MODEL = 'deepseek-v4-flash-vision-exp';
|
|
44
|
+
const IMAGE_MODELS = new Set([CURRENT_FLASH_MODEL, VISION_MODEL]);
|
|
16
45
|
const TEXT_MODALITIES = Object.freeze(['text']);
|
|
17
46
|
const VISION_MODALITIES = Object.freeze(['text', 'image']);
|
|
18
47
|
const IMAGE_MEDIA_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif']);
|
|
19
48
|
const KNOWN_MODELS = Object.freeze([
|
|
49
|
+
{ id: CURRENT_FLASH_MODEL, name: 'DeepSeek-V4.1-Flash', inputModalities: VISION_MODALITIES },
|
|
20
50
|
{ id: 'deepseek-v4-flash', name: 'DeepSeek-V4-Flash', inputModalities: TEXT_MODALITIES },
|
|
21
51
|
{ id: 'deepseek-v4-pro', name: 'DeepSeek-V4-Pro', inputModalities: TEXT_MODALITIES },
|
|
22
52
|
{
|
|
@@ -91,8 +121,9 @@ const SAMPLING_FIELDS = ['temperature', 'topP', 'frequencyPenalty', 'presencePen
|
|
|
91
121
|
* below that turns on "thinking is enabled" has to read it this way, or it
|
|
92
122
|
* applies to explicit callers only and misses the common case entirely.
|
|
93
123
|
*/
|
|
94
|
-
export function thinkingEnabled(thinking) {
|
|
95
|
-
|
|
124
|
+
export function thinkingEnabled(thinking, effort) {
|
|
125
|
+
// `none` is thinking off, and the driver sends it as `thinking: disabled`.
|
|
126
|
+
return thinking?.type !== 'disabled' && effort !== 'none';
|
|
96
127
|
}
|
|
97
128
|
/**
|
|
98
129
|
* Refuse a sampling parameter that thinking mode will discard.
|
|
@@ -110,7 +141,7 @@ export function thinkingEnabled(thinking) {
|
|
|
110
141
|
export function assertSamplingUsable(params, mode) {
|
|
111
142
|
if (mode === 'ignore')
|
|
112
143
|
return;
|
|
113
|
-
if (!thinkingEnabled(params.thinking))
|
|
144
|
+
if (!thinkingEnabled(params.thinking, params.effort))
|
|
114
145
|
return;
|
|
115
146
|
const set = SAMPLING_FIELDS.filter((f) => params[f] !== undefined);
|
|
116
147
|
if (set.length === 0)
|
|
@@ -130,12 +161,67 @@ export function assertSamplingUsable(params, mode) {
|
|
|
130
161
|
* The vendor's Anthropic-format endpoint does take `reasoning.effort`. A
|
|
131
162
|
* driver built on that wire could honour this; this one is built on Chat
|
|
132
163
|
* Completions and says so.
|
|
164
|
+
*
|
|
165
|
+
* @deprecated The driver now carries effort on `reasoning_effort`, the field
|
|
166
|
+
* the vendor's Chat Completions reference documents (the field measured here
|
|
167
|
+
* earlier was `thinking.effort`, which the vendor never defined). Nothing in
|
|
168
|
+
* this package calls it any more; use {@link resolveDeepSeekEffort}.
|
|
133
169
|
*/
|
|
134
170
|
export function assertEffortUnsupported(params) {
|
|
135
171
|
if (params.effort === undefined)
|
|
136
172
|
return;
|
|
137
173
|
throw new Error(`DeepSeekProvider: \`effort\` is not carried by this endpoint. The vendor's Chat Completions wire validates \`thinking.type\` and ignores any effort sent beside it, so passing one through would change nothing and report success. Use \`thinking: { type: 'adaptive' | 'enabled' | 'disabled' }\` to steer this driver.`);
|
|
138
174
|
}
|
|
175
|
+
/** The effort levels the vendor's pages list, in the order they rank. */
|
|
176
|
+
const VENDOR_EFFORT_ORDER = ['low', 'high', 'max'];
|
|
177
|
+
/** The menu used until the models endpoint says otherwise (levels low, high, max; default high). */
|
|
178
|
+
const DEFAULT_EFFORT_LEVELS = VENDOR_EFFORT_ORDER;
|
|
179
|
+
const DEFAULT_EFFORT = 'high';
|
|
180
|
+
/**
|
|
181
|
+
* The vendor's own mapping of Namzu's wider vocabulary onto what it accepts
|
|
182
|
+
* (https://api-docs.deepseek.com/guides/thinking_mode, "effort mapping").
|
|
183
|
+
*/
|
|
184
|
+
const VENDOR_EFFORT_ALIASES = {
|
|
185
|
+
minimal: 'low',
|
|
186
|
+
low: 'low',
|
|
187
|
+
medium: 'high',
|
|
188
|
+
high: 'high',
|
|
189
|
+
xhigh: 'high',
|
|
190
|
+
max: 'max',
|
|
191
|
+
ultra: 'max',
|
|
192
|
+
};
|
|
193
|
+
/**
|
|
194
|
+
* Turn a requested effort into the one this model offers.
|
|
195
|
+
*
|
|
196
|
+
* `none` is thinking off. A level the model offers is sent as is. Any other
|
|
197
|
+
* level goes through the vendor's documented mapping (`medium` and `xhigh`
|
|
198
|
+
* to `high`, `minimal` to `low`, `ultra` to `max`); if the model's menu lacks
|
|
199
|
+
* that target, the nearest offered level is used, the lower one on a tie, and
|
|
200
|
+
* `mapped` says so. It never throws: a level this model does not offer must
|
|
201
|
+
* degrade to its neighbour rather than fail a run that asked for more thought.
|
|
202
|
+
*/
|
|
203
|
+
export function resolveDeepSeekEffort(requested, offered = DEFAULT_EFFORT_LEVELS) {
|
|
204
|
+
if (requested === 'none')
|
|
205
|
+
return { level: 'none', mapped: false };
|
|
206
|
+
const menu = VENDOR_EFFORT_ORDER.filter((level) => offered.includes(level));
|
|
207
|
+
if (menu.length === 0)
|
|
208
|
+
return { level: VENDOR_EFFORT_ALIASES[requested], mapped: true };
|
|
209
|
+
if (menu.includes(requested)) {
|
|
210
|
+
return { level: requested, mapped: false };
|
|
211
|
+
}
|
|
212
|
+
const target = VENDOR_EFFORT_ALIASES[requested];
|
|
213
|
+
const wanted = VENDOR_EFFORT_ORDER.indexOf(target);
|
|
214
|
+
let best = menu[0];
|
|
215
|
+
let bestDistance = Number.POSITIVE_INFINITY;
|
|
216
|
+
for (const level of menu) {
|
|
217
|
+
const distance = Math.abs(VENDOR_EFFORT_ORDER.indexOf(level) - wanted);
|
|
218
|
+
if (distance < bestDistance) {
|
|
219
|
+
best = level;
|
|
220
|
+
bestDistance = distance;
|
|
221
|
+
}
|
|
222
|
+
}
|
|
223
|
+
return { level: best, mapped: true };
|
|
224
|
+
}
|
|
139
225
|
function sameRoute(left, right) {
|
|
140
226
|
return (left.providerId === right.providerId &&
|
|
141
227
|
left.model === right.model &&
|
|
@@ -335,10 +421,45 @@ function assertDeepSeekRichContent(messages, model) {
|
|
|
335
421
|
acceptImage(block.mediaType);
|
|
336
422
|
}
|
|
337
423
|
}
|
|
338
|
-
if (hasImage && model
|
|
339
|
-
throw new Error(`DeepSeekProvider: model '${model}' does not accept image input. Select '${
|
|
424
|
+
if (hasImage && !IMAGE_MODELS.has(model)) {
|
|
425
|
+
throw new Error(`DeepSeekProvider: model '${model}' does not accept image input. Select '${CURRENT_FLASH_MODEL}' or remove the images.`);
|
|
340
426
|
}
|
|
341
427
|
}
|
|
428
|
+
const positiveInteger = (value) => typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : undefined;
|
|
429
|
+
/** `context_window` and `max_output_tokens` on a models-endpoint entry, when present and sane. */
|
|
430
|
+
function readVendorLimits(entries) {
|
|
431
|
+
const out = new Map();
|
|
432
|
+
for (const entry of entries) {
|
|
433
|
+
if (typeof entry !== 'object' || entry === null)
|
|
434
|
+
continue;
|
|
435
|
+
const record = entry;
|
|
436
|
+
if (typeof record.id !== 'string')
|
|
437
|
+
continue;
|
|
438
|
+
const contextWindow = positiveInteger(record.context_window);
|
|
439
|
+
const maxOutputTokens = positiveInteger(record.max_output_tokens);
|
|
440
|
+
const effort = typeof record.effort === 'object' && record.effort !== null
|
|
441
|
+
? record.effort
|
|
442
|
+
: undefined;
|
|
443
|
+
const effortLevels = Array.isArray(effort?.supported_levels)
|
|
444
|
+
? effort.supported_levels.filter((level) => typeof level === 'string')
|
|
445
|
+
: undefined;
|
|
446
|
+
const effortDefault = typeof effort?.default_level === 'string' ? effort.default_level : undefined;
|
|
447
|
+
if (contextWindow === undefined &&
|
|
448
|
+
maxOutputTokens === undefined &&
|
|
449
|
+
(effortLevels === undefined || effortLevels.length === 0))
|
|
450
|
+
continue;
|
|
451
|
+
out.set(record.id, {
|
|
452
|
+
...(contextWindow !== undefined ? { contextWindow } : {}),
|
|
453
|
+
...(maxOutputTokens !== undefined ? { maxOutputTokens } : {}),
|
|
454
|
+
...(effortLevels !== undefined && effortLevels.length > 0 ? { effortLevels } : {}),
|
|
455
|
+
...(effortDefault !== undefined ? { effortDefault } : {}),
|
|
456
|
+
});
|
|
457
|
+
}
|
|
458
|
+
return out;
|
|
459
|
+
}
|
|
460
|
+
function isKnownModel(model) {
|
|
461
|
+
return KNOWN_MODELS.some((candidate) => candidate.id === model);
|
|
462
|
+
}
|
|
342
463
|
function inputModalitiesFor(model) {
|
|
343
464
|
return KNOWN_MODELS.find((candidate) => candidate.id === model)?.inputModalities;
|
|
344
465
|
}
|
|
@@ -366,6 +487,8 @@ export class DeepSeekProvider {
|
|
|
366
487
|
client;
|
|
367
488
|
defaultModel;
|
|
368
489
|
samplingMode;
|
|
490
|
+
vendorLimits;
|
|
491
|
+
documentedLimits;
|
|
369
492
|
constructor(config) {
|
|
370
493
|
if (!config.apiKey) {
|
|
371
494
|
throw new Error('DeepSeek API key is required. Set DEEPSEEK_API_KEY env variable.');
|
|
@@ -384,6 +507,7 @@ export class DeepSeekProvider {
|
|
|
384
507
|
};
|
|
385
508
|
this.client = new OpenAI(clientOptions);
|
|
386
509
|
this.defaultModel = config.model;
|
|
510
|
+
this.documentedLimits = isVendorBaseUrl(config.baseURL);
|
|
387
511
|
this.samplingMode = config.samplingInThinkingMode ?? 'refuse';
|
|
388
512
|
}
|
|
389
513
|
resolveModel(params) {
|
|
@@ -393,16 +517,30 @@ export class DeepSeekProvider {
|
|
|
393
517
|
}
|
|
394
518
|
return model;
|
|
395
519
|
}
|
|
396
|
-
/**
|
|
397
|
-
|
|
398
|
-
|
|
520
|
+
/** Last models-endpoint answer, once a turn has fetched it; the sync menus read this. */
|
|
521
|
+
vendorSnapshot;
|
|
522
|
+
/**
|
|
523
|
+
* `none` (thinking off) plus the levels the models endpoint lists for the
|
|
524
|
+
* model, or the vendor's documented low, high and max until it has been read.
|
|
525
|
+
*/
|
|
526
|
+
reasoningEffortLevelsFor(model) {
|
|
527
|
+
const listed = this.vendorSnapshot?.get(model)?.effortLevels;
|
|
528
|
+
const levels = VENDOR_EFFORT_ORDER.filter((level) => (listed ?? DEFAULT_EFFORT_LEVELS).includes(level));
|
|
529
|
+
return ['none', ...(levels.length > 0 ? levels : DEFAULT_EFFORT_LEVELS)];
|
|
530
|
+
}
|
|
531
|
+
/** The level a request without one runs at: the endpoint's `default_level`, else `high`. */
|
|
532
|
+
reasoningEffortDefaultFor(model) {
|
|
533
|
+
const stated = this.vendorSnapshot?.get(model)?.effortDefault;
|
|
534
|
+
return stated !== undefined && VENDOR_EFFORT_ORDER.includes(stated)
|
|
535
|
+
? stated
|
|
536
|
+
: DEFAULT_EFFORT;
|
|
399
537
|
}
|
|
400
538
|
async *chatStream(params) {
|
|
401
539
|
const model = this.resolveModel(params);
|
|
402
540
|
const providerRoute = resolveDeepSeekRoute(model, params.providerRoute);
|
|
403
|
-
assertEffortUnsupported(params);
|
|
404
541
|
assertSamplingUsable(params, this.samplingMode);
|
|
405
|
-
const
|
|
542
|
+
const thinkingOn = thinkingEnabled(params.thinking, params.effort);
|
|
543
|
+
const sampling = thinkingOn
|
|
406
544
|
? {}
|
|
407
545
|
: {
|
|
408
546
|
temperature: params.temperature,
|
|
@@ -435,7 +573,27 @@ export class DeepSeekProvider {
|
|
|
435
573
|
// Cast back to `typeof body` rather than to the SDK's parameter type: the
|
|
436
574
|
// extra key rides along at runtime, and the literal `stream: true`
|
|
437
575
|
// survives, which is what keeps the streaming overload selected.
|
|
438
|
-
|
|
576
|
+
//
|
|
577
|
+
// Effort rides on `reasoning_effort`, a sibling of `thinking`. An explicit
|
|
578
|
+
// `thinking.type` wins at the vendor, so `disabled` sends no level, and
|
|
579
|
+
// `none` is sent as `thinking: disabled` so the switch does not depend on
|
|
580
|
+
// that precedence. A level the model does not offer is mapped before it
|
|
581
|
+
// is sent (see `resolveDeepSeekEffort`).
|
|
582
|
+
const offered = this.vendorSnapshot?.get(model)?.effortLevels;
|
|
583
|
+
const resolved = params.effort !== undefined ? resolveDeepSeekEffort(params.effort, offered) : undefined;
|
|
584
|
+
const thinkingField = params.thinking?.type === 'disabled' || resolved?.level === 'none'
|
|
585
|
+
? { type: 'disabled' }
|
|
586
|
+
: params.thinking
|
|
587
|
+
? { type: params.thinking.type }
|
|
588
|
+
: undefined;
|
|
589
|
+
const effortField = resolved !== undefined && resolved.level !== 'none' && thinkingField?.type !== 'disabled'
|
|
590
|
+
? { reasoning_effort: resolved.level }
|
|
591
|
+
: {};
|
|
592
|
+
const withThinking = {
|
|
593
|
+
...body,
|
|
594
|
+
...(thinkingField ? { thinking: thinkingField } : {}),
|
|
595
|
+
...effortField,
|
|
596
|
+
};
|
|
439
597
|
let stream;
|
|
440
598
|
try {
|
|
441
599
|
stream = await this.client.chat.completions.create(withThinking, {
|
|
@@ -558,6 +716,46 @@ export class DeepSeekProvider {
|
|
|
558
716
|
throw providerVendorError({ providerId: 'deepseek', error: err });
|
|
559
717
|
}
|
|
560
718
|
}
|
|
719
|
+
/**
|
|
720
|
+
* What the vendor's models endpoint says about each model it lists. The
|
|
721
|
+
* endpoint may leave `context_window` and `max_output_tokens` out (both are
|
|
722
|
+
* optional there), so an absent field is simply not an answer. A failed
|
|
723
|
+
* request is not cached: the next turn asks again.
|
|
724
|
+
*/
|
|
725
|
+
fetchVendorLimits(signal) {
|
|
726
|
+
if (this.vendorLimits)
|
|
727
|
+
return this.vendorLimits;
|
|
728
|
+
const request = this.client.models.list(signal ? { signal } : undefined).then((page) => {
|
|
729
|
+
const limits = readVendorLimits(page.data);
|
|
730
|
+
this.vendorSnapshot = limits;
|
|
731
|
+
return limits;
|
|
732
|
+
});
|
|
733
|
+
this.vendorLimits = request;
|
|
734
|
+
request.catch(() => {
|
|
735
|
+
if (this.vendorLimits === request)
|
|
736
|
+
this.vendorLimits = undefined;
|
|
737
|
+
});
|
|
738
|
+
return request;
|
|
739
|
+
}
|
|
740
|
+
/**
|
|
741
|
+
* The window the runtime measures compaction against: what the vendor's
|
|
742
|
+
* models endpoint reports for the id when it reports one, else the
|
|
743
|
+
* documented limit of a model this driver lists, else `undefined` rather
|
|
744
|
+
* than a guess, which leaves the SDK's table to answer for it. The vendor
|
|
745
|
+
* answers first and the built-in table is only the fallback.
|
|
746
|
+
*/
|
|
747
|
+
async resolveContextWindow(model, signal) {
|
|
748
|
+
signal?.throwIfAborted();
|
|
749
|
+
let reported;
|
|
750
|
+
try {
|
|
751
|
+
reported = (await this.fetchVendorLimits(signal)).get(model)?.contextWindow;
|
|
752
|
+
}
|
|
753
|
+
catch {
|
|
754
|
+
// The listing is a refinement; a turn must not fail because it is down.
|
|
755
|
+
signal?.throwIfAborted();
|
|
756
|
+
}
|
|
757
|
+
return (reported ?? (this.documentedLimits && isKnownModel(model) ? CONTEXT_WINDOW_TOKENS : undefined));
|
|
758
|
+
}
|
|
561
759
|
async probeCredential(signal) {
|
|
562
760
|
signal?.throwIfAborted();
|
|
563
761
|
await this.client.models.list(signal ? { signal } : undefined);
|
|
@@ -570,6 +768,7 @@ export class DeepSeekProvider {
|
|
|
570
768
|
const models = new Map();
|
|
571
769
|
for (const model of page.data)
|
|
572
770
|
models.set(model.id, { id: model.id, name: model.id });
|
|
771
|
+
const vendor = readVendorLimits(page.data);
|
|
573
772
|
// The preview model is part of the source adapter's verified default
|
|
574
773
|
// catalogue but may lag the account listing endpoint. A successful list
|
|
575
774
|
// therefore augments rather than erases the known selectable catalogue.
|
|
@@ -578,8 +777,14 @@ export class DeepSeekProvider {
|
|
|
578
777
|
}
|
|
579
778
|
return [...models.values()].map((model) => {
|
|
580
779
|
const inputModalities = inputModalitiesFor(model.id);
|
|
780
|
+
const known = this.documentedLimits && isKnownModel(model.id);
|
|
781
|
+
const reported = vendor.get(model.id);
|
|
782
|
+
const contextWindow = reported?.contextWindow ?? (known ? CONTEXT_WINDOW_TOKENS : undefined);
|
|
783
|
+
const maxOutputTokens = reported?.maxOutputTokens ?? (known ? MAX_OUTPUT_TOKENS : undefined);
|
|
581
784
|
return {
|
|
582
785
|
...model,
|
|
786
|
+
...(contextWindow !== undefined ? { contextWindow } : {}),
|
|
787
|
+
...(maxOutputTokens !== undefined ? { maxOutputTokens } : {}),
|
|
583
788
|
...(inputModalities !== undefined ? { inputModalities } : {}),
|
|
584
789
|
supportsToolUse: true,
|
|
585
790
|
supportsStreaming: true,
|
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/dist/index.d.ts
CHANGED
|
@@ -14,6 +14,7 @@ declare module '@namzu/sdk' {
|
|
|
14
14
|
* Pass `{ replace: true }` to override.
|
|
15
15
|
*/
|
|
16
16
|
export declare function registerDeepSeek(options?: RegisterOptions): void;
|
|
17
|
-
export { DEEPSEEK_CAPABILITIES, DeepSeekProvider, assertEffortUnsupported, assertSamplingUsable, thinkingEnabled, toDeepSeekMessages, toDeepSeekTools, } from './client.js';
|
|
17
|
+
export { DEEPSEEK_CAPABILITIES, DeepSeekProvider, assertEffortUnsupported, assertSamplingUsable, resolveDeepSeekEffort, thinkingEnabled, toDeepSeekMessages, toDeepSeekTools, } from './client.js';
|
|
18
|
+
export type { DeepSeekEffortResolution } from './client.js';
|
|
18
19
|
export type { DeepSeekConfig, DeepSeekProviderConfig } from './types.js';
|
|
19
20
|
//# sourceMappingURL=index.d.ts.map
|
package/dist/index.d.ts.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAEnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAKxD,OAAO,QAAQ,YAAY,CAAC;IAC3B,UAAU,sBAAsB;QAC/B,QAAQ,EAAE,sBAAsB,CAAA;KAChC;CACD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAEhE;AAED,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,eAAe,GACf,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.d.ts","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAoB,KAAK,eAAe,EAAE,MAAM,YAAY,CAAA;AAEnE,OAAO,KAAK,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA;AAKxD,OAAO,QAAQ,YAAY,CAAC;IAC3B,UAAU,sBAAsB;QAC/B,QAAQ,EAAE,sBAAsB,CAAA;KAChC;CACD;AAED;;;;;;;GAOG;AACH,wBAAgB,gBAAgB,CAAC,OAAO,CAAC,EAAE,eAAe,GAAG,IAAI,CAEhE;AAED,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,eAAe,GACf,MAAM,aAAa,CAAA;AACpB,YAAY,EAAE,wBAAwB,EAAE,MAAM,aAAa,CAAA;AAC3D,YAAY,EAAE,cAAc,EAAE,sBAAsB,EAAE,MAAM,YAAY,CAAA"}
|
package/dist/index.js
CHANGED
|
@@ -11,5 +11,5 @@ import { DEEPSEEK_CAPABILITIES, DeepSeekProvider } from './client.js';
|
|
|
11
11
|
export function registerDeepSeek(options) {
|
|
12
12
|
ProviderRegistry.register('deepseek', DeepSeekProvider, DEEPSEEK_CAPABILITIES, options);
|
|
13
13
|
}
|
|
14
|
-
export { DEEPSEEK_CAPABILITIES, DeepSeekProvider, assertEffortUnsupported, assertSamplingUsable, thinkingEnabled, toDeepSeekMessages, toDeepSeekTools, } from './client.js';
|
|
14
|
+
export { DEEPSEEK_CAPABILITIES, DeepSeekProvider, assertEffortUnsupported, assertSamplingUsable, resolveDeepSeekEffort, thinkingEnabled, toDeepSeekMessages, toDeepSeekTools, } from './client.js';
|
|
15
15
|
//# sourceMappingURL=index.js.map
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAwB,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAYrE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACzD,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;AACxF,CAAC;AAED,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,eAAe,EACf,kBAAkB,EAClB,eAAe,GACf,MAAM,aAAa,CAAA"}
|
|
1
|
+
{"version":3,"file":"index.js","sourceRoot":"","sources":["../src/index.ts"],"names":[],"mappings":"AAAA,OAAO,EAAE,gBAAgB,EAAwB,MAAM,YAAY,CAAA;AACnE,OAAO,EAAE,qBAAqB,EAAE,gBAAgB,EAAE,MAAM,aAAa,CAAA;AAYrE;;;;;;;GAOG;AACH,MAAM,UAAU,gBAAgB,CAAC,OAAyB;IACzD,gBAAgB,CAAC,QAAQ,CAAC,UAAU,EAAE,gBAAgB,EAAE,qBAAqB,EAAE,OAAO,CAAC,CAAA;AACxF,CAAC;AAED,OAAO,EACN,qBAAqB,EACrB,gBAAgB,EAChB,uBAAuB,EACvB,oBAAoB,EACpB,qBAAqB,EACrB,eAAe,EACf,kBAAkB,EAClB,eAAe,GACf,MAAM,aAAa,CAAA"}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@namzu/deepseek",
|
|
3
|
-
"version": "2.
|
|
3
|
+
"version": "2.3.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": "^4.1.11",
|
|
60
|
-
"@namzu/sdk": "^
|
|
60
|
+
"@namzu/sdk": "^60.0.0"
|
|
61
61
|
},
|
|
62
62
|
"scripts": {
|
|
63
63
|
"build": "tsc --build",
|
package/src/client.ts
CHANGED
|
@@ -31,6 +31,16 @@ import type {
|
|
|
31
31
|
} from 'openai/resources/chat/completions'
|
|
32
32
|
import type { DeepSeekConfig } from './types.js'
|
|
33
33
|
|
|
34
|
+
/**
|
|
35
|
+
* What the vendor documents for every current model: a 1M-token context and a
|
|
36
|
+
* 384K-token output cap (https://api-docs.deepseek.com/quick_start/pricing,
|
|
37
|
+
* one row for `deepseek-flash` and `deepseek-v4-pro`; the retired
|
|
38
|
+
* `deepseek-v4-flash` and `deepseek-v4-flash-vision-exp` names are served by
|
|
39
|
+
* the Flash model at the same limits).
|
|
40
|
+
*/
|
|
41
|
+
const CONTEXT_WINDOW_TOKENS = 1_000_000
|
|
42
|
+
const MAX_OUTPUT_TOKENS = 384_000
|
|
43
|
+
|
|
34
44
|
/** Driver-level mapping capabilities; model input support is listed separately. */
|
|
35
45
|
export const DEEPSEEK_CAPABILITIES: ProviderCapabilities = {
|
|
36
46
|
supportsTools: true,
|
|
@@ -44,11 +54,31 @@ export const DEEPSEEK_CAPABILITIES: ProviderCapabilities = {
|
|
|
44
54
|
}
|
|
45
55
|
|
|
46
56
|
const DEFAULT_BASE_URL = 'https://api.deepseek.com'
|
|
57
|
+
|
|
58
|
+
/**
|
|
59
|
+
* The documented 1M / 384K only describe the vendor's own service. A gateway
|
|
60
|
+
* behind a custom `baseURL` may serve the same id at a smaller window, so
|
|
61
|
+
* there the documented numbers are not offered and only what the listing
|
|
62
|
+
* reports counts.
|
|
63
|
+
*/
|
|
64
|
+
function isVendorBaseUrl(baseURL: string | undefined): boolean {
|
|
65
|
+
if (!baseURL) return true
|
|
66
|
+
try {
|
|
67
|
+
return new URL(baseURL).hostname === new URL(DEFAULT_BASE_URL).hostname
|
|
68
|
+
} catch {
|
|
69
|
+
return false
|
|
70
|
+
}
|
|
71
|
+
}
|
|
72
|
+
/** The current Flash id; it accepts images (https://api-docs.deepseek.com/quick_start/pricing). */
|
|
73
|
+
const CURRENT_FLASH_MODEL = 'deepseek-flash'
|
|
74
|
+
/** A retired name the vendor still serves; it routes to the Flash model, images included. */
|
|
47
75
|
const VISION_MODEL = 'deepseek-v4-flash-vision-exp'
|
|
76
|
+
const IMAGE_MODELS: ReadonlySet<string> = new Set([CURRENT_FLASH_MODEL, VISION_MODEL])
|
|
48
77
|
const TEXT_MODALITIES = Object.freeze(['text'] as const)
|
|
49
78
|
const VISION_MODALITIES = Object.freeze(['text', 'image'] as const)
|
|
50
79
|
const IMAGE_MEDIA_TYPES = new Set(['image/png', 'image/jpeg', 'image/webp', 'image/gif'])
|
|
51
80
|
const KNOWN_MODELS = Object.freeze([
|
|
81
|
+
{ id: CURRENT_FLASH_MODEL, name: 'DeepSeek-V4.1-Flash', inputModalities: VISION_MODALITIES },
|
|
52
82
|
{ id: 'deepseek-v4-flash', name: 'DeepSeek-V4-Flash', inputModalities: TEXT_MODALITIES },
|
|
53
83
|
{ id: 'deepseek-v4-pro', name: 'DeepSeek-V4-Pro', inputModalities: TEXT_MODALITIES },
|
|
54
84
|
{
|
|
@@ -158,8 +188,12 @@ const SAMPLING_FIELDS = ['temperature', 'topP', 'frequencyPenalty', 'presencePen
|
|
|
158
188
|
* below that turns on "thinking is enabled" has to read it this way, or it
|
|
159
189
|
* applies to explicit callers only and misses the common case entirely.
|
|
160
190
|
*/
|
|
161
|
-
export function thinkingEnabled(
|
|
162
|
-
|
|
191
|
+
export function thinkingEnabled(
|
|
192
|
+
thinking: ThinkingConfig | undefined,
|
|
193
|
+
effort?: ReasoningEffort,
|
|
194
|
+
): boolean {
|
|
195
|
+
// `none` is thinking off, and the driver sends it as `thinking: disabled`.
|
|
196
|
+
return thinking?.type !== 'disabled' && effort !== 'none'
|
|
163
197
|
}
|
|
164
198
|
|
|
165
199
|
/**
|
|
@@ -180,7 +214,7 @@ export function assertSamplingUsable(
|
|
|
180
214
|
mode: 'refuse' | 'ignore',
|
|
181
215
|
): void {
|
|
182
216
|
if (mode === 'ignore') return
|
|
183
|
-
if (!thinkingEnabled(params.thinking)) return
|
|
217
|
+
if (!thinkingEnabled(params.thinking, params.effort)) return
|
|
184
218
|
const set = SAMPLING_FIELDS.filter((f) => params[f] !== undefined)
|
|
185
219
|
if (set.length === 0) return
|
|
186
220
|
throw new Error(
|
|
@@ -201,6 +235,11 @@ export function assertSamplingUsable(
|
|
|
201
235
|
* The vendor's Anthropic-format endpoint does take `reasoning.effort`. A
|
|
202
236
|
* driver built on that wire could honour this; this one is built on Chat
|
|
203
237
|
* Completions and says so.
|
|
238
|
+
*
|
|
239
|
+
* @deprecated The driver now carries effort on `reasoning_effort`, the field
|
|
240
|
+
* the vendor's Chat Completions reference documents (the field measured here
|
|
241
|
+
* earlier was `thinking.effort`, which the vendor never defined). Nothing in
|
|
242
|
+
* this package calls it any more; use {@link resolveDeepSeekEffort}.
|
|
204
243
|
*/
|
|
205
244
|
export function assertEffortUnsupported(params: ChatCompletionParams): void {
|
|
206
245
|
if (params.effort === undefined) return
|
|
@@ -209,6 +248,69 @@ export function assertEffortUnsupported(params: ChatCompletionParams): void {
|
|
|
209
248
|
)
|
|
210
249
|
}
|
|
211
250
|
|
|
251
|
+
/** The effort levels the vendor's pages list, in the order they rank. */
|
|
252
|
+
const VENDOR_EFFORT_ORDER = ['low', 'high', 'max'] as const
|
|
253
|
+
type VendorEffort = (typeof VENDOR_EFFORT_ORDER)[number]
|
|
254
|
+
|
|
255
|
+
/** The menu used until the models endpoint says otherwise (levels low, high, max; default high). */
|
|
256
|
+
const DEFAULT_EFFORT_LEVELS: readonly VendorEffort[] = VENDOR_EFFORT_ORDER
|
|
257
|
+
const DEFAULT_EFFORT: VendorEffort = 'high'
|
|
258
|
+
|
|
259
|
+
/**
|
|
260
|
+
* The vendor's own mapping of Namzu's wider vocabulary onto what it accepts
|
|
261
|
+
* (https://api-docs.deepseek.com/guides/thinking_mode, "effort mapping").
|
|
262
|
+
*/
|
|
263
|
+
const VENDOR_EFFORT_ALIASES: Readonly<Record<Exclude<ReasoningEffort, 'none'>, VendorEffort>> = {
|
|
264
|
+
minimal: 'low',
|
|
265
|
+
low: 'low',
|
|
266
|
+
medium: 'high',
|
|
267
|
+
high: 'high',
|
|
268
|
+
xhigh: 'high',
|
|
269
|
+
max: 'max',
|
|
270
|
+
ultra: 'max',
|
|
271
|
+
}
|
|
272
|
+
|
|
273
|
+
export interface DeepSeekEffortResolution {
|
|
274
|
+
/** `none` turns thinking off; otherwise the level sent as `reasoning_effort`. */
|
|
275
|
+
readonly level: VendorEffort | 'none'
|
|
276
|
+
/** True when the level asked for is not the level sent. */
|
|
277
|
+
readonly mapped: boolean
|
|
278
|
+
}
|
|
279
|
+
|
|
280
|
+
/**
|
|
281
|
+
* Turn a requested effort into the one this model offers.
|
|
282
|
+
*
|
|
283
|
+
* `none` is thinking off. A level the model offers is sent as is. Any other
|
|
284
|
+
* level goes through the vendor's documented mapping (`medium` and `xhigh`
|
|
285
|
+
* to `high`, `minimal` to `low`, `ultra` to `max`); if the model's menu lacks
|
|
286
|
+
* that target, the nearest offered level is used, the lower one on a tie, and
|
|
287
|
+
* `mapped` says so. It never throws: a level this model does not offer must
|
|
288
|
+
* degrade to its neighbour rather than fail a run that asked for more thought.
|
|
289
|
+
*/
|
|
290
|
+
export function resolveDeepSeekEffort(
|
|
291
|
+
requested: ReasoningEffort,
|
|
292
|
+
offered: readonly string[] = DEFAULT_EFFORT_LEVELS,
|
|
293
|
+
): DeepSeekEffortResolution {
|
|
294
|
+
if (requested === 'none') return { level: 'none', mapped: false }
|
|
295
|
+
const menu = VENDOR_EFFORT_ORDER.filter((level) => offered.includes(level))
|
|
296
|
+
if (menu.length === 0) return { level: VENDOR_EFFORT_ALIASES[requested], mapped: true }
|
|
297
|
+
if ((menu as readonly string[]).includes(requested)) {
|
|
298
|
+
return { level: requested as VendorEffort, mapped: false }
|
|
299
|
+
}
|
|
300
|
+
const target = VENDOR_EFFORT_ALIASES[requested]
|
|
301
|
+
const wanted = VENDOR_EFFORT_ORDER.indexOf(target)
|
|
302
|
+
let best: VendorEffort = menu[0] as VendorEffort
|
|
303
|
+
let bestDistance = Number.POSITIVE_INFINITY
|
|
304
|
+
for (const level of menu) {
|
|
305
|
+
const distance = Math.abs(VENDOR_EFFORT_ORDER.indexOf(level) - wanted)
|
|
306
|
+
if (distance < bestDistance) {
|
|
307
|
+
best = level
|
|
308
|
+
bestDistance = distance
|
|
309
|
+
}
|
|
310
|
+
}
|
|
311
|
+
return { level: best, mapped: true }
|
|
312
|
+
}
|
|
313
|
+
|
|
212
314
|
/**
|
|
213
315
|
* Adapter-private state for one completed reasoning response.
|
|
214
316
|
*
|
|
@@ -453,13 +555,64 @@ function assertDeepSeekRichContent(
|
|
|
453
555
|
if (block.type === 'image') acceptImage(block.mediaType)
|
|
454
556
|
}
|
|
455
557
|
}
|
|
456
|
-
if (hasImage && model
|
|
558
|
+
if (hasImage && !IMAGE_MODELS.has(model)) {
|
|
457
559
|
throw new Error(
|
|
458
|
-
`DeepSeekProvider: model '${model}' does not accept image input. Select '${
|
|
560
|
+
`DeepSeekProvider: model '${model}' does not accept image input. Select '${CURRENT_FLASH_MODEL}' or remove the images.`,
|
|
459
561
|
)
|
|
460
562
|
}
|
|
461
563
|
}
|
|
462
564
|
|
|
565
|
+
interface VendorLimits {
|
|
566
|
+
readonly contextWindow?: number
|
|
567
|
+
readonly maxOutputTokens?: number
|
|
568
|
+
/** `effort.supported_levels` and `effort.default_level` from the models endpoint. */
|
|
569
|
+
readonly effortLevels?: readonly string[]
|
|
570
|
+
readonly effortDefault?: string
|
|
571
|
+
}
|
|
572
|
+
|
|
573
|
+
const positiveInteger = (value: unknown): number | undefined =>
|
|
574
|
+
typeof value === 'number' && Number.isSafeInteger(value) && value > 0 ? value : undefined
|
|
575
|
+
|
|
576
|
+
/** `context_window` and `max_output_tokens` on a models-endpoint entry, when present and sane. */
|
|
577
|
+
function readVendorLimits(entries: readonly unknown[]): Map<string, VendorLimits> {
|
|
578
|
+
const out = new Map<string, VendorLimits>()
|
|
579
|
+
for (const entry of entries) {
|
|
580
|
+
if (typeof entry !== 'object' || entry === null) continue
|
|
581
|
+
const record = entry as Record<string, unknown>
|
|
582
|
+
if (typeof record.id !== 'string') continue
|
|
583
|
+
const contextWindow = positiveInteger(record.context_window)
|
|
584
|
+
const maxOutputTokens = positiveInteger(record.max_output_tokens)
|
|
585
|
+
const effort =
|
|
586
|
+
typeof record.effort === 'object' && record.effort !== null
|
|
587
|
+
? (record.effort as Record<string, unknown>)
|
|
588
|
+
: undefined
|
|
589
|
+
const effortLevels = Array.isArray(effort?.supported_levels)
|
|
590
|
+
? (effort.supported_levels as unknown[]).filter(
|
|
591
|
+
(level): level is string => typeof level === 'string',
|
|
592
|
+
)
|
|
593
|
+
: undefined
|
|
594
|
+
const effortDefault =
|
|
595
|
+
typeof effort?.default_level === 'string' ? effort.default_level : undefined
|
|
596
|
+
if (
|
|
597
|
+
contextWindow === undefined &&
|
|
598
|
+
maxOutputTokens === undefined &&
|
|
599
|
+
(effortLevels === undefined || effortLevels.length === 0)
|
|
600
|
+
)
|
|
601
|
+
continue
|
|
602
|
+
out.set(record.id, {
|
|
603
|
+
...(contextWindow !== undefined ? { contextWindow } : {}),
|
|
604
|
+
...(maxOutputTokens !== undefined ? { maxOutputTokens } : {}),
|
|
605
|
+
...(effortLevels !== undefined && effortLevels.length > 0 ? { effortLevels } : {}),
|
|
606
|
+
...(effortDefault !== undefined ? { effortDefault } : {}),
|
|
607
|
+
})
|
|
608
|
+
}
|
|
609
|
+
return out
|
|
610
|
+
}
|
|
611
|
+
|
|
612
|
+
function isKnownModel(model: string): boolean {
|
|
613
|
+
return KNOWN_MODELS.some((candidate) => candidate.id === model)
|
|
614
|
+
}
|
|
615
|
+
|
|
463
616
|
function inputModalitiesFor(model: string): readonly ModelInputModality[] | undefined {
|
|
464
617
|
return KNOWN_MODELS.find((candidate) => candidate.id === model)?.inputModalities
|
|
465
618
|
}
|
|
@@ -489,6 +642,8 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
489
642
|
private client: OpenAI
|
|
490
643
|
private defaultModel?: string
|
|
491
644
|
private samplingMode: 'refuse' | 'ignore'
|
|
645
|
+
private vendorLimits: Promise<Map<string, VendorLimits>> | undefined
|
|
646
|
+
private readonly documentedLimits: boolean
|
|
492
647
|
|
|
493
648
|
constructor(config: DeepSeekConfig) {
|
|
494
649
|
if (!config.apiKey) {
|
|
@@ -507,6 +662,7 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
507
662
|
|
|
508
663
|
this.client = new OpenAI(clientOptions)
|
|
509
664
|
this.defaultModel = config.model
|
|
665
|
+
this.documentedLimits = isVendorBaseUrl(config.baseURL)
|
|
510
666
|
this.samplingMode = config.samplingInThinkingMode ?? 'refuse'
|
|
511
667
|
}
|
|
512
668
|
|
|
@@ -520,18 +676,36 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
520
676
|
return model
|
|
521
677
|
}
|
|
522
678
|
|
|
523
|
-
/**
|
|
524
|
-
|
|
525
|
-
|
|
679
|
+
/** Last models-endpoint answer, once a turn has fetched it; the sync menus read this. */
|
|
680
|
+
private vendorSnapshot: Map<string, VendorLimits> | undefined
|
|
681
|
+
|
|
682
|
+
/**
|
|
683
|
+
* `none` (thinking off) plus the levels the models endpoint lists for the
|
|
684
|
+
* model, or the vendor's documented low, high and max until it has been read.
|
|
685
|
+
*/
|
|
686
|
+
reasoningEffortLevelsFor(model: string): readonly ReasoningEffort[] {
|
|
687
|
+
const listed = this.vendorSnapshot?.get(model)?.effortLevels
|
|
688
|
+
const levels = VENDOR_EFFORT_ORDER.filter((level) =>
|
|
689
|
+
(listed ?? DEFAULT_EFFORT_LEVELS).includes(level),
|
|
690
|
+
)
|
|
691
|
+
return ['none', ...(levels.length > 0 ? levels : DEFAULT_EFFORT_LEVELS)]
|
|
692
|
+
}
|
|
693
|
+
|
|
694
|
+
/** The level a request without one runs at: the endpoint's `default_level`, else `high`. */
|
|
695
|
+
reasoningEffortDefaultFor(model: string): ReasoningEffort {
|
|
696
|
+
const stated = this.vendorSnapshot?.get(model)?.effortDefault
|
|
697
|
+
return stated !== undefined && (VENDOR_EFFORT_ORDER as readonly string[]).includes(stated)
|
|
698
|
+
? (stated as ReasoningEffort)
|
|
699
|
+
: DEFAULT_EFFORT
|
|
526
700
|
}
|
|
527
701
|
|
|
528
702
|
async *chatStream(params: ChatCompletionParams): AsyncIterable<StreamChunk> {
|
|
529
703
|
const model = this.resolveModel(params)
|
|
530
704
|
const providerRoute = resolveDeepSeekRoute(model, params.providerRoute)
|
|
531
|
-
assertEffortUnsupported(params)
|
|
532
705
|
assertSamplingUsable(params, this.samplingMode)
|
|
706
|
+
const thinkingOn = thinkingEnabled(params.thinking, params.effort)
|
|
533
707
|
|
|
534
|
-
const sampling =
|
|
708
|
+
const sampling = thinkingOn
|
|
535
709
|
? {}
|
|
536
710
|
: {
|
|
537
711
|
temperature: params.temperature,
|
|
@@ -566,9 +740,30 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
566
740
|
// Cast back to `typeof body` rather than to the SDK's parameter type: the
|
|
567
741
|
// extra key rides along at runtime, and the literal `stream: true`
|
|
568
742
|
// survives, which is what keeps the streaming overload selected.
|
|
569
|
-
|
|
570
|
-
|
|
571
|
-
|
|
743
|
+
//
|
|
744
|
+
// Effort rides on `reasoning_effort`, a sibling of `thinking`. An explicit
|
|
745
|
+
// `thinking.type` wins at the vendor, so `disabled` sends no level, and
|
|
746
|
+
// `none` is sent as `thinking: disabled` so the switch does not depend on
|
|
747
|
+
// that precedence. A level the model does not offer is mapped before it
|
|
748
|
+
// is sent (see `resolveDeepSeekEffort`).
|
|
749
|
+
const offered = this.vendorSnapshot?.get(model)?.effortLevels
|
|
750
|
+
const resolved =
|
|
751
|
+
params.effort !== undefined ? resolveDeepSeekEffort(params.effort, offered) : undefined
|
|
752
|
+
const thinkingField =
|
|
753
|
+
params.thinking?.type === 'disabled' || resolved?.level === 'none'
|
|
754
|
+
? { type: 'disabled' as const }
|
|
755
|
+
: params.thinking
|
|
756
|
+
? { type: params.thinking.type }
|
|
757
|
+
: undefined
|
|
758
|
+
const effortField =
|
|
759
|
+
resolved !== undefined && resolved.level !== 'none' && thinkingField?.type !== 'disabled'
|
|
760
|
+
? { reasoning_effort: resolved.level }
|
|
761
|
+
: {}
|
|
762
|
+
const withThinking = {
|
|
763
|
+
...body,
|
|
764
|
+
...(thinkingField ? { thinking: thinkingField } : {}),
|
|
765
|
+
...effortField,
|
|
766
|
+
} as typeof body
|
|
572
767
|
|
|
573
768
|
let stream: Awaited<ReturnType<typeof this.client.chat.completions.create>>
|
|
574
769
|
try {
|
|
@@ -709,6 +904,47 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
709
904
|
}
|
|
710
905
|
}
|
|
711
906
|
|
|
907
|
+
/**
|
|
908
|
+
* What the vendor's models endpoint says about each model it lists. The
|
|
909
|
+
* endpoint may leave `context_window` and `max_output_tokens` out (both are
|
|
910
|
+
* optional there), so an absent field is simply not an answer. A failed
|
|
911
|
+
* request is not cached: the next turn asks again.
|
|
912
|
+
*/
|
|
913
|
+
private fetchVendorLimits(signal?: AbortSignal): Promise<Map<string, VendorLimits>> {
|
|
914
|
+
if (this.vendorLimits) return this.vendorLimits
|
|
915
|
+
const request = this.client.models.list(signal ? { signal } : undefined).then((page) => {
|
|
916
|
+
const limits = readVendorLimits(page.data)
|
|
917
|
+
this.vendorSnapshot = limits
|
|
918
|
+
return limits
|
|
919
|
+
})
|
|
920
|
+
this.vendorLimits = request
|
|
921
|
+
request.catch(() => {
|
|
922
|
+
if (this.vendorLimits === request) this.vendorLimits = undefined
|
|
923
|
+
})
|
|
924
|
+
return request
|
|
925
|
+
}
|
|
926
|
+
|
|
927
|
+
/**
|
|
928
|
+
* The window the runtime measures compaction against: what the vendor's
|
|
929
|
+
* models endpoint reports for the id when it reports one, else the
|
|
930
|
+
* documented limit of a model this driver lists, else `undefined` rather
|
|
931
|
+
* than a guess, which leaves the SDK's table to answer for it. The vendor
|
|
932
|
+
* answers first and the built-in table is only the fallback.
|
|
933
|
+
*/
|
|
934
|
+
async resolveContextWindow(model: string, signal?: AbortSignal): Promise<number | undefined> {
|
|
935
|
+
signal?.throwIfAborted()
|
|
936
|
+
let reported: number | undefined
|
|
937
|
+
try {
|
|
938
|
+
reported = (await this.fetchVendorLimits(signal)).get(model)?.contextWindow
|
|
939
|
+
} catch {
|
|
940
|
+
// The listing is a refinement; a turn must not fail because it is down.
|
|
941
|
+
signal?.throwIfAborted()
|
|
942
|
+
}
|
|
943
|
+
return (
|
|
944
|
+
reported ?? (this.documentedLimits && isKnownModel(model) ? CONTEXT_WINDOW_TOKENS : undefined)
|
|
945
|
+
)
|
|
946
|
+
}
|
|
947
|
+
|
|
712
948
|
async probeCredential(signal?: AbortSignal): Promise<void> {
|
|
713
949
|
signal?.throwIfAborted()
|
|
714
950
|
await this.client.models.list(signal ? { signal } : undefined)
|
|
@@ -721,6 +957,7 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
721
957
|
signal?.throwIfAborted()
|
|
722
958
|
const models = new Map<string, { id: string; name: string }>()
|
|
723
959
|
for (const model of page.data) models.set(model.id, { id: model.id, name: model.id })
|
|
960
|
+
const vendor = readVendorLimits(page.data)
|
|
724
961
|
// The preview model is part of the source adapter's verified default
|
|
725
962
|
// catalogue but may lag the account listing endpoint. A successful list
|
|
726
963
|
// therefore augments rather than erases the known selectable catalogue.
|
|
@@ -729,8 +966,14 @@ export class DeepSeekProvider implements LLMProvider {
|
|
|
729
966
|
}
|
|
730
967
|
return [...models.values()].map((model) => {
|
|
731
968
|
const inputModalities = inputModalitiesFor(model.id)
|
|
969
|
+
const known = this.documentedLimits && isKnownModel(model.id)
|
|
970
|
+
const reported = vendor.get(model.id)
|
|
971
|
+
const contextWindow = reported?.contextWindow ?? (known ? CONTEXT_WINDOW_TOKENS : undefined)
|
|
972
|
+
const maxOutputTokens = reported?.maxOutputTokens ?? (known ? MAX_OUTPUT_TOKENS : undefined)
|
|
732
973
|
return {
|
|
733
974
|
...model,
|
|
975
|
+
...(contextWindow !== undefined ? { contextWindow } : {}),
|
|
976
|
+
...(maxOutputTokens !== undefined ? { maxOutputTokens } : {}),
|
|
734
977
|
...(inputModalities !== undefined ? { inputModalities } : {}),
|
|
735
978
|
supportsToolUse: true,
|
|
736
979
|
supportsStreaming: true,
|
package/src/index.ts
CHANGED
|
@@ -28,8 +28,10 @@ export {
|
|
|
28
28
|
DeepSeekProvider,
|
|
29
29
|
assertEffortUnsupported,
|
|
30
30
|
assertSamplingUsable,
|
|
31
|
+
resolveDeepSeekEffort,
|
|
31
32
|
thinkingEnabled,
|
|
32
33
|
toDeepSeekMessages,
|
|
33
34
|
toDeepSeekTools,
|
|
34
35
|
} from './client.js'
|
|
36
|
+
export type { DeepSeekEffortResolution } from './client.js'
|
|
35
37
|
export type { DeepSeekConfig, DeepSeekProviderConfig } from './types.js'
|