From bc454d4dec4d9ba6f0bb486137880358f3b6bc6f Mon Sep 17 00:00:00 2001 From: Nanami <85554899+Nana7mi1@users.noreply.github.com> Date: Tue, 14 Jan 2025 18:59:19 +0800 Subject: [PATCH] feat: add support for qwenlm and image upload (#726) * feat: add support for qwenlm and image upload * fix: qwenlm return * feat: add provider config --- src/main/ipc.ts | 1 + src/main/services/FileStorage.ts | 7 ++ src/preload/index.d.ts | 1 + src/preload/index.ts | 3 +- .../src/assets/images/providers/qwenlm.png | Bin 0 -> 82880 bytes src/renderer/src/config/models.ts | 50 ++++++++ src/renderer/src/config/providers.ts | 14 +++ src/renderer/src/i18n/locales/en-us.json | 3 +- src/renderer/src/i18n/locales/ja-jp.json | 3 +- src/renderer/src/i18n/locales/ru-ru.json | 3 +- src/renderer/src/i18n/locales/zh-cn.json | 3 +- src/renderer/src/i18n/locales/zh-tw.json | 3 +- src/renderer/src/providers/OpenAIProvider.ts | 115 ++++++++++++++++-- src/renderer/src/store/index.ts | 2 +- src/renderer/src/store/llm.ts | 10 ++ src/renderer/src/store/migrate.ts | 13 ++ 16 files changed, 211 insertions(+), 20 deletions(-) create mode 100644 src/renderer/src/assets/images/providers/qwenlm.png diff --git a/src/main/ipc.ts b/src/main/ipc.ts index 75b78978..a2089751 100644 --- a/src/main/ipc.ts +++ b/src/main/ipc.ts @@ -117,6 +117,7 @@ export function registerIpc(mainWindow: BrowserWindow, app: Electron.App) { ipcMain.handle('file:base64Image', fileManager.base64Image) ipcMain.handle('file:download', fileManager.downloadFile) ipcMain.handle('file:copy', fileManager.copyFile) + ipcMain.handle('file:binaryFile', fileManager.binaryFile) // minapp ipcMain.handle('minapp', (_, args) => { diff --git a/src/main/services/FileStorage.ts b/src/main/services/FileStorage.ts index 2ef4af4c..f0c74a63 100644 --- a/src/main/services/FileStorage.ts +++ b/src/main/services/FileStorage.ts @@ -263,6 +263,13 @@ class FileStorage { } } + public binaryFile = async (_: Electron.IpcMainInvokeEvent, id: string): Promise<{ data: Buffer; mime: string }> => { + const filePath = path.join(this.storageDir, id) + const data = await fs.promises.readFile(filePath) + const mime = `image/${path.extname(filePath).slice(1)}` + return { data, mime } + } + public clear = async (): Promise => { await fs.promises.rmdir(this.storageDir, { recursive: true }) await this.initStorageDir() diff --git a/src/preload/index.d.ts b/src/preload/index.d.ts index 26d31362..274402a9 100644 --- a/src/preload/index.d.ts +++ b/src/preload/index.d.ts @@ -53,6 +53,7 @@ declare global { base64Image: (fileId: string) => Promise<{ mime: string; base64: string; data: string }> download: (url: string) => Promise copy: (fileId: string, destPath: string) => Promise + binaryFile: (fileId: string) => Promise<{ data: Buffer; mime: string }> } export: { toWord: (markdown: string, fileName: string) => Promise diff --git a/src/preload/index.ts b/src/preload/index.ts index 8d81918c..25fa8c1f 100644 --- a/src/preload/index.ts +++ b/src/preload/index.ts @@ -43,7 +43,8 @@ const api = { saveImage: (name: string, data: string) => ipcRenderer.invoke('file:saveImage', name, data), base64Image: (fileId: string) => ipcRenderer.invoke('file:base64Image', fileId), download: (url: string) => ipcRenderer.invoke('file:download', url), - copy: (fileId: string, destPath: string) => ipcRenderer.invoke('file:copy', fileId, destPath) + copy: (fileId: string, destPath: string) => ipcRenderer.invoke('file:copy', fileId, destPath), + binaryFile: (fileId: string) => ipcRenderer.invoke('file:binaryFile', fileId) }, export: { toWord: (markdown: string, fileName: string) => ipcRenderer.invoke('export:word', markdown, fileName) diff --git a/src/renderer/src/assets/images/providers/qwenlm.png b/src/renderer/src/assets/images/providers/qwenlm.png new file mode 100644 index 0000000000000000000000000000000000000000..d207a2899794d5e9e2ed8ea96c56c43843f5dff0 GIT binary patch literal 82880 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 = { + qwenlm: [ + { + id: 'qwen-plus-latest', + provider: 'qwenlm', + name: 'Qwen2.5-Plus', + group: 'Qwen' + }, + { + id: 'qvq-72b-preview', + provider: 'qwenlm', + name: 'QVQ-72B-Preview', + group: 'Qwen' + }, + { + id: 'qwq-32b-preview', + provider: 'qwenlm', + name: 'QwQ-32B-Preview', + group: 'Qwen' + }, + { + id: 'qwen2.5-coder-32b-instruct', + provider: 'qwenlm', + name: 'Qwen2.5-Coder-32B-Instruct', + group: 'Qwen' + }, + { + id: 'qwen-vl-max-latest', + provider: 'qwenlm', + name: 'Qwen2-VL-Max', + group: 'Qwen' + }, + { + id: 'qwen-turbo-latest', + provider: 'qwenlm', + name: 'Qwen2.5-Turbo', + group: 'Qwen' + }, + { + id: 'qwen2.5-72b-instruct', + provider: 'qwenlm', + name: 'Qwen2.5-72B-Instruct', + group: 'Qwen' + }, + { + id: 'qwen2.5-32b-instruct', + provider: 'qwenlm', + name: 'Qwen2.5-32B-Instruct', + group: 'Qwen' + } + ], aihubmix: [ { id: 'gpt-4o', diff --git a/src/renderer/src/config/providers.ts b/src/renderer/src/config/providers.ts index d9060ab8..460f136c 100644 --- a/src/renderer/src/config/providers.ts +++ b/src/renderer/src/config/providers.ts @@ -28,6 +28,7 @@ import StepProviderLogo from '@renderer/assets/images/providers/step.png' import TogetherProviderLogo from '@renderer/assets/images/providers/together.png' import ZeroOneProviderLogo from '@renderer/assets/images/providers/zero-one.png' import ZhipuProviderLogo from '@renderer/assets/images/providers/zhipu.png' +import QwenLMProviderLogo from '@renderer/assets/images/providers/qwenlm.png' export function getProviderLogo(providerId: string) { switch (providerId) { @@ -91,6 +92,8 @@ export function getProviderLogo(providerId: string) { return MistralProviderLogo case 'jina': return JinaProviderLogo + case 'qwenlm': + return QwenLMProviderLogo default: return undefined } @@ -418,5 +421,16 @@ export const PROVIDER_CONFIG = { docs: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/', models: 'https://learn.microsoft.com/en-us/azure/ai-services/openai/concepts/models' } + }, + qwenlm: { + api: { + url: 'https://chat.qwenlm.ai/api/' + }, + websites: { + official: 'https://chat.qwenlm.ai', + apiKey: 'https://chat.qwenlm.ai', + docs: 'https://chat.qwenlm.ai', + models: 'https://chat.qwenlm.ai' + } } } diff --git a/src/renderer/src/i18n/locales/en-us.json b/src/renderer/src/i18n/locales/en-us.json index f8ce637e..8b7e31d8 100644 --- a/src/renderer/src/i18n/locales/en-us.json +++ b/src/renderer/src/i18n/locales/en-us.json @@ -326,7 +326,8 @@ "together": "Together", "yi": "Yi", "zhinao": "360AI", - "zhipu": "ZHIPU AI" + "zhipu": "ZHIPU AI", + "qwenlm": "QwenLM" }, "settings": { "about": "About & Feedback", diff --git a/src/renderer/src/i18n/locales/ja-jp.json b/src/renderer/src/i18n/locales/ja-jp.json index 4870b265..d74ef218 100644 --- a/src/renderer/src/i18n/locales/ja-jp.json +++ b/src/renderer/src/i18n/locales/ja-jp.json @@ -324,7 +324,8 @@ "together": "Together", "yi": "零一万物", "zhinao": "360智脳", - "zhipu": "智譜AI" + "zhipu": "智譜AI", + "qwenlm": "QwenLM" }, "settings": { "about": "について", diff --git a/src/renderer/src/i18n/locales/ru-ru.json b/src/renderer/src/i18n/locales/ru-ru.json index 2c39e3f7..1b271787 100644 --- a/src/renderer/src/i18n/locales/ru-ru.json +++ b/src/renderer/src/i18n/locales/ru-ru.json @@ -326,7 +326,8 @@ "together": "Together", "yi": "Yi", "zhinao": "360AI", - "zhipu": "ZHIPU AI" + "zhipu": "ZHIPU AI", + "qwenlm": "QwenLM" }, "settings": { "about": "О программе и обратная связь", diff --git a/src/renderer/src/i18n/locales/zh-cn.json b/src/renderer/src/i18n/locales/zh-cn.json index af56a32e..8b3e3fc4 100644 --- a/src/renderer/src/i18n/locales/zh-cn.json +++ b/src/renderer/src/i18n/locales/zh-cn.json @@ -327,7 +327,8 @@ "together": "Together", "yi": "零一万物", "zhinao": "360智脑", - "zhipu": "智谱AI" + "zhipu": "智谱AI", + "qwenlm": "QwenLM" }, "settings": { "about": "关于我们", diff --git a/src/renderer/src/i18n/locales/zh-tw.json b/src/renderer/src/i18n/locales/zh-tw.json index f18260f2..a3eb21ea 100644 --- a/src/renderer/src/i18n/locales/zh-tw.json +++ b/src/renderer/src/i18n/locales/zh-tw.json @@ -326,7 +326,8 @@ "together": "Together", "yi": "零一萬物", "zhinao": "360智腦", - "zhipu": "智譜AI" + "zhipu": "智譜AI", + "qwenlm": "QwenLM" }, "settings": { "about": "關於與回饋", diff --git a/src/renderer/src/providers/OpenAIProvider.ts b/src/renderer/src/providers/OpenAIProvider.ts index 48763df0..a424e766 100644 --- a/src/renderer/src/providers/OpenAIProvider.ts +++ b/src/renderer/src/providers/OpenAIProvider.ts @@ -46,6 +46,33 @@ export default class OpenAIProvider extends BaseProvider { return providers.includes(this.provider.id) } + private async uploadImageToQwenLM(image_file: Buffer, file_name: string, mime: string): Promise { + try { + // 创建 FormData + const formData = new FormData() + formData.append('file', new Blob([image_file], { type: mime }), file_name) + + // 发送上传请求 + const response = await fetch(`${this.provider.apiHost}v1/files/`, { + method: 'POST', + headers: { + Authorization: `Bearer ${this.apiKey}` + }, + body: formData + }) + + if (!response.ok) { + throw new Error('Failed to upload image to QwenLM') + } + + const data = await response.json() + return data.id + } catch (error) { + console.error('Error uploading image to QwenLM:', error) + throw error + } + } + private async getMessageParam( message: Message, model: Model @@ -94,20 +121,48 @@ export default class OpenAIProvider extends BaseProvider { } ] - for (const file of message.files || []) { - if (file.type === FileTypes.IMAGE && isVision) { - const image = await window.api.file.base64Image(file.id + file.ext) - parts.push({ - type: 'image_url', - image_url: { url: image.data } - }) + //QwenLM上传图片 + if (this.provider.id === 'qwenlm') { + let qwenlm_image_url: { type: string; image: string }[] = [] + + for (const file of message.files || []) { + if (file.type === FileTypes.IMAGE && isVision) { + const image = await window.api.file.binaryFile(file.id + file.ext) + + const imageId = await this.uploadImageToQwenLM(image.data, file.origin_name, image.mime) + qwenlm_image_url.push({ + type: 'image', + image: imageId + }) + } + if ([FileTypes.TEXT, FileTypes.DOCUMENT].includes(file.type)) { + const fileContent = await (await window.api.file.read(file.id + file.ext)).trim() + parts.push({ + type: 'text', + text: file.origin_name + '\n' + fileContent + }) + } } - if ([FileTypes.TEXT, FileTypes.DOCUMENT].includes(file.type)) { - const fileContent = await (await window.api.file.read(file.id + file.ext)).trim() - parts.push({ - type: 'text', - text: file.origin_name + '\n' + fileContent - }) + return { + role: message.role, + content: [...parts, ...qwenlm_image_url] + } as ChatCompletionMessageParam + } else { + for (const file of message.files || []) { + if (file.type === FileTypes.IMAGE && isVision) { + const image = await window.api.file.base64Image(file.id + file.ext) + parts.push({ + type: 'image_url', + image_url: { url: image.data } + }) + } + if ([FileTypes.TEXT, FileTypes.DOCUMENT].includes(file.type)) { + const fileContent = await (await window.api.file.read(file.id + file.ext)).trim() + parts.push({ + type: 'text', + text: file.origin_name + '\n' + fileContent + }) + } } } @@ -172,6 +227,40 @@ export default class OpenAIProvider extends BaseProvider { }) } + // 处理QwenLM的流式输出 + if (this.provider.id === 'qwenlm') { + let accumulatedText = '' + for await (const chunk of stream) { + if (window.keyv.get(EVENT_NAMES.CHAT_COMPLETION_PAUSED)) { + break + } + if (time_first_token_millsec == 0) { + time_first_token_millsec = new Date().getTime() - start_time_millsec + } + + // 获取当前块的完整内容 + const currentContent = chunk.choices[0]?.delta?.content || '' + + // 如果内容与累积的内容不同,则只发送增量部分 + if (currentContent !== accumulatedText) { + const deltaText = currentContent.slice(accumulatedText.length) + accumulatedText = currentContent // 更新累积的文本 + + const time_completion_millsec = new Date().getTime() - start_time_millsec + onChunk({ + text: deltaText, + usage: chunk.usage, + metrics: { + completion_tokens: chunk.usage?.completion_tokens, + time_completion_millsec, + time_first_token_millsec + } + }) + } + } + return + } + for await (const chunk of stream) { if (window.keyv.get(EVENT_NAMES.CHAT_COMPLETION_PAUSED)) { break diff --git a/src/renderer/src/store/index.ts b/src/renderer/src/store/index.ts index 6a21f698..a7b10db9 100644 --- a/src/renderer/src/store/index.ts +++ b/src/renderer/src/store/index.ts @@ -30,7 +30,7 @@ const persistedReducer = persistReducer( { key: 'cherry-studio', storage, - version: 55, + version: 56, blacklist: ['runtime'], migrate }, diff --git a/src/renderer/src/store/llm.ts b/src/renderer/src/store/llm.ts index 384cd36c..906bdda2 100644 --- a/src/renderer/src/store/llm.ts +++ b/src/renderer/src/store/llm.ts @@ -323,6 +323,16 @@ const initialState: LlmState = { models: SYSTEM_MODELS.jina, isSystem: true, enabled: false + }, + { + id: 'qwenlm', + name: 'QwenLM', + type: 'openai', + apiKey: '', + apiHost: 'https://chat.qwenlm.ai/api/', + models: SYSTEM_MODELS.qwenlm, + isSystem: true, + enabled: false } ], settings: { diff --git a/src/renderer/src/store/migrate.ts b/src/renderer/src/store/migrate.ts index c0e47a4d..e57f2d4e 100644 --- a/src/renderer/src/store/migrate.ts +++ b/src/renderer/src/store/migrate.ts @@ -799,6 +799,19 @@ const migrateConfig = { } } return state + }, + '56': (state: RootState) => { + state.llm.providers.push({ + id: 'qwenlm', + name: 'QwenLM', + type: 'openai', + apiKey: '', + apiHost: 'https://chat.qwenlm.ai/api/', + models: SYSTEM_MODELS.qwenlm, + isSystem: true, + enabled: false + }) + return state } }