@ai-toolkit/deepseek
Version:
The **[DeepSeek provider](https://sdk.khulnasoft.com/providers/ai-toolkit-providers/deepseek)** for the [AI TOOLKIT](https://sdk.khulnasoft.com/docs) contains language model support for the [DeepSeek](https://www.deepseek.com) platform.
124 lines (120 loc) • 4.41 kB
JavaScript
;
var __defProp = Object.defineProperty;
var __getOwnPropDesc = Object.getOwnPropertyDescriptor;
var __getOwnPropNames = Object.getOwnPropertyNames;
var __hasOwnProp = Object.prototype.hasOwnProperty;
var __export = (target, all) => {
for (var name in all)
__defProp(target, name, { get: all[name], enumerable: true });
};
var __copyProps = (to, from, except, desc) => {
if (from && typeof from === "object" || typeof from === "function") {
for (let key of __getOwnPropNames(from))
if (!__hasOwnProp.call(to, key) && key !== except)
__defProp(to, key, { get: () => from[key], enumerable: !(desc = __getOwnPropDesc(from, key)) || desc.enumerable });
}
return to;
};
var __toCommonJS = (mod) => __copyProps(__defProp({}, "__esModule", { value: true }), mod);
// src/index.ts
var src_exports = {};
__export(src_exports, {
createDeepSeek: () => createDeepSeek,
deepseek: () => deepseek
});
module.exports = __toCommonJS(src_exports);
// src/deepseek-provider.ts
var import_openai_compatible = require("@ai-toolkit/openai-compatible");
var import_provider = require("@ai-toolkit/provider");
var import_provider_utils2 = require("@ai-toolkit/provider-utils");
// src/deepseek-metadata-extractor.ts
var import_provider_utils = require("@ai-toolkit/provider-utils");
var import_zod = require("zod");
var buildDeepseekMetadata = (usage) => {
var _a, _b;
return usage == null ? void 0 : {
deepseek: {
promptCacheHitTokens: (_a = usage.prompt_cache_hit_tokens) != null ? _a : NaN,
promptCacheMissTokens: (_b = usage.prompt_cache_miss_tokens) != null ? _b : NaN
}
};
};
var deepSeekMetadataExtractor = {
extractMetadata: ({ parsedBody }) => {
const parsed = (0, import_provider_utils.safeValidateTypes)({
value: parsedBody,
schema: deepSeekResponseSchema
});
return !parsed.success || parsed.value.usage == null ? void 0 : buildDeepseekMetadata(parsed.value.usage);
},
createStreamExtractor: () => {
let usage;
return {
processChunk: (chunk) => {
var _a, _b;
const parsed = (0, import_provider_utils.safeValidateTypes)({
value: chunk,
schema: deepSeekStreamChunkSchema
});
if (parsed.success && ((_b = (_a = parsed.value.choices) == null ? void 0 : _a[0]) == null ? void 0 : _b.finish_reason) === "stop" && parsed.value.usage) {
usage = parsed.value.usage;
}
},
buildMetadata: () => buildDeepseekMetadata(usage)
};
}
};
var deepSeekUsageSchema = import_zod.z.object({
prompt_cache_hit_tokens: import_zod.z.number().nullish(),
prompt_cache_miss_tokens: import_zod.z.number().nullish()
});
var deepSeekResponseSchema = import_zod.z.object({
usage: deepSeekUsageSchema.nullish()
});
var deepSeekStreamChunkSchema = import_zod.z.object({
choices: import_zod.z.array(
import_zod.z.object({
finish_reason: import_zod.z.string().nullish()
})
).nullish(),
usage: deepSeekUsageSchema.nullish()
});
// src/deepseek-provider.ts
function createDeepSeek(options = {}) {
var _a;
const baseURL = (0, import_provider_utils2.withoutTrailingSlash)(
(_a = options.baseURL) != null ? _a : "https://api.deepseek.com/v1"
);
const getHeaders = () => ({
Authorization: `Bearer ${(0, import_provider_utils2.loadApiKey)({
apiKey: options.apiKey,
environmentVariableName: "DEEPSEEK_API_KEY",
description: "DeepSeek API key"
})}`,
...options.headers
});
const createLanguageModel = (modelId, settings = {}) => {
return new import_openai_compatible.OpenAICompatibleChatLanguageModel(modelId, settings, {
provider: `deepseek.chat`,
url: ({ path }) => `${baseURL}${path}`,
headers: getHeaders,
fetch: options.fetch,
defaultObjectGenerationMode: "json",
metadataExtractor: deepSeekMetadataExtractor
});
};
const provider = (modelId, settings) => createLanguageModel(modelId, settings);
provider.languageModel = createLanguageModel;
provider.chat = createLanguageModel;
provider.textEmbeddingModel = (modelId) => {
throw new import_provider.NoSuchModelError({ modelId, modelType: "textEmbeddingModel" });
};
return provider;
}
var deepseek = createDeepSeek();
// Annotate the CommonJS export names for ESM import in node:
0 && (module.exports = {
createDeepSeek,
deepseek
});
//# sourceMappingURL=index.js.map