@lobehub/chat 1.136.12 → 1.136.13
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/.github/workflows/claude-translator.yml +13 -1
- package/CHANGELOG.md +34 -0
- package/changelog/v1.json +12 -0
- package/locales/ar/modelProvider.json +12 -0
- package/locales/ar/models.json +39 -24
- package/locales/bg-BG/modelProvider.json +12 -0
- package/locales/bg-BG/models.json +39 -24
- package/locales/de-DE/modelProvider.json +12 -0
- package/locales/de-DE/models.json +39 -24
- package/locales/en-US/modelProvider.json +12 -0
- package/locales/en-US/models.json +39 -24
- package/locales/es-ES/modelProvider.json +12 -0
- package/locales/es-ES/models.json +39 -24
- package/locales/fa-IR/modelProvider.json +12 -0
- package/locales/fa-IR/models.json +39 -24
- package/locales/fr-FR/modelProvider.json +12 -0
- package/locales/fr-FR/models.json +39 -24
- package/locales/it-IT/modelProvider.json +12 -0
- package/locales/it-IT/models.json +39 -24
- package/locales/ja-JP/modelProvider.json +12 -0
- package/locales/ja-JP/models.json +39 -24
- package/locales/ko-KR/modelProvider.json +12 -0
- package/locales/ko-KR/models.json +39 -24
- package/locales/nl-NL/modelProvider.json +12 -0
- package/locales/nl-NL/models.json +39 -24
- package/locales/pl-PL/modelProvider.json +12 -0
- package/locales/pl-PL/models.json +39 -24
- package/locales/pt-BR/modelProvider.json +12 -0
- package/locales/pt-BR/models.json +39 -24
- package/locales/ru-RU/modelProvider.json +12 -0
- package/locales/ru-RU/models.json +39 -24
- package/locales/tr-TR/modelProvider.json +12 -0
- package/locales/tr-TR/models.json +39 -24
- package/locales/vi-VN/modelProvider.json +12 -0
- package/locales/vi-VN/models.json +39 -24
- package/locales/zh-CN/modelProvider.json +12 -0
- package/locales/zh-CN/models.json +39 -24
- package/locales/zh-TW/modelProvider.json +12 -0
- package/locales/zh-TW/models.json +39 -24
- package/package.json +3 -3
- package/packages/const/src/settings/index.ts +1 -0
- package/packages/database/package.json +7 -5
- package/packages/electron-client-ipc/src/events/index.ts +2 -2
- package/packages/electron-client-ipc/src/events/{localFile.ts → localSystem.ts} +25 -6
- package/packages/electron-client-ipc/src/types/index.ts +1 -1
- package/packages/electron-client-ipc/src/types/{localFile.ts → localSystem.ts} +89 -4
- package/packages/file-loaders/package.json +1 -2
- package/packages/file-loaders/src/loadFile.ts +4 -1
- package/packages/file-loaders/src/loaders/doc/__snapshots__/index.test.ts.snap +46 -0
- package/packages/file-loaders/src/loaders/doc/index.test.ts +38 -0
- package/packages/file-loaders/src/loaders/doc/index.ts +57 -0
- package/packages/file-loaders/src/loaders/docx/index.ts +36 -45
- package/packages/file-loaders/src/loaders/index.ts +2 -0
- package/packages/file-loaders/src/types/word-extractor.d.ts +9 -0
- package/packages/file-loaders/src/types.ts +1 -1
- package/packages/model-runtime/src/core/openaiCompatibleFactory/index.test.ts +267 -38
- package/packages/model-runtime/src/core/openaiCompatibleFactory/index.ts +45 -0
- package/packages/model-runtime/src/providerTestUtils.ts +0 -5
- package/packages/model-runtime/src/providers/anthropic/generateObject.test.ts +57 -44
- package/packages/model-runtime/src/providers/anthropic/generateObject.ts +28 -20
- package/packages/model-runtime/src/providers/deepseek/index.ts +5 -0
- package/packages/model-runtime/src/providers/openai/index.test.ts +0 -5
- package/packages/model-runtime/src/providers/openrouter/index.test.ts +3 -3
- package/packages/model-runtime/src/providers/openrouter/index.ts +32 -20
- package/packages/model-runtime/src/providers/openrouter/type.ts +25 -24
- package/packages/model-runtime/src/providers/zhipu/index.test.ts +0 -1
- package/packages/model-runtime/src/types/structureOutput.ts +13 -1
- package/packages/model-runtime/src/utils/handleOpenAIError.test.ts +0 -5
- package/packages/model-runtime/src/utils/handleOpenAIError.ts +2 -2
- package/packages/types/src/aiChat.ts +13 -1
- package/packages/types/src/index.ts +1 -0
- package/src/features/ChatInput/InputEditor/index.tsx +39 -26
- package/src/features/Conversation/Messages/Assistant/Tool/Render/LoadingPlaceholder/index.tsx +1 -1
- package/src/server/routers/lambda/agent.ts +2 -3
- package/src/server/routers/lambda/aiChat.ts +33 -1
- package/src/server/routers/lambda/chunk.ts +2 -2
- package/src/services/electron/file.ts +1 -2
- package/src/services/electron/localFileService.ts +40 -0
- package/src/tools/local-system/Placeholder/ListFiles.tsx +23 -0
- package/src/tools/local-system/Placeholder/ReadLocalFile.tsx +9 -0
- package/src/tools/local-system/Placeholder/SearchFiles.tsx +55 -0
- package/src/tools/local-system/Placeholder/index.tsx +25 -0
- package/src/tools/placeholders.ts +3 -0
|
@@ -284,11 +284,19 @@
|
|
|
284
284
|
"placeholder": "請輸入模型 id,例如 gpt-4o 或 claude-3.5-sonnet",
|
|
285
285
|
"title": "模型 ID"
|
|
286
286
|
},
|
|
287
|
+
"imageOutput": {
|
|
288
|
+
"extra": "此設定僅會啟用模型生成圖片的能力,具體效果完全取決於模型本身,請自行測試該模型是否具備可用的圖片生成能力",
|
|
289
|
+
"title": "支援圖片生成"
|
|
290
|
+
},
|
|
287
291
|
"modalTitle": "自定義模型配置",
|
|
288
292
|
"reasoning": {
|
|
289
293
|
"extra": "此配置將僅開啟模型深度思考的能力,具體效果完全取決於模型本身,請自行測試該模型是否具備可用的深度思考能力",
|
|
290
294
|
"title": "支持深度思考"
|
|
291
295
|
},
|
|
296
|
+
"search": {
|
|
297
|
+
"extra": "此設定僅會啟用模型內建搜尋引擎的連網搜尋能力,是否支援內建搜尋引擎取決於模型本身,請自行測試該模型的內建搜尋引擎能力可用性",
|
|
298
|
+
"title": "支援連網搜尋"
|
|
299
|
+
},
|
|
292
300
|
"tokens": {
|
|
293
301
|
"extra": "設定模型支持的最大 Token 數",
|
|
294
302
|
"title": "最大上下文窗口",
|
|
@@ -309,6 +317,10 @@
|
|
|
309
317
|
"placeholder": "請選擇模型類型",
|
|
310
318
|
"title": "模型類型"
|
|
311
319
|
},
|
|
320
|
+
"video": {
|
|
321
|
+
"extra": "此設定僅會啟用應用中的影片識別設定,是否支援識別完全取決於模型本身,請自行測試該模型的影片識別能力可用性",
|
|
322
|
+
"title": "支援影片識別"
|
|
323
|
+
},
|
|
312
324
|
"vision": {
|
|
313
325
|
"extra": "此配置將僅開啟應用中的圖片上傳配置,是否支持識別完全取決於模型本身,請自行測試該模型的視覺識別能力可用性",
|
|
314
326
|
"title": "支持視覺識別"
|
|
@@ -704,6 +704,9 @@
|
|
|
704
704
|
"azure-DeepSeek-R1-0528": {
|
|
705
705
|
"description": "由微軟部署提供; DeepSeek R1型號已進行小版本升級,當前版本為DeepSeek-R1-0528。在最新的更新中,DeepSeek R1透過增加計算資源和引入後訓練階段的演算法優化機制,大幅提升了推理深度和推斷能力。該模型在數學、程式設計和通用邏輯等多個基準測試中表現出色,其整體性能已接近領先模型,如O3和Gemini 2.5 Pro 。"
|
|
706
706
|
},
|
|
707
|
+
"baichuan-m2-32b": {
|
|
708
|
+
"description": "Baichuan M2 32B 是百川智能推出的混合專家模型,具備強大的推理能力。"
|
|
709
|
+
},
|
|
707
710
|
"baichuan/baichuan2-13b-chat": {
|
|
708
711
|
"description": "Baichuan-13B百川智能開發的包含130億參數的開源可商用的大規模語言模型,在權威的中文和英文benchmark上均取得同尺寸最好的效果。"
|
|
709
712
|
},
|
|
@@ -728,12 +731,6 @@
|
|
|
728
731
|
"charglm-4": {
|
|
729
732
|
"description": "CharGLM-4 專為角色扮演與情感陪伴設計,支持超長多輪記憶與個性化對話,應用廣泛。"
|
|
730
733
|
},
|
|
731
|
-
"chatglm3": {
|
|
732
|
-
"description": "ChatGLM3 是智譜 AI 與清華 KEG 實驗室發佈的閉源模型,經過海量中英標識符的預訓練與人類偏好對齊訓練,相比一代模型在 MMLU、C-Eval、GSM8K 分別取得了 16%、36%、280% 的提升,並登頂中文任務榜單 C-Eval。適用於對知識量、推理能力、創造力要求較高的場景,比如廣告文案、小說寫作、知識類寫作、代碼生成等。"
|
|
733
|
-
},
|
|
734
|
-
"chatglm3-6b-base": {
|
|
735
|
-
"description": "ChatGLM3-6b-base 是由智譜開發的 ChatGLM 系列最新一代的 60 億參數規模的開源的基礎模型。"
|
|
736
|
-
},
|
|
737
734
|
"chatgpt-4o-latest": {
|
|
738
735
|
"description": "ChatGPT-4o是一款動態模型,實時更新以保持當前最新版本。它結合了強大的語言理解與生成能力,適合於大規模應用場景,包括客戶服務、教育和技術支持。"
|
|
739
736
|
},
|
|
@@ -938,6 +935,9 @@
|
|
|
938
935
|
"deepseek-ai/DeepSeek-V3.1-Terminus": {
|
|
939
936
|
"description": "DeepSeek-V3.1-Terminus 是由深度求索(DeepSeek)發佈的 V3.1 模型的更新版本,定位為混合智能體大語言模型。此次更新在保持模型原有能力的基礎上,專注於修復用戶反饋的問題並提升穩定性。它顯著改善了語言一致性,減少了中英文混用和異常字元的出現。模型整合了「思考模式」(Thinking Mode)和「非思考模式」(Non-thinking Mode),用戶可透過聊天範本靈活切換以適應不同任務。作為一個重要的優化,V3.1-Terminus 強化了程式碼智能體(Code Agent)和搜尋智能體(Search Agent)的效能,使其在工具呼叫和執行多步複雜任務方面更加可靠。"
|
|
940
937
|
},
|
|
938
|
+
"deepseek-ai/DeepSeek-V3.2-Exp": {
|
|
939
|
+
"description": "DeepSeek V3.2 Exp 模型為混合推理架構模型,同時支援思考模式與非思考模式。"
|
|
940
|
+
},
|
|
941
941
|
"deepseek-ai/deepseek-llm-67b-chat": {
|
|
942
942
|
"description": "DeepSeek 67B 是為高複雜性對話訓練的先進模型。"
|
|
943
943
|
},
|
|
@@ -1031,6 +1031,9 @@
|
|
|
1031
1031
|
"deepseek-v3.1": {
|
|
1032
1032
|
"description": "DeepSeek-V3.1 是深度求索全新推出的混合推理模型,支援思考與非思考兩種推理模式,較 DeepSeek-R1-0528 思考效率更高。經過後訓練優化,Agent 工具使用與智能體任務表現大幅提升。支援 128k 上下文視窗,輸出長度支援最大 64k tokens。"
|
|
1033
1033
|
},
|
|
1034
|
+
"deepseek-v3.1-terminus": {
|
|
1035
|
+
"description": "DeepSeek-V3.1-Terminus 是深度求索推出的終端優化版本大型語言模型,專為終端設備優化。"
|
|
1036
|
+
},
|
|
1034
1037
|
"deepseek-v3.1:671b": {
|
|
1035
1038
|
"description": "DeepSeek V3.1:下一代推理模型,提升了複雜推理與鏈路思考能力,適合需要深入分析的任務。"
|
|
1036
1039
|
},
|
|
@@ -1193,6 +1196,12 @@
|
|
|
1193
1196
|
"ernie-4.0-turbo-8k-preview": {
|
|
1194
1197
|
"description": "百度自研的旗艦級超大規模大語言模型,綜合效果表現出色,廣泛適用於各領域複雜任務場景;支持自動對接百度搜索插件,保障問答信息時效。相較於ERNIE 4.0在性能表現上更優秀"
|
|
1195
1198
|
},
|
|
1199
|
+
"ernie-4.5-21b-a3b": {
|
|
1200
|
+
"description": "ERNIE 4.5 21B A3B 是百度文心推出的混合專家模型,具備強大的推理與多語言能力。"
|
|
1201
|
+
},
|
|
1202
|
+
"ernie-4.5-300b-a47b": {
|
|
1203
|
+
"description": "ERNIE 4.5 300B A47B 是百度文心推出的超大規模混合專家模型,具備卓越的推理能力。"
|
|
1204
|
+
},
|
|
1196
1205
|
"ernie-4.5-8k-preview": {
|
|
1197
1206
|
"description": "文心大模型4.5是百度自主研發的新一代原生多模態基礎大模型,通過多個模態聯合建模實現協同優化,多模態理解能力優秀;具備更精進的語言能力,理解、生成、邏輯、記憶能力全面提升,去幻覺、邏輯推理、代碼能力顯著提升。"
|
|
1198
1207
|
},
|
|
@@ -1449,7 +1458,7 @@
|
|
|
1449
1458
|
"description": "GLM-4-0520是最新模型版本,專為高度複雜和多樣化任務設計,表現卓越。"
|
|
1450
1459
|
},
|
|
1451
1460
|
"glm-4-9b-chat": {
|
|
1452
|
-
"description": "GLM-4-9B-Chat
|
|
1461
|
+
"description": "GLM-4-9B-Chat 在語意、數學、推理、程式碼與知識等多方面均展現出高效能。還具備網頁瀏覽、程式碼執行、自訂工具調用與長文本推理能力。支援包括日語、韓語、德語在內的 26 種語言。"
|
|
1453
1462
|
},
|
|
1454
1463
|
"glm-4-air": {
|
|
1455
1464
|
"description": "GLM-4-Air是性價比高的版本,性能接近GLM-4,提供快速度和實惠的價格。"
|
|
@@ -1749,7 +1758,10 @@
|
|
|
1749
1758
|
"description": "成本更低的 GPT Image 1 版本,原生支援文字與圖像輸入,並可產生圖像輸出。"
|
|
1750
1759
|
},
|
|
1751
1760
|
"gpt-oss-120b": {
|
|
1752
|
-
"description": "GPT-OSS-120B
|
|
1761
|
+
"description": "該模型需申請體驗。GPT-OSS-120B 是 OpenAI 推出的開源大規模語言模型,具備強大的文本生成能力。"
|
|
1762
|
+
},
|
|
1763
|
+
"gpt-oss-20b": {
|
|
1764
|
+
"description": "該模型需申請體驗。GPT-OSS-20B 是 OpenAI 推出的開源中型語言模型,具備高效的文本生成能力。"
|
|
1753
1765
|
},
|
|
1754
1766
|
"gpt-oss:120b": {
|
|
1755
1767
|
"description": "GPT-OSS 120B 是 OpenAI 發布的大型開源語言模型,採用 MXFP4 量化技術,為旗艦級模型。需要多 GPU 或高效能工作站環境運行,在複雜推理、程式碼生成和多語言處理方面具備卓越性能,支援高級函數呼叫和工具整合。"
|
|
@@ -1967,6 +1979,9 @@
|
|
|
1967
1979
|
"kimi-k2-0905-preview": {
|
|
1968
1980
|
"description": "kimi-k2-0905-preview 模型上下文長度為 256k,具備更強的 Agentic Coding 能力、更突出的前端程式碼的美觀度和實用性、以及更好的上下文理解能力。"
|
|
1969
1981
|
},
|
|
1982
|
+
"kimi-k2-instruct": {
|
|
1983
|
+
"description": "Kimi K2 Instruct 是月之暗面推出的大型語言模型,具備超長上下文處理能力。"
|
|
1984
|
+
},
|
|
1970
1985
|
"kimi-k2-turbo-preview": {
|
|
1971
1986
|
"description": "kimi-k2 是一款具備超強程式碼與 Agent 能力的 MoE 架構的基礎模型,總參數 1T,激活參數 32B。在通用知識推理、程式設計、數學與 Agent 等主要類別的基準效能測試中,K2 模型的表現超越其他主流開源模型。"
|
|
1972
1987
|
},
|
|
@@ -1988,9 +2003,6 @@
|
|
|
1988
2003
|
"lite": {
|
|
1989
2004
|
"description": "Spark Lite 是一款輕量級大語言模型,具備極低的延遲與高效的處理能力,完全免費開放,支持即時在線搜索功能。其快速響應的特性使其在低算力設備上的推理應用和模型微調中表現出色,為用戶帶來出色的成本效益和智能體驗,尤其在知識問答、內容生成及搜索場景下表現不俗。"
|
|
1990
2005
|
},
|
|
1991
|
-
"llama-2-7b-chat": {
|
|
1992
|
-
"description": "Llama2 是由 Meta 開發並開源的大型語言模型(LLM)系列,這是一組從 70 億到 700 億參數不同規模、經過預訓練和微調的生成式文本模型。架構層面,Llama2 是一個使用優化型轉換器架構的自動回歸語言模型。調整後的版本使用有監督的微調(SFT)和帶有人類反饋的強化學習(RLHF)以對齊人類對有用性和安全性的偏好。Llama2 較 Llama 系列在多種學術數據集上有着更加不俗的表現,為大量其他模型提供了設計和開發的思路。"
|
|
1993
|
-
},
|
|
1994
2006
|
"llama-3.1-70b-versatile": {
|
|
1995
2007
|
"description": "Llama 3.1 70B 提供更強大的 AI 推理能力,適合複雜應用,支持超多的計算處理並保證高效和準確率。"
|
|
1996
2008
|
},
|
|
@@ -2018,9 +2030,6 @@
|
|
|
2018
2030
|
"llama-3.3-70b": {
|
|
2019
2031
|
"description": "Llama 3.3 70B:中大型 Llama 模型,兼顧推理能力與吞吐量。"
|
|
2020
2032
|
},
|
|
2021
|
-
"llama-3.3-70b-instruct": {
|
|
2022
|
-
"description": "Llama 3.3 是 Llama 系列最先進的多語言開源大型語言模型,以極低成本體驗媲美 405B 模型的性能。基於 Transformer 結構,並透過監督微調(SFT)和人類反饋強化學習(RLHF)提升有用性和安全性。其指令調優版本專為多語言對話優化,在多項行業基準上表現優於眾多開源和封閉聊天模型。知識截止日期為 2023 年 12 月"
|
|
2023
|
-
},
|
|
2024
2033
|
"llama-3.3-70b-versatile": {
|
|
2025
2034
|
"description": "Meta Llama 3.3 多語言大語言模型 (LLM) 是 70B(文本輸入/文本輸出)中的預訓練和指令調整生成模型。Llama 3.3 指令調整的純文本模型針對多語言對話用例進行了優化,並且在常見行業基準上優於許多可用的開源和封閉式聊天模型。"
|
|
2026
2035
|
},
|
|
@@ -2082,7 +2091,7 @@
|
|
|
2082
2091
|
"description": "Spark Max 32K 配置了大上下文處理能力,更強的上下文理解和邏輯推理能力,支持32K tokens的文本輸入,適用於長文檔閱讀、私有知識問答等場景。"
|
|
2083
2092
|
},
|
|
2084
2093
|
"megrez-3b-instruct": {
|
|
2085
|
-
"description": "Megrez
|
|
2094
|
+
"description": "Megrez 3B Instruct 是無問芯穹推出的小參數量高效模型。"
|
|
2086
2095
|
},
|
|
2087
2096
|
"meta-llama-3-70b-instruct": {
|
|
2088
2097
|
"description": "一個強大的70億參數模型,在推理、編碼和廣泛的語言應用中表現出色。"
|
|
@@ -2639,6 +2648,12 @@
|
|
|
2639
2648
|
"pro-128k": {
|
|
2640
2649
|
"description": "Spark Pro 128K 配置了特大上下文處理能力,能夠處理多達128K的上下文信息,特別適合需通篇分析和長期邏輯關聯處理的長文內容,可在複雜文本溝通中提供流暢一致的邏輯與多樣的引用支持。"
|
|
2641
2650
|
},
|
|
2651
|
+
"pro-deepseek-r1": {
|
|
2652
|
+
"description": "企業專屬服務專用模型,包含並發服務。"
|
|
2653
|
+
},
|
|
2654
|
+
"pro-deepseek-v3": {
|
|
2655
|
+
"description": "企業專屬服務專用模型,包含並發服務。"
|
|
2656
|
+
},
|
|
2642
2657
|
"qvq-72b-preview": {
|
|
2643
2658
|
"description": "QVQ模型是由 Qwen 團隊開發的實驗性研究模型,專注於提升視覺推理能力,尤其在數學推理領域。"
|
|
2644
2659
|
},
|
|
@@ -2774,12 +2789,6 @@
|
|
|
2774
2789
|
"qwen2": {
|
|
2775
2790
|
"description": "Qwen2 是阿里巴巴的新一代大規模語言模型,以優異的性能支持多元化的應用需求。"
|
|
2776
2791
|
},
|
|
2777
|
-
"qwen2-72b-instruct": {
|
|
2778
|
-
"description": "Qwen2 是 Qwen 團隊推出的新一代大型語言模型系列。它基於 Transformer 架構,並採用 SwiGLU 激活函數、注意力 QKV 偏置(attention QKV bias)、群組查詢注意力(group query attention)、滑動窗口注意力(mixture of sliding window attention)與全注意力的混合等技術。此外,Qwen 團隊還改進了適應多種自然語言和代碼的分詞器。"
|
|
2779
|
-
},
|
|
2780
|
-
"qwen2-7b-instruct": {
|
|
2781
|
-
"description": "Qwen2 是 Qwen 團隊推出的新一代大型語言模型系列。它基於 Transformer 架構,並採用 SwiGLU 激活函數、注意力 QKV 偏置(attention QKV bias)、群組查詢注意力(group query attention)、滑動視窗注意力(mixture of sliding window attention)與全注意力的混合等技術。此外,Qwen 團隊還改進了適應多種自然語言和程式碼的分詞器。"
|
|
2782
|
-
},
|
|
2783
2792
|
"qwen2.5": {
|
|
2784
2793
|
"description": "Qwen2.5 是阿里巴巴的新一代大規模語言模型,以優異的性能支持多元化的應用需求。"
|
|
2785
2794
|
},
|
|
@@ -2918,6 +2927,12 @@
|
|
|
2918
2927
|
"qwen3-next-80b-a3b-thinking": {
|
|
2919
2928
|
"description": "基於 Qwen3 的新一代思考模式開源模型,相較上一版本(通義千問3-235B-A22B-Thinking-2507)指令遵循能力有提升、模型總結回覆更加精簡。"
|
|
2920
2929
|
},
|
|
2930
|
+
"qwen3-vl-235b-a22b-instruct": {
|
|
2931
|
+
"description": "Qwen3 VL 235B A22B Instruct 是通義千問推出的多模態模型,支援視覺理解與推理。"
|
|
2932
|
+
},
|
|
2933
|
+
"qwen3-vl-235b-a22b-thinking": {
|
|
2934
|
+
"description": "Qwen3 VL 235B A22B Thinking 是通義千問推出的多模態推理模型,支援視覺理解與推理。"
|
|
2935
|
+
},
|
|
2921
2936
|
"qwen3-vl-plus": {
|
|
2922
2937
|
"description": "通義千問VL是具有視覺(圖像)理解能力的文本生成模型,不僅能進行OCR(圖片文字識別),還能進一步總結和推理,例如從商品照片中提取屬性,根據習題圖進行解題等。"
|
|
2923
2938
|
},
|
|
@@ -3035,6 +3050,9 @@
|
|
|
3035
3050
|
"step-r1-v-mini": {
|
|
3036
3051
|
"description": "該模型是擁有強大的圖像理解能力的推理大模型,能夠處理圖像和文字信息,經過深度思考後輸出文本生成文本內容。該模型在視覺推理領域表現突出,同時擁有第一梯隊的數學、程式碼、文本推理能力。上下文長度為100k。"
|
|
3037
3052
|
},
|
|
3053
|
+
"step3": {
|
|
3054
|
+
"description": "Step3 是階躍星辰推出的多模態模型,具備強大的視覺理解能力。"
|
|
3055
|
+
},
|
|
3038
3056
|
"stepfun-ai/step3": {
|
|
3039
3057
|
"description": "Step3 是由階躍星辰(StepFun)發布的前沿多模態推理模型,它基於擁有 321B 總參數和 38B 激活參數的專家混合(MoE)架構構建。該模型採用端到端設計,旨在將解碼成本降到最低,同時在視覺-語言推理方面提供頂級效能。透過多矩陣分解注意力(MFA)與注意力與 FFN 解耦(AFD)的協同設計,Step3 在旗艦級與較低階的加速器上仍能維持卓越效率。在預訓練階段,Step3 處理了超過 20T 的文字 token 與 4T 的圖文混合 token,涵蓋十多種語言。該模型在數學、程式碼及多模態等多項基準測試中,均達到開源模型的領先水準。"
|
|
3040
3058
|
},
|
|
@@ -3158,9 +3176,6 @@
|
|
|
3158
3176
|
"xai/grok-4": {
|
|
3159
3177
|
"description": "xAI 最新和最偉大的旗艦模型,在自然語言、數學和推理方面提供無與倫比的性能——完美的全能選手。"
|
|
3160
3178
|
},
|
|
3161
|
-
"yi-1.5-34b-chat": {
|
|
3162
|
-
"description": "Yi-1.5 是 Yi 的升級版本。它使用 500B Tokens 的高品質語料庫在 Yi 上持續進行預訓練,並在 3M 個多樣化的微調樣本上進行微調。"
|
|
3163
|
-
},
|
|
3164
3179
|
"yi-large": {
|
|
3165
3180
|
"description": "全新千億參數模型,提供超強問答及文本生成能力。"
|
|
3166
3181
|
},
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/chat",
|
|
3
|
-
"version": "1.136.
|
|
3
|
+
"version": "1.136.13",
|
|
4
4
|
"description": "Lobe Chat - an open-source, high-performance chatbot framework that supports speech synthesis, multimodal, and extensible Function Call plugin system. Supports one-click free deployment of your private ChatGPT/LLM web application.",
|
|
5
5
|
"keywords": [
|
|
6
6
|
"framework",
|
|
@@ -160,7 +160,7 @@
|
|
|
160
160
|
"@lobehub/charts": "^2.1.2",
|
|
161
161
|
"@lobehub/chat-plugin-sdk": "^1.32.4",
|
|
162
162
|
"@lobehub/chat-plugins-gateway": "^1.9.0",
|
|
163
|
-
"@lobehub/editor": "^1.16.
|
|
163
|
+
"@lobehub/editor": "^1.16.1",
|
|
164
164
|
"@lobehub/icons": "^2.42.0",
|
|
165
165
|
"@lobehub/market-sdk": "^0.22.7",
|
|
166
166
|
"@lobehub/tts": "^2.0.1",
|
|
@@ -372,7 +372,7 @@
|
|
|
372
372
|
"vite": "^7.1.9",
|
|
373
373
|
"vitest": "^3.2.4"
|
|
374
374
|
},
|
|
375
|
-
"packageManager": "pnpm@10.18.
|
|
375
|
+
"packageManager": "pnpm@10.18.2",
|
|
376
376
|
"publishConfig": {
|
|
377
377
|
"access": "public",
|
|
378
378
|
"registry": "https://registry.npmjs.org"
|
|
@@ -13,16 +13,18 @@
|
|
|
13
13
|
"test:server-db": "vitest run --config vitest.config.server.mts"
|
|
14
14
|
},
|
|
15
15
|
"dependencies": {
|
|
16
|
-
"@electric-sql/pglite": "^0.2.17",
|
|
17
16
|
"@lobechat/const": "workspace:*",
|
|
18
17
|
"@lobechat/types": "workspace:*",
|
|
19
18
|
"@lobechat/utils": "workspace:*",
|
|
20
|
-
"dayjs": "^1.11.18",
|
|
21
|
-
"drizzle-orm": "^0.44.5",
|
|
22
|
-
"nanoid": "^5.1.5",
|
|
23
|
-
"pg": "^8.16.3",
|
|
24
19
|
"random-words": "^2.0.1",
|
|
25
20
|
"ts-md5": "^2.0.1",
|
|
26
21
|
"ws": "^8.18.3"
|
|
22
|
+
},
|
|
23
|
+
"peerDependencies": {
|
|
24
|
+
"@electric-sql/pglite": "^0.2.17",
|
|
25
|
+
"dayjs": ">=1.11.18",
|
|
26
|
+
"drizzle-orm": ">=0.44.6",
|
|
27
|
+
"nanoid": ">=5.1.5",
|
|
28
|
+
"pg": ">=8.16.3"
|
|
27
29
|
}
|
|
28
30
|
}
|
|
@@ -1,4 +1,4 @@
|
|
|
1
|
-
import {
|
|
1
|
+
import { LocalSystemDispatchEvents } from './localSystem';
|
|
2
2
|
import { MenuDispatchEvents } from './menu';
|
|
3
3
|
import { NotificationDispatchEvents } from './notification';
|
|
4
4
|
import { ProtocolBroadcastEvents, ProtocolDispatchEvents } from './protocol';
|
|
@@ -19,7 +19,7 @@ export interface ClientDispatchEvents
|
|
|
19
19
|
extends WindowsDispatchEvents,
|
|
20
20
|
SystemDispatchEvents,
|
|
21
21
|
MenuDispatchEvents,
|
|
22
|
-
|
|
22
|
+
LocalSystemDispatchEvents,
|
|
23
23
|
AutoUpdateDispatchEvents,
|
|
24
24
|
ShortcutDispatchEvents,
|
|
25
25
|
RemoteServerDispatchEvents,
|
|
@@ -1,4 +1,14 @@
|
|
|
1
1
|
import {
|
|
2
|
+
EditLocalFileParams,
|
|
3
|
+
EditLocalFileResult,
|
|
4
|
+
GetCommandOutputParams,
|
|
5
|
+
GetCommandOutputResult,
|
|
6
|
+
GlobFilesParams,
|
|
7
|
+
GlobFilesResult,
|
|
8
|
+
GrepContentParams,
|
|
9
|
+
GrepContentResult,
|
|
10
|
+
KillCommandParams,
|
|
11
|
+
KillCommandResult,
|
|
2
12
|
ListLocalFileParams,
|
|
3
13
|
LocalFileItem,
|
|
4
14
|
LocalMoveFilesResultItem,
|
|
@@ -11,20 +21,29 @@ import {
|
|
|
11
21
|
OpenLocalFolderParams,
|
|
12
22
|
RenameLocalFileParams,
|
|
13
23
|
RenameLocalFileResult,
|
|
24
|
+
RunCommandParams,
|
|
25
|
+
RunCommandResult,
|
|
14
26
|
WriteLocalFileParams,
|
|
15
27
|
} from '../types';
|
|
16
28
|
|
|
17
|
-
|
|
18
|
-
|
|
19
|
-
|
|
29
|
+
/* eslint-disable typescript-sort-keys/interface */
|
|
30
|
+
export interface LocalSystemDispatchEvents {
|
|
31
|
+
// File Operations
|
|
32
|
+
editLocalFile: (params: EditLocalFileParams) => EditLocalFileResult;
|
|
20
33
|
moveLocalFiles: (params: MoveLocalFilesParams) => LocalMoveFilesResultItem[];
|
|
21
|
-
|
|
22
34
|
openLocalFile: (params: OpenLocalFileParams) => void;
|
|
23
35
|
openLocalFolder: (params: OpenLocalFolderParams) => void;
|
|
24
36
|
readLocalFile: (params: LocalReadFileParams) => LocalReadFileResult;
|
|
25
37
|
readLocalFiles: (params: LocalReadFilesParams) => LocalReadFileResult[];
|
|
26
|
-
|
|
27
38
|
renameLocalFile: (params: RenameLocalFileParams) => RenameLocalFileResult;
|
|
28
|
-
searchLocalFiles: (params: LocalSearchFilesParams) => LocalFileItem[];
|
|
29
39
|
writeLocalFile: (params: WriteLocalFileParams) => RenameLocalFileResult;
|
|
40
|
+
// Shell Commands
|
|
41
|
+
runCommand: (params: RunCommandParams) => RunCommandResult;
|
|
42
|
+
getCommandOutput: (params: GetCommandOutputParams) => GetCommandOutputResult;
|
|
43
|
+
killCommand: (params: KillCommandParams) => KillCommandResult;
|
|
44
|
+
// Search & Find
|
|
45
|
+
listLocalFiles: (params: ListLocalFileParams) => LocalFileItem[];
|
|
46
|
+
grepContent: (params: GrepContentParams) => GrepContentResult;
|
|
47
|
+
globLocalFiles: (params: GlobFilesParams) => GlobFilesResult;
|
|
48
|
+
searchLocalFiles: (params: LocalSearchFilesParams) => LocalFileItem[];
|
|
30
49
|
}
|
|
@@ -67,10 +67,6 @@ export interface WriteLocalFileParams {
|
|
|
67
67
|
path: string;
|
|
68
68
|
}
|
|
69
69
|
|
|
70
|
-
export interface RunCommandParams {
|
|
71
|
-
command: string;
|
|
72
|
-
}
|
|
73
|
-
|
|
74
70
|
export interface LocalReadFileResult {
|
|
75
71
|
/**
|
|
76
72
|
* Character count of the content within the specified `loc` range.
|
|
@@ -112,3 +108,92 @@ export interface OpenLocalFolderParams {
|
|
|
112
108
|
isDirectory?: boolean;
|
|
113
109
|
path: string;
|
|
114
110
|
}
|
|
111
|
+
|
|
112
|
+
// Shell command types
|
|
113
|
+
export interface RunCommandParams {
|
|
114
|
+
command: string;
|
|
115
|
+
description?: string;
|
|
116
|
+
run_in_background?: boolean;
|
|
117
|
+
timeout?: number;
|
|
118
|
+
}
|
|
119
|
+
|
|
120
|
+
export interface RunCommandResult {
|
|
121
|
+
error?: string;
|
|
122
|
+
exit_code?: number;
|
|
123
|
+
output?: string;
|
|
124
|
+
shell_id?: string;
|
|
125
|
+
stderr?: string;
|
|
126
|
+
stdout?: string;
|
|
127
|
+
success: boolean;
|
|
128
|
+
}
|
|
129
|
+
|
|
130
|
+
export interface GetCommandOutputParams {
|
|
131
|
+
filter?: string;
|
|
132
|
+
shell_id: string;
|
|
133
|
+
}
|
|
134
|
+
|
|
135
|
+
export interface GetCommandOutputResult {
|
|
136
|
+
error?: string;
|
|
137
|
+
output: string;
|
|
138
|
+
running: boolean;
|
|
139
|
+
stderr: string;
|
|
140
|
+
stdout: string;
|
|
141
|
+
success: boolean;
|
|
142
|
+
}
|
|
143
|
+
|
|
144
|
+
export interface KillCommandParams {
|
|
145
|
+
shell_id: string;
|
|
146
|
+
}
|
|
147
|
+
|
|
148
|
+
export interface KillCommandResult {
|
|
149
|
+
error?: string;
|
|
150
|
+
success: boolean;
|
|
151
|
+
}
|
|
152
|
+
|
|
153
|
+
// Grep types
|
|
154
|
+
export interface GrepContentParams {
|
|
155
|
+
'-A'?: number;
|
|
156
|
+
'-B'?: number;
|
|
157
|
+
'-C'?: number;
|
|
158
|
+
'-i'?: boolean;
|
|
159
|
+
'-n'?: boolean;
|
|
160
|
+
'glob'?: string;
|
|
161
|
+
'head_limit'?: number;
|
|
162
|
+
'multiline'?: boolean;
|
|
163
|
+
'output_mode'?: 'content' | 'files_with_matches' | 'count';
|
|
164
|
+
'path'?: string;
|
|
165
|
+
'pattern': string;
|
|
166
|
+
'type'?: string;
|
|
167
|
+
}
|
|
168
|
+
|
|
169
|
+
export interface GrepContentResult {
|
|
170
|
+
matches: string[];
|
|
171
|
+
success: boolean;
|
|
172
|
+
total_matches: number;
|
|
173
|
+
}
|
|
174
|
+
|
|
175
|
+
// Glob types
|
|
176
|
+
export interface GlobFilesParams {
|
|
177
|
+
path?: string;
|
|
178
|
+
pattern: string;
|
|
179
|
+
}
|
|
180
|
+
|
|
181
|
+
export interface GlobFilesResult {
|
|
182
|
+
files: string[];
|
|
183
|
+
success: boolean;
|
|
184
|
+
total_files: number;
|
|
185
|
+
}
|
|
186
|
+
|
|
187
|
+
// Edit types
|
|
188
|
+
export interface EditLocalFileParams {
|
|
189
|
+
file_path: string;
|
|
190
|
+
new_string: string;
|
|
191
|
+
old_string: string;
|
|
192
|
+
replace_all?: boolean;
|
|
193
|
+
}
|
|
194
|
+
|
|
195
|
+
export interface EditLocalFileResult {
|
|
196
|
+
error?: string;
|
|
197
|
+
replacements: number;
|
|
198
|
+
success: boolean;
|
|
199
|
+
}
|
|
@@ -25,14 +25,13 @@
|
|
|
25
25
|
"test:coverage": "vitest --coverage --silent='passed-only'"
|
|
26
26
|
},
|
|
27
27
|
"dependencies": {
|
|
28
|
-
"@langchain/community": "^0.3.41",
|
|
29
|
-
"@langchain/core": "^0.3.45",
|
|
30
28
|
"@napi-rs/canvas": "^0.1.70",
|
|
31
29
|
"@xmldom/xmldom": "^0.9.8",
|
|
32
30
|
"concat-stream": "^2.0.0",
|
|
33
31
|
"mammoth": "^1.8.0",
|
|
34
32
|
"officeparser": "5.1.1",
|
|
35
33
|
"pdfjs-dist": "4.10.38",
|
|
34
|
+
"word-extractor": "^1.0.4",
|
|
36
35
|
"xlsx": "https://cdn.sheetjs.com/xlsx-0.20.3/xlsx-0.20.3.tgz",
|
|
37
36
|
"yauzl": "^3.2.0"
|
|
38
37
|
},
|
|
@@ -37,7 +37,10 @@ const getFileType = (filePath: string): SupportedFileType | undefined => {
|
|
|
37
37
|
log('File type identified as pdf');
|
|
38
38
|
return 'pdf';
|
|
39
39
|
}
|
|
40
|
-
case 'doc':
|
|
40
|
+
case 'doc': {
|
|
41
|
+
log('File type identified as doc');
|
|
42
|
+
return 'doc';
|
|
43
|
+
}
|
|
41
44
|
case 'docx': {
|
|
42
45
|
log('File type identified as docx');
|
|
43
46
|
return 'docx';
|
|
@@ -0,0 +1,46 @@
|
|
|
1
|
+
// Vitest Snapshot v1, https://vitest.dev/guide/snapshot.html
|
|
2
|
+
|
|
3
|
+
exports[`DocLoader > should aggregate content correctly > aggregated_content 1`] = `
|
|
4
|
+
"简单报告
|
|
5
|
+
副标题
|
|
6
|
+
轻点或点按此占位符文本并开始键入即可开始。你可以在 Mac、iPad、iPhone 或 iCloud.com 上查看和编辑此文稿。
|
|
7
|
+
轻松编辑文本、更改字体以及添加精美的图形。使用段落样式来使整篇文稿保持一致的风格。例如,此段落使用"正文"样式。你可以在"格式"控制的"文本"标签页中更改样式。
|
|
8
|
+
若要添加照片、图像画廊、音频片段、视频、图表或任意 700 多种可自定义形状,请在工具栏中轻点或点按其中一个插入按钮,或者将对象拖放到页面中。你可以分层放置对象、调整其大小以及将其放在页面中的任意位置。若要更改对象随文本移动的方式,请选择对象并随后轻点或点按"格式"控制中的"排列"标签页。
|
|
9
|
+
小标题
|
|
10
|
+
Pages 文稿可用于文字处理和页面布局。此"简单报告"模板为文字处理而设置,如此一来,文本便会随着你的键入而从某一页流向下一页,到达页面末尾时会自动创建新的页面。
|
|
11
|
+
在页面布局文稿中,你可以手动重新排列页面并随意调整页面中的文本框、图像和其他对象的位置。若要创建页面布局文稿,请在模板选取器中选取一种页面布局模板。你也可以在 Mac、iPad 或 iPhone 上将此文稿改为页面布局,方法是在"文稿"控制中关闭"文稿正文"。
|
|
12
|
+
"这是一个引用(报告中的关键短语)的例子。轻点或点按此文本添加你自己的内容。"
|
|
13
|
+
|
|
14
|
+
|
|
15
|
+
|
|
16
|
+
|
|
17
|
+
这是第二页的内容
|
|
18
|
+
"
|
|
19
|
+
`;
|
|
20
|
+
|
|
21
|
+
exports[`DocLoader > should load pages correctly from a DOC file 1`] = `
|
|
22
|
+
[
|
|
23
|
+
{
|
|
24
|
+
"charCount": 573,
|
|
25
|
+
"lineCount": 15,
|
|
26
|
+
"metadata": {
|
|
27
|
+
"pageNumber": 1,
|
|
28
|
+
},
|
|
29
|
+
"pageContent": "简单报告
|
|
30
|
+
副标题
|
|
31
|
+
轻点或点按此占位符文本并开始键入即可开始。你可以在 Mac、iPad、iPhone 或 iCloud.com 上查看和编辑此文稿。
|
|
32
|
+
轻松编辑文本、更改字体以及添加精美的图形。使用段落样式来使整篇文稿保持一致的风格。例如,此段落使用"正文"样式。你可以在"格式"控制的"文本"标签页中更改样式。
|
|
33
|
+
若要添加照片、图像画廊、音频片段、视频、图表或任意 700 多种可自定义形状,请在工具栏中轻点或点按其中一个插入按钮,或者将对象拖放到页面中。你可以分层放置对象、调整其大小以及将其放在页面中的任意位置。若要更改对象随文本移动的方式,请选择对象并随后轻点或点按"格式"控制中的"排列"标签页。
|
|
34
|
+
小标题
|
|
35
|
+
Pages 文稿可用于文字处理和页面布局。此"简单报告"模板为文字处理而设置,如此一来,文本便会随着你的键入而从某一页流向下一页,到达页面末尾时会自动创建新的页面。
|
|
36
|
+
在页面布局文稿中,你可以手动重新排列页面并随意调整页面中的文本框、图像和其他对象的位置。若要创建页面布局文稿,请在模板选取器中选取一种页面布局模板。你也可以在 Mac、iPad 或 iPhone 上将此文稿改为页面布局,方法是在"文稿"控制中关闭"文稿正文"。
|
|
37
|
+
"这是一个引用(报告中的关键短语)的例子。轻点或点按此文本添加你自己的内容。"
|
|
38
|
+
|
|
39
|
+
|
|
40
|
+
|
|
41
|
+
|
|
42
|
+
这是第二页的内容
|
|
43
|
+
",
|
|
44
|
+
},
|
|
45
|
+
]
|
|
46
|
+
`;
|
|
@@ -0,0 +1,38 @@
|
|
|
1
|
+
import path from 'node:path';
|
|
2
|
+
import { beforeEach, describe, expect, it } from 'vitest';
|
|
3
|
+
|
|
4
|
+
import type { FileLoaderInterface } from '../../types';
|
|
5
|
+
import { DocLoader } from './index';
|
|
6
|
+
|
|
7
|
+
const fixturePath = (filename: string) => path.join(__dirname, `./fixtures/${filename}`);
|
|
8
|
+
|
|
9
|
+
let loader: FileLoaderInterface;
|
|
10
|
+
|
|
11
|
+
const testFile = fixturePath('test.doc');
|
|
12
|
+
const nonExistentFile = fixturePath('nonexistent.doc');
|
|
13
|
+
|
|
14
|
+
beforeEach(() => {
|
|
15
|
+
loader = new DocLoader();
|
|
16
|
+
});
|
|
17
|
+
|
|
18
|
+
describe('DocLoader', () => {
|
|
19
|
+
it('should load pages correctly from a DOC file', async () => {
|
|
20
|
+
const pages = await loader.loadPages(testFile);
|
|
21
|
+
expect(pages).toHaveLength(1);
|
|
22
|
+
expect(pages).toMatchSnapshot();
|
|
23
|
+
});
|
|
24
|
+
|
|
25
|
+
it('should aggregate content correctly', async () => {
|
|
26
|
+
const pages = await loader.loadPages(testFile);
|
|
27
|
+
const content = await loader.aggregateContent(pages);
|
|
28
|
+
expect(content).toEqual(pages[0].pageContent);
|
|
29
|
+
expect(content).toMatchSnapshot('aggregated_content');
|
|
30
|
+
});
|
|
31
|
+
|
|
32
|
+
it('should handle file read errors in loadPages', async () => {
|
|
33
|
+
const pages = await loader.loadPages(nonExistentFile);
|
|
34
|
+
expect(pages).toHaveLength(1);
|
|
35
|
+
expect(pages[0].pageContent).toBe('');
|
|
36
|
+
expect(pages[0].metadata.error).toContain('Failed to load DOC file');
|
|
37
|
+
});
|
|
38
|
+
});
|
|
@@ -0,0 +1,57 @@
|
|
|
1
|
+
import debug from 'debug';
|
|
2
|
+
import WordExtractor from 'word-extractor';
|
|
3
|
+
|
|
4
|
+
import type { DocumentPage, FileLoaderInterface } from '../../types';
|
|
5
|
+
|
|
6
|
+
const log = debug('file-loaders:doc');
|
|
7
|
+
|
|
8
|
+
/**
|
|
9
|
+
* Loads legacy Word documents (.doc) using word-extractor.
|
|
10
|
+
* Extracts plain text content and basic metadata from DOC files.
|
|
11
|
+
*/
|
|
12
|
+
export class DocLoader implements FileLoaderInterface {
|
|
13
|
+
async loadPages(filePath: string): Promise<DocumentPage[]> {
|
|
14
|
+
log('Loading DOC file:', filePath);
|
|
15
|
+
try {
|
|
16
|
+
const extractor = new WordExtractor();
|
|
17
|
+
const extracted: any = await extractor.extract(filePath);
|
|
18
|
+
|
|
19
|
+
// Prefer getBody() if available; fallback to common fields
|
|
20
|
+
const pageContent: string =
|
|
21
|
+
extracted && typeof extracted.getBody === 'function'
|
|
22
|
+
? extracted.getBody()
|
|
23
|
+
: ((extracted?.text as string) ?? '');
|
|
24
|
+
|
|
25
|
+
const lines = pageContent.split('\n');
|
|
26
|
+
const lineCount = lines.length;
|
|
27
|
+
const charCount = pageContent.length;
|
|
28
|
+
|
|
29
|
+
const page: DocumentPage = {
|
|
30
|
+
charCount,
|
|
31
|
+
lineCount,
|
|
32
|
+
metadata: { pageNumber: 1 },
|
|
33
|
+
pageContent,
|
|
34
|
+
};
|
|
35
|
+
|
|
36
|
+
log('DOC loading completed');
|
|
37
|
+
return [page];
|
|
38
|
+
} catch (e) {
|
|
39
|
+
const error = e as Error;
|
|
40
|
+
log('Error encountered while loading DOC file');
|
|
41
|
+
console.error(`Error loading DOC file ${filePath}: ${error.message}`);
|
|
42
|
+
|
|
43
|
+
const errorPage: DocumentPage = {
|
|
44
|
+
charCount: 0,
|
|
45
|
+
lineCount: 0,
|
|
46
|
+
metadata: { error: `Failed to load DOC file: ${error.message}` },
|
|
47
|
+
pageContent: '',
|
|
48
|
+
};
|
|
49
|
+
return [errorPage];
|
|
50
|
+
}
|
|
51
|
+
}
|
|
52
|
+
|
|
53
|
+
async aggregateContent(pages: DocumentPage[]): Promise<string> {
|
|
54
|
+
log('Aggregating content from', pages.length, 'DOC pages');
|
|
55
|
+
return pages.map((p) => p.pageContent).join('\n\n');
|
|
56
|
+
}
|
|
57
|
+
}
|