@ai-sdk/deepseek 1.1.0-beta.0 → 1.1.0-beta.2
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 +18 -0
- package/dist/index.d.mts +3 -1
- package/dist/index.d.ts +3 -1
- package/dist/index.js +16 -8
- package/dist/index.js.map +1 -1
- package/dist/index.mjs +17 -9
- package/dist/index.mjs.map +1 -1
- package/package.json +4 -4
package/CHANGELOG.md
CHANGED
|
@@ -1,5 +1,23 @@
|
|
|
1
1
|
# @ai-sdk/deepseek
|
|
2
2
|
|
|
3
|
+
## 1.1.0-beta.2
|
|
4
|
+
|
|
5
|
+
### Patch Changes
|
|
6
|
+
|
|
7
|
+
- 1cad0ab: feat: add provider version to user-agent header
|
|
8
|
+
- Updated dependencies [0c4822d]
|
|
9
|
+
- @ai-sdk/openai-compatible@1.1.0-beta.2
|
|
10
|
+
- @ai-sdk/provider@2.1.0-beta.1
|
|
11
|
+
- @ai-sdk/provider-utils@3.1.0-beta.2
|
|
12
|
+
|
|
13
|
+
## 1.1.0-beta.1
|
|
14
|
+
|
|
15
|
+
### Patch Changes
|
|
16
|
+
|
|
17
|
+
- Updated dependencies [cbb1d35]
|
|
18
|
+
- @ai-sdk/provider-utils@3.1.0-beta.1
|
|
19
|
+
- @ai-sdk/openai-compatible@1.1.0-beta.1
|
|
20
|
+
|
|
3
21
|
## 1.1.0-beta.0
|
|
4
22
|
|
|
5
23
|
### Minor Changes
|
package/dist/index.d.mts
CHANGED
|
@@ -40,4 +40,6 @@ interface DeepSeekProvider extends ProviderV2 {
|
|
|
40
40
|
declare function createDeepSeek(options?: DeepSeekProviderSettings): DeepSeekProvider;
|
|
41
41
|
declare const deepseek: DeepSeekProvider;
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
declare const VERSION: string;
|
|
44
|
+
|
|
45
|
+
export { type DeepSeekProvider, type DeepSeekProviderSettings, VERSION, createDeepSeek, deepseek };
|
package/dist/index.d.ts
CHANGED
|
@@ -40,4 +40,6 @@ interface DeepSeekProvider extends ProviderV2 {
|
|
|
40
40
|
declare function createDeepSeek(options?: DeepSeekProviderSettings): DeepSeekProvider;
|
|
41
41
|
declare const deepseek: DeepSeekProvider;
|
|
42
42
|
|
|
43
|
-
|
|
43
|
+
declare const VERSION: string;
|
|
44
|
+
|
|
45
|
+
export { type DeepSeekProvider, type DeepSeekProviderSettings, VERSION, createDeepSeek, deepseek };
|
package/dist/index.js
CHANGED
|
@@ -20,6 +20,7 @@ var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: tru
|
|
|
20
20
|
// src/index.ts
|
|
21
21
|
var src_exports = {};
|
|
22
22
|
__export(src_exports, {
|
|
23
|
+
VERSION: () => VERSION,
|
|
23
24
|
createDeepSeek: () => createDeepSeek,
|
|
24
25
|
deepseek: () => deepseek
|
|
25
26
|
});
|
|
@@ -83,20 +84,26 @@ var deepSeekStreamChunkSchema = import_v4.z.object({
|
|
|
83
84
|
usage: deepSeekUsageSchema.nullish()
|
|
84
85
|
});
|
|
85
86
|
|
|
87
|
+
// src/version.ts
|
|
88
|
+
var VERSION = true ? "1.1.0-beta.2" : "0.0.0-test";
|
|
89
|
+
|
|
86
90
|
// src/deepseek-provider.ts
|
|
87
91
|
function createDeepSeek(options = {}) {
|
|
88
92
|
var _a;
|
|
89
93
|
const baseURL = (0, import_provider_utils2.withoutTrailingSlash)(
|
|
90
94
|
(_a = options.baseURL) != null ? _a : "https://api.deepseek.com/v1"
|
|
91
95
|
);
|
|
92
|
-
const getHeaders = () => (
|
|
93
|
-
|
|
94
|
-
|
|
95
|
-
|
|
96
|
-
|
|
97
|
-
|
|
98
|
-
|
|
99
|
-
|
|
96
|
+
const getHeaders = () => (0, import_provider_utils2.withUserAgentSuffix)(
|
|
97
|
+
{
|
|
98
|
+
Authorization: `Bearer ${(0, import_provider_utils2.loadApiKey)({
|
|
99
|
+
apiKey: options.apiKey,
|
|
100
|
+
environmentVariableName: "DEEPSEEK_API_KEY",
|
|
101
|
+
description: "DeepSeek API key"
|
|
102
|
+
})}`,
|
|
103
|
+
...options.headers
|
|
104
|
+
},
|
|
105
|
+
`ai-sdk/deepseek/${VERSION}`
|
|
106
|
+
);
|
|
100
107
|
const createLanguageModel = (modelId) => {
|
|
101
108
|
return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId, {
|
|
102
109
|
provider: `deepseek.chat`,
|
|
@@ -120,6 +127,7 @@ function createDeepSeek(options = {}) {
|
|
|
120
127
|
var deepseek = createDeepSeek();
|
|
121
128
|
// Annotate the CommonJS export names for ESM import in node:
|
|
122
129
|
0 && (module.exports = {
|
|
130
|
+
VERSION,
|
|
123
131
|
createDeepSeek,
|
|
124
132
|
deepseek
|
|
125
133
|
});
|
package/dist/index.js.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/index.ts","../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts"],"sourcesContent":["export { createDeepSeek, deepseek } from './deepseek-provider';\nexport type {\n DeepSeekProvider,\n DeepSeekProviderSettings,\n} from './deepseek-provider';\nexport type { OpenAICompatibleErrorData as DeepSeekErrorData } from '@ai-sdk/openai-compatible';\n","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-options';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = ()
|
|
1
|
+
{"version":3,"sources":["../src/index.ts","../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts","../src/version.ts"],"sourcesContent":["export { createDeepSeek, deepseek } from './deepseek-provider';\nexport type {\n DeepSeekProvider,\n DeepSeekProviderSettings,\n} from './deepseek-provider';\nexport type { OpenAICompatibleErrorData as DeepSeekErrorData } from '@ai-sdk/openai-compatible';\nexport { VERSION } from './version';\n","import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-options';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\nimport { VERSION } from './version';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepseek/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n metadataExtractor: deepSeekMetadataExtractor,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport { safeValidateTypes } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst buildDeepseekMetadata = (\n usage: z.infer<typeof deepSeekUsageSchema> | undefined,\n) => {\n return usage == null\n ? undefined\n : {\n deepseek: {\n promptCacheHitTokens: usage.prompt_cache_hit_tokens ?? NaN,\n promptCacheMissTokens: usage.prompt_cache_miss_tokens ?? NaN,\n },\n };\n};\n\nexport const deepSeekMetadataExtractor: MetadataExtractor = {\n extractMetadata: async ({ parsedBody }: { parsedBody: unknown }) => {\n const parsed = await safeValidateTypes({\n value: parsedBody,\n schema: deepSeekResponseSchema,\n });\n\n return !parsed.success || parsed.value.usage == null\n ? undefined\n : buildDeepseekMetadata(parsed.value.usage);\n },\n\n createStreamExtractor: () => {\n let usage: z.infer<typeof deepSeekUsageSchema> | undefined;\n\n return {\n processChunk: async (chunk: unknown) => {\n const parsed = await safeValidateTypes({\n value: chunk,\n schema: deepSeekStreamChunkSchema,\n });\n\n if (\n parsed.success &&\n parsed.value.choices?.[0]?.finish_reason === 'stop' &&\n parsed.value.usage\n ) {\n usage = parsed.value.usage;\n }\n },\n buildMetadata: () => buildDeepseekMetadata(usage),\n };\n },\n};\n\nconst deepSeekUsageSchema = z.object({\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n});\n\nconst deepSeekResponseSchema = z.object({\n usage: deepSeekUsageSchema.nullish(),\n});\n\nconst deepSeekStreamChunkSchema = z.object({\n choices: z\n .array(\n z.object({\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: deepSeekUsageSchema.nullish(),\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":";;;;;;;;;;;;;;;;;;;;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;AAAA;;;ACAA,+BAAkD;AAClD,sBAIO;AACP,IAAAA,yBAKO;;;ACVP,4BAAkC;AAClC,gBAAkB;AAElB,IAAM,wBAAwB,CAC5B,UACG;AANL;AAOE,SAAO,SAAS,OACZ,SACA;AAAA,IACE,UAAU;AAAA,MACR,uBAAsB,WAAM,4BAAN,YAAiC;AAAA,MACvD,wBAAuB,WAAM,6BAAN,YAAkC;AAAA,IAC3D;AAAA,EACF;AACN;AAEO,IAAM,4BAA+C;AAAA,EAC1D,iBAAiB,OAAO,EAAE,WAAW,MAA+B;AAClE,UAAM,SAAS,UAAM,yCAAkB;AAAA,MACrC,OAAO;AAAA,MACP,QAAQ;AAAA,IACV,CAAC;AAED,WAAO,CAAC,OAAO,WAAW,OAAO,MAAM,SAAS,OAC5C,SACA,sBAAsB,OAAO,MAAM,KAAK;AAAA,EAC9C;AAAA,EAEA,uBAAuB,MAAM;AAC3B,QAAI;AAEJ,WAAO;AAAA,MACL,cAAc,OAAO,UAAmB;AAjC9C;AAkCQ,cAAM,SAAS,UAAM,yCAAkB;AAAA,UACrC,OAAO;AAAA,UACP,QAAQ;AAAA,QACV,CAAC;AAED,YACE,OAAO,aACP,kBAAO,MAAM,YAAb,mBAAuB,OAAvB,mBAA2B,mBAAkB,UAC7C,OAAO,MAAM,OACb;AACA,kBAAQ,OAAO,MAAM;AAAA,QACvB;AAAA,MACF;AAAA,MACA,eAAe,MAAM,sBAAsB,KAAK;AAAA,IAClD;AAAA,EACF;AACF;AAEA,IAAM,sBAAsB,YAAE,OAAO;AAAA,EACnC,yBAAyB,YAAE,OAAO,EAAE,QAAQ;AAAA,EAC5C,0BAA0B,YAAE,OAAO,EAAE,QAAQ;AAC/C,CAAC;AAED,IAAM,yBAAyB,YAAE,OAAO;AAAA,EACtC,OAAO,oBAAoB,QAAQ;AACrC,CAAC;AAED,IAAM,4BAA4B,YAAE,OAAO;AAAA,EACzC,SAAS,YACN;AAAA,IACC,YAAE,OAAO;AAAA,MACP,eAAe,YAAE,OAAO,EAAE,QAAQ;AAAA,IACpC,CAAC;AAAA,EACH,EACC,QAAQ;AAAA,EACX,OAAO,oBAAoB,QAAQ;AACrC,CAAC;;;ACpEM,IAAM,UACX,OACI,iBACA;;;AFgDC,SAAS,eACd,UAAoC,CAAC,GACnB;AAvDpB;AAwDE,QAAM,cAAU;AAAA,KACd,aAAQ,YAAR,YAAmB;AAAA,EACrB;AACA,QAAM,aAAa,UACjB;AAAA,IACE;AAAA,MACE,eAAe,cAAU,mCAAW;AAAA,QAClC,QAAQ,QAAQ;AAAA,QAChB,yBAAyB;AAAA,QACzB,aAAa;AAAA,MACf,CAAC,CAAC;AAAA,MACF,GAAG,QAAQ;AAAA,IACb;AAAA,IACA,mBAAmB,OAAO;AAAA,EAC5B;AAEF,QAAM,sBAAsB,CAAC,YAAiC;AAC5D,WAAO,IAAI,2DAAkC,SAAS;AAAA,MACpD,UAAU;AAAA,MACV,KAAK,CAAC,EAAE,KAAK,MAAM,GAAG,OAAO,GAAG,IAAI;AAAA,MACpC,SAAS;AAAA,MACT,OAAO,QAAQ;AAAA,MACf,mBAAmB;AAAA,IACrB,CAAC;AAAA,EACH;AAEA,QAAM,WAAW,CAAC,YAChB,oBAAoB,OAAO;AAE7B,WAAS,gBAAgB;AACzB,WAAS,OAAO;AAEhB,WAAS,qBAAqB,CAAC,YAAoB;AACjD,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,qBAAqB,CAAC;AAAA,EACzE;AACA,WAAS,aAAa,CAAC,YAAoB;AACzC,UAAM,IAAI,iCAAiB,EAAE,SAAS,WAAW,aAAa,CAAC;AAAA,EACjE;AAEA,SAAO;AACT;AAEO,IAAM,WAAW,eAAe;","names":["import_provider_utils"]}
|
package/dist/index.mjs
CHANGED
|
@@ -5,7 +5,8 @@ import {
|
|
|
5
5
|
} from "@ai-sdk/provider";
|
|
6
6
|
import {
|
|
7
7
|
loadApiKey,
|
|
8
|
-
withoutTrailingSlash
|
|
8
|
+
withoutTrailingSlash,
|
|
9
|
+
withUserAgentSuffix
|
|
9
10
|
} from "@ai-sdk/provider-utils";
|
|
10
11
|
|
|
11
12
|
// src/deepseek-metadata-extractor.ts
|
|
@@ -61,20 +62,26 @@ var deepSeekStreamChunkSchema = z.object({
|
|
|
61
62
|
usage: deepSeekUsageSchema.nullish()
|
|
62
63
|
});
|
|
63
64
|
|
|
65
|
+
// src/version.ts
|
|
66
|
+
var VERSION = true ? "1.1.0-beta.2" : "0.0.0-test";
|
|
67
|
+
|
|
64
68
|
// src/deepseek-provider.ts
|
|
65
69
|
function createDeepSeek(options = {}) {
|
|
66
70
|
var _a;
|
|
67
71
|
const baseURL = withoutTrailingSlash(
|
|
68
72
|
(_a = options.baseURL) != null ? _a : "https://api.deepseek.com/v1"
|
|
69
73
|
);
|
|
70
|
-
const getHeaders = () => (
|
|
71
|
-
|
|
72
|
-
|
|
73
|
-
|
|
74
|
-
|
|
75
|
-
|
|
76
|
-
|
|
77
|
-
|
|
74
|
+
const getHeaders = () => withUserAgentSuffix(
|
|
75
|
+
{
|
|
76
|
+
Authorization: `Bearer ${loadApiKey({
|
|
77
|
+
apiKey: options.apiKey,
|
|
78
|
+
environmentVariableName: "DEEPSEEK_API_KEY",
|
|
79
|
+
description: "DeepSeek API key"
|
|
80
|
+
})}`,
|
|
81
|
+
...options.headers
|
|
82
|
+
},
|
|
83
|
+
`ai-sdk/deepseek/${VERSION}`
|
|
84
|
+
);
|
|
78
85
|
const createLanguageModel = (modelId) => {
|
|
79
86
|
return new OpenAICompatibleChatLanguageModel(modelId, {
|
|
80
87
|
provider: `deepseek.chat`,
|
|
@@ -97,6 +104,7 @@ function createDeepSeek(options = {}) {
|
|
|
97
104
|
}
|
|
98
105
|
var deepseek = createDeepSeek();
|
|
99
106
|
export {
|
|
107
|
+
VERSION,
|
|
100
108
|
createDeepSeek,
|
|
101
109
|
deepseek
|
|
102
110
|
};
|
package/dist/index.mjs.map
CHANGED
|
@@ -1 +1 @@
|
|
|
1
|
-
{"version":3,"sources":["../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts"],"sourcesContent":["import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-options';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = ()
|
|
1
|
+
{"version":3,"sources":["../src/deepseek-provider.ts","../src/deepseek-metadata-extractor.ts","../src/version.ts"],"sourcesContent":["import { OpenAICompatibleChatLanguageModel } from '@ai-sdk/openai-compatible';\nimport {\n LanguageModelV2,\n NoSuchModelError,\n ProviderV2,\n} from '@ai-sdk/provider';\nimport {\n FetchFunction,\n loadApiKey,\n withoutTrailingSlash,\n withUserAgentSuffix,\n} from '@ai-sdk/provider-utils';\nimport { DeepSeekChatModelId } from './deepseek-chat-options';\nimport { deepSeekMetadataExtractor } from './deepseek-metadata-extractor';\nimport { VERSION } from './version';\n\nexport interface DeepSeekProviderSettings {\n /**\nDeepSeek API key.\n*/\n apiKey?: string;\n /**\nBase URL for the API calls.\n*/\n baseURL?: string;\n /**\nCustom headers to include in the requests.\n*/\n headers?: Record<string, string>;\n /**\nCustom fetch implementation. You can use it as a middleware to intercept requests,\nor to provide a custom fetch implementation for e.g. testing.\n*/\n fetch?: FetchFunction;\n}\n\nexport interface DeepSeekProvider extends ProviderV2 {\n /**\nCreates a DeepSeek model for text generation.\n*/\n (modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek model for text generation.\n*/\n languageModel(modelId: DeepSeekChatModelId): LanguageModelV2;\n\n /**\nCreates a DeepSeek chat model for text generation.\n*/\n chat(modelId: DeepSeekChatModelId): LanguageModelV2;\n}\n\nexport function createDeepSeek(\n options: DeepSeekProviderSettings = {},\n): DeepSeekProvider {\n const baseURL = withoutTrailingSlash(\n options.baseURL ?? 'https://api.deepseek.com/v1',\n );\n const getHeaders = () =>\n withUserAgentSuffix(\n {\n Authorization: `Bearer ${loadApiKey({\n apiKey: options.apiKey,\n environmentVariableName: 'DEEPSEEK_API_KEY',\n description: 'DeepSeek API key',\n })}`,\n ...options.headers,\n },\n `ai-sdk/deepseek/${VERSION}`,\n );\n\n const createLanguageModel = (modelId: DeepSeekChatModelId) => {\n return new OpenAICompatibleChatLanguageModel(modelId, {\n provider: `deepseek.chat`,\n url: ({ path }) => `${baseURL}${path}`,\n headers: getHeaders,\n fetch: options.fetch,\n metadataExtractor: deepSeekMetadataExtractor,\n });\n };\n\n const provider = (modelId: DeepSeekChatModelId) =>\n createLanguageModel(modelId);\n\n provider.languageModel = createLanguageModel;\n provider.chat = createLanguageModel;\n\n provider.textEmbeddingModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'textEmbeddingModel' });\n };\n provider.imageModel = (modelId: string) => {\n throw new NoSuchModelError({ modelId, modelType: 'imageModel' });\n };\n\n return provider;\n}\n\nexport const deepseek = createDeepSeek();\n","import { MetadataExtractor } from '@ai-sdk/openai-compatible';\nimport { safeValidateTypes } from '@ai-sdk/provider-utils';\nimport { z } from 'zod/v4';\n\nconst buildDeepseekMetadata = (\n usage: z.infer<typeof deepSeekUsageSchema> | undefined,\n) => {\n return usage == null\n ? undefined\n : {\n deepseek: {\n promptCacheHitTokens: usage.prompt_cache_hit_tokens ?? NaN,\n promptCacheMissTokens: usage.prompt_cache_miss_tokens ?? NaN,\n },\n };\n};\n\nexport const deepSeekMetadataExtractor: MetadataExtractor = {\n extractMetadata: async ({ parsedBody }: { parsedBody: unknown }) => {\n const parsed = await safeValidateTypes({\n value: parsedBody,\n schema: deepSeekResponseSchema,\n });\n\n return !parsed.success || parsed.value.usage == null\n ? undefined\n : buildDeepseekMetadata(parsed.value.usage);\n },\n\n createStreamExtractor: () => {\n let usage: z.infer<typeof deepSeekUsageSchema> | undefined;\n\n return {\n processChunk: async (chunk: unknown) => {\n const parsed = await safeValidateTypes({\n value: chunk,\n schema: deepSeekStreamChunkSchema,\n });\n\n if (\n parsed.success &&\n parsed.value.choices?.[0]?.finish_reason === 'stop' &&\n parsed.value.usage\n ) {\n usage = parsed.value.usage;\n }\n },\n buildMetadata: () => buildDeepseekMetadata(usage),\n };\n },\n};\n\nconst deepSeekUsageSchema = z.object({\n prompt_cache_hit_tokens: z.number().nullish(),\n prompt_cache_miss_tokens: z.number().nullish(),\n});\n\nconst deepSeekResponseSchema = z.object({\n usage: deepSeekUsageSchema.nullish(),\n});\n\nconst deepSeekStreamChunkSchema = z.object({\n choices: z\n .array(\n z.object({\n finish_reason: z.string().nullish(),\n }),\n )\n .nullish(),\n usage: deepSeekUsageSchema.nullish(),\n});\n","// Version string of this package injected at build time.\ndeclare const __PACKAGE_VERSION__: string | undefined;\nexport const VERSION: string =\n typeof __PACKAGE_VERSION__ !== 'undefined'\n ? __PACKAGE_VERSION__\n : '0.0.0-test';\n"],"mappings":"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","names":[]}
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@ai-sdk/deepseek",
|
|
3
|
-
"version": "1.1.0-beta.
|
|
3
|
+
"version": "1.1.0-beta.2",
|
|
4
4
|
"license": "Apache-2.0",
|
|
5
5
|
"sideEffects": false,
|
|
6
6
|
"main": "./dist/index.js",
|
|
@@ -19,9 +19,9 @@
|
|
|
19
19
|
}
|
|
20
20
|
},
|
|
21
21
|
"dependencies": {
|
|
22
|
-
"@ai-sdk/openai-compatible": "1.1.0-beta.
|
|
23
|
-
"@ai-sdk/provider": "2.1.0-beta.
|
|
24
|
-
"@ai-sdk/provider-utils": "3.1.0-beta.
|
|
22
|
+
"@ai-sdk/openai-compatible": "1.1.0-beta.2",
|
|
23
|
+
"@ai-sdk/provider": "2.1.0-beta.1",
|
|
24
|
+
"@ai-sdk/provider-utils": "3.1.0-beta.2"
|
|
25
25
|
},
|
|
26
26
|
"devDependencies": {
|
|
27
27
|
"@types/node": "20.17.24",
|