diff --git a/manifest.json b/manifest.json index e3e0250..33a3a77 100644 --- a/manifest.json +++ b/manifest.json @@ -1,10 +1,10 @@ { "id": "tars", "name": "Tars", - "version": "0.2.0", + "version": "0.2.1", "minAppVersion": "1.5.8", "description": "Use Kimi and other Chinese LLMs for text generation based on tag suggestions.", "author": "Tarslab", "authorUrl": "https://github.com/tarslab", "isDesktopOnly": true -} \ No newline at end of file +} diff --git a/package.json b/package.json index 8b5c735..fd3ece1 100644 --- a/package.json +++ b/package.json @@ -1,6 +1,6 @@ { "name": "obsidian-tars", - "version": "0.2.0", + "version": "0.2.1", "description": "Use Kimi and other Chinese LLMs for text generation based on tag suggestions.", "main": "main.js", "scripts": { diff --git a/src/providers/deepSeek.ts b/src/providers/deepSeek.ts new file mode 100644 index 0000000..2e6742d --- /dev/null +++ b/src/providers/deepSeek.ts @@ -0,0 +1,45 @@ +import OpenAI from 'openai' +import { t } from 'src/lang/helper' +import { BaseOptions, Message, SendRequest, Vendor } from '.' + +const sendRequestFunc = (settings: BaseOptions): SendRequest => + async function* (messages: Message[]) { + const { parameters, ...optionsExcludingParams } = settings + const options = { ...optionsExcludingParams, ...parameters } + const { apiKey, baseURL, model, ...remains } = options + if (!apiKey) throw new Error(t('API key is required')) + + const client = new OpenAI({ + apiKey, + baseURL, + dangerouslyAllowBrowser: true + }) + + const stream = await client.chat.completions.create({ + model, + messages, + stream: true, + ...remains + }) + + for await (const part of stream) { + const text = part.choices[0]?.delta?.content + if (!text) continue + yield text + } + } + +const models = ['deepseek-chat', 'deepseek-coder'] + +export const deepSeekVendor: Vendor = { + name: 'DeepSeek', + defaultOptions: { + apiKey: '', + baseURL: 'https://api.deepseek.com', + model: models[0], + parameters: {} + }, + sendRequestFunc, + models, + websiteToObtainKey: 'https://platform.deepseek.com' +} diff --git a/src/settings.ts b/src/settings.ts index eb6196f..30fe3d1 100644 --- a/src/settings.ts +++ b/src/settings.ts @@ -1,4 +1,5 @@ import { ProviderSettings, Vendor } from './providers' +import { deepSeekVendor } from './providers/deepSeek' import { doubaoVendor } from './providers/doubao' import { kimiVendor } from './providers/kimi' import { openAIVendor } from './providers/openAI' @@ -28,5 +29,6 @@ export const availableVendors: Vendor[] = [ openAIVendor, qianFanVendor, qwenVendor, - zhipuVendor + zhipuVendor, + deepSeekVendor ] diff --git a/versions.json b/versions.json index e32a791..7ae5b0e 100644 --- a/versions.json +++ b/versions.json @@ -2,5 +2,6 @@ "0.1.0": "1.5.8", "0.1.1": "1.5.8", "0.1.2": "1.5.8", - "0.2.0": "1.5.8" + "0.2.0": "1.5.8", + "0.2.1": "1.5.8" } \ No newline at end of file