@lobehub/chat 0.148.9 → 0.149.0

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.
Files changed (101) hide show
  1. package/.env.example +1 -1
  2. package/CHANGELOG.md +50 -0
  3. package/docs/self-hosting/advanced/sso-providers/github.zh-CN.mdx +1 -3
  4. package/docs/self-hosting/environment-variables/model-provider.mdx +1 -1
  5. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +1 -1
  6. package/docs/self-hosting/examples/ollama.mdx +0 -1
  7. package/docs/self-hosting/examples/ollama.zh-CN.mdx +0 -2
  8. package/locales/ar/chat.json +4 -0
  9. package/locales/ar/error.json +1 -1
  10. package/locales/ar/modelProvider.json +27 -1
  11. package/locales/ar/welcome.json +1 -0
  12. package/locales/bg-BG/chat.json +4 -0
  13. package/locales/bg-BG/error.json +1 -1
  14. package/locales/bg-BG/modelProvider.json +27 -1
  15. package/locales/bg-BG/welcome.json +1 -0
  16. package/locales/de-DE/chat.json +4 -0
  17. package/locales/de-DE/error.json +1 -1
  18. package/locales/de-DE/modelProvider.json +27 -1
  19. package/locales/de-DE/welcome.json +1 -0
  20. package/locales/en-US/chat.json +4 -0
  21. package/locales/en-US/error.json +1 -1
  22. package/locales/en-US/modelProvider.json +27 -1
  23. package/locales/en-US/welcome.json +1 -0
  24. package/locales/es-ES/chat.json +4 -0
  25. package/locales/es-ES/error.json +1 -1
  26. package/locales/es-ES/modelProvider.json +27 -1
  27. package/locales/es-ES/welcome.json +1 -0
  28. package/locales/fr-FR/chat.json +4 -0
  29. package/locales/fr-FR/error.json +1 -1
  30. package/locales/fr-FR/modelProvider.json +27 -1
  31. package/locales/fr-FR/welcome.json +1 -0
  32. package/locales/it-IT/chat.json +4 -0
  33. package/locales/it-IT/error.json +1 -1
  34. package/locales/it-IT/modelProvider.json +26 -1
  35. package/locales/it-IT/welcome.json +1 -0
  36. package/locales/ja-JP/chat.json +4 -0
  37. package/locales/ja-JP/error.json +1 -1
  38. package/locales/ja-JP/modelProvider.json +27 -1
  39. package/locales/ja-JP/welcome.json +1 -0
  40. package/locales/ko-KR/chat.json +4 -0
  41. package/locales/ko-KR/error.json +1 -1
  42. package/locales/ko-KR/modelProvider.json +27 -1
  43. package/locales/ko-KR/welcome.json +1 -0
  44. package/locales/nl-NL/chat.json +4 -0
  45. package/locales/nl-NL/error.json +1 -1
  46. package/locales/nl-NL/modelProvider.json +27 -1
  47. package/locales/nl-NL/welcome.json +1 -0
  48. package/locales/pl-PL/chat.json +4 -0
  49. package/locales/pl-PL/error.json +1 -1
  50. package/locales/pl-PL/modelProvider.json +27 -1
  51. package/locales/pl-PL/welcome.json +1 -0
  52. package/locales/pt-BR/chat.json +4 -0
  53. package/locales/pt-BR/error.json +1 -1
  54. package/locales/pt-BR/modelProvider.json +27 -1
  55. package/locales/pt-BR/welcome.json +1 -0
  56. package/locales/ru-RU/chat.json +4 -0
  57. package/locales/ru-RU/error.json +1 -1
  58. package/locales/ru-RU/modelProvider.json +27 -1
  59. package/locales/ru-RU/welcome.json +1 -0
  60. package/locales/tr-TR/chat.json +4 -0
  61. package/locales/tr-TR/error.json +1 -1
  62. package/locales/tr-TR/modelProvider.json +27 -1
  63. package/locales/tr-TR/welcome.json +1 -0
  64. package/locales/vi-VN/chat.json +4 -0
  65. package/locales/vi-VN/error.json +1 -1
  66. package/locales/vi-VN/modelProvider.json +27 -1
  67. package/locales/vi-VN/welcome.json +1 -0
  68. package/locales/zh-CN/chat.json +5 -1
  69. package/locales/zh-CN/error.json +1 -1
  70. package/locales/zh-CN/modelProvider.json +27 -1
  71. package/locales/zh-CN/welcome.json +1 -0
  72. package/locales/zh-TW/chat.json +4 -0
  73. package/locales/zh-TW/error.json +1 -1
  74. package/locales/zh-TW/modelProvider.json +27 -1
  75. package/locales/zh-TW/welcome.json +1 -0
  76. package/package.json +2 -2
  77. package/src/app/api/chat/agentRuntime.test.ts +2 -2
  78. package/src/app/api/config/route.ts +2 -0
  79. package/src/app/settings/llm/Ollama/index.tsx +3 -6
  80. package/src/app/settings/llm/components/ProviderConfig/index.tsx +15 -14
  81. package/src/config/modelProviders/ollama.ts +38 -38
  82. package/src/const/settings/index.ts +1 -0
  83. package/src/features/Conversation/Error/{InvalidOllamaModel → OllamaBizError/InvalidOllamaModel}/index.tsx +1 -1
  84. package/src/features/Conversation/Error/OllamaBizError/SetupGuide.tsx +128 -0
  85. package/src/features/Conversation/Error/{OllamaBizError.tsx → OllamaBizError/index.tsx} +15 -2
  86. package/src/features/ModelSwitchPanel/index.tsx +0 -6
  87. package/src/libs/agent-runtime/ollama/index.ts +42 -57
  88. package/src/libs/agent-runtime/ollama/stream.ts +31 -0
  89. package/src/libs/agent-runtime/ollama/type.ts +8 -0
  90. package/src/libs/agent-runtime/types/chat.ts +0 -7
  91. package/src/libs/agent-runtime/zeroone/index.test.ts +16 -16
  92. package/src/locales/default/error.ts +2 -1
  93. package/src/locales/default/modelProvider.ts +29 -1
  94. package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +0 -1
  95. package/src/services/__tests__/chat.test.ts +1 -1
  96. package/src/services/ollama.ts +6 -9
  97. package/src/store/global/slices/settings/actions/llm.test.ts +0 -1
  98. package/src/store/global/slices/settings/selectors/modelProvider.test.ts +1 -1
  99. package/src/types/serverConfig.ts +1 -1
  100. package/src/libs/agent-runtime/ollama/index.test.ts +0 -365
  101. /package/src/features/Conversation/Error/{InvalidOllamaModel → OllamaBizError/InvalidOllamaModel}/useDownloadMonitor.ts +0 -0
@@ -48,13 +48,17 @@
48
48
  "sessionGroup": {
49
49
  "config": "Quản lý nhóm",
50
50
  "confirmRemoveGroupAlert": "Bạn sẽ xóa nhóm này, sau khi xóa, trợ lý của nhóm sẽ được di chuyển vào danh sách mặc định, vui lòng xác nhận hành động của bạn",
51
+ "createAgentSuccess": "Tạo trợ lý thành công",
51
52
  "createGroup": "Thêm nhóm mới",
52
53
  "createSuccess": "Tạo thành công",
54
+ "creatingAgent": "Đang tạo trợ lý...",
53
55
  "inputPlaceholder": "Vui lòng nhập tên nhóm...",
54
56
  "moveGroup": "Di chuyển vào nhóm",
55
57
  "newGroup": "Nhóm mới",
56
58
  "rename": "Đổi tên nhóm",
57
59
  "renameSuccess": "Đổi tên thành công",
60
+ "sortSuccess": "Sắp xếp lại thành công",
61
+ "sorting": "Đang cập nhật sắp xếp nhóm...",
58
62
  "tooLong": "Tên nhóm phải có độ dài từ 1-20 ký tự"
59
63
  },
60
64
  "shareModal": {
@@ -58,7 +58,7 @@
58
58
  "MoonshotBizError": "Yêu cầu dịch vụ Mặt Trăng Tối gặp sự cố, vui lòng kiểm tra thông tin dưới đây hoặc thử lại",
59
59
  "NoOpenAIAPIKey": "Khóa API OpenAI trống, vui lòng thêm Khóa API OpenAI tùy chỉnh",
60
60
  "OllamaBizError": "Yêu cầu dịch vụ Ollama gặp lỗi, vui lòng kiểm tra thông tin dưới đây hoặc thử lại",
61
- "OllamaServiceUnavailable": "Dịch vụ Ollama không khả dụng, vui lòng kiểm tra xem đã được khởi động chưa",
61
+ "OllamaServiceUnavailable": "Dịch vụ Ollama không khả dụng, vui lòng kiểm tra xem Ollama hoạt động bình thường không, hoặc xem xét cấu hình chéo đúng của Ollama",
62
62
  "OpenAIBizError": "Yêu cầu dịch vụ OpenAI gặp lỗi, vui lòng xác minh hoặc thử lại dựa trên thông tin dưới đây",
63
63
  "OpenRouterBizError": "Yêu cầu dịch vụ OpenRouter AI gặp lỗi, vui lòng kiểm tra thông tin dưới đây hoặc thử lại",
64
64
  "PerplexityBizError": "Yêu cầu dịch vụ AI Perplexity gặp lỗi, vui lòng kiểm tra thông tin dưới đây hoặc thử lại sau",
@@ -130,9 +130,35 @@
130
130
  },
131
131
  "endpoint": {
132
132
  "desc": "Nhập địa chỉ proxy API của Ollama, có thể để trống nếu không chỉ định cụ thể",
133
- "placeholder": "http://127.0.0.1:11434/v1",
133
+ "placeholder": "http://127.0.0.1:11434",
134
134
  "title": "Địa chỉ proxy API"
135
135
  },
136
+ "setup": {
137
+ "cors": {
138
+ "description": "Do vấn đề về an ninh trình duyệt, bạn cần cấu hình CORS cho Ollama trước khi có thể sử dụng bình thường.",
139
+ "linux": {
140
+ "env": "Trong phần [Service], thêm `Environment`, thêm biến môi trường OLLAMA_ORIGINS:",
141
+ "reboot": "Tải lại systemd và khởi động lại Ollama",
142
+ "systemd": "Gọi systemd để chỉnh sửa dịch vụ ollama:"
143
+ },
144
+ "macos": "Vui lòng mở ứng dụng «Terminal», dán lệnh sau và nhấn Enter để chạy",
145
+ "reboot": "Vui lòng khởi động lại dịch vụ Ollama sau khi hoàn thành",
146
+ "title": "Cấu hình Ollama cho phép truy cập từ xa",
147
+ "windows": "Trên Windows, nhấp vào «Control Panel», vào chỉnh sửa biến môi trường hệ thống. Tạo biến môi trường tên là «OLLAMA_ORIGINS» cho tài khoản người dùng của bạn, giá trị là * , nhấp vào «OK/Áp dụng» để lưu lại"
148
+ },
149
+ "install": {
150
+ "description": "Vui lòng xác nhận rằng bạn đã mở Ollama, nếu chưa tải Ollama, vui lòng truy cập trang web chính thức để tải xuống",
151
+ "docker": "Nếu bạn muốn sử dụng Docker, Ollama cũng cung cấp hình ảnh Docker chính thức, bạn có thể kéo theo lệnh sau:",
152
+ "linux": {
153
+ "command": "Cài đặt bằng lệnh sau:",
154
+ "manual": "Hoặc bạn cũng có thể tham khảo <1>Hướng dẫn cài đặt thủ công trên Linux</1> để tự cài đặt"
155
+ },
156
+ "macos": "<0>Tải xuống phiên bản Ollama cho macOS</0>, giải nén và cài đặt",
157
+ "title": "Cài đặt và mở Ollama ứng dụng trên máy cục bộ",
158
+ "windows": "<0>Tải xuống phiên bản Ollama cho Windows</0>, giải nén và cài đặt",
159
+ "windowsTab": "Windows (Bản xem trước)"
160
+ }
161
+ },
136
162
  "title": "Ollama"
137
163
  },
138
164
  "openai": {
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "button": {
3
3
  "import": "Nhập Cấu Hình",
4
+ "market": "Thăm Thị trường",
4
5
  "start": "Bắt Đầu Ngay"
5
6
  },
6
7
  "header": "Chào Mừng",
@@ -48,13 +48,17 @@
48
48
  "sessionGroup": {
49
49
  "config": "分组管理",
50
50
  "confirmRemoveGroupAlert": "即将删除该分组,删除后该分组的助手将移动到默认列表,请确认你的操作",
51
+ "createAgentSuccess": "助手创建成功",
51
52
  "createGroup": "添加新分组",
52
- "createSuccess": "创建成功",
53
+ "createSuccess": "分组创建成功",
54
+ "creatingAgent": "助手创建中...",
53
55
  "inputPlaceholder": "请输入分组名称...",
54
56
  "moveGroup": "移动到分组",
55
57
  "newGroup": "新分组",
56
58
  "rename": "重命名分组",
57
59
  "renameSuccess": "重命名成功",
60
+ "sortSuccess": "重新排序成功",
61
+ "sorting": "分组排序更新中...",
58
62
  "tooLong": "分组名称长度需在 1-20 之内"
59
63
  },
60
64
  "shareModal": {
@@ -75,7 +75,7 @@
75
75
  "InvalidZeroOneAPIKey": "零一万物 API Key 不正确或为空,请检查零一万物 API Key 后重试",
76
76
  "InvalidOllamaArgs": "Ollama 配置不正确,请检查 Ollama 配置后重试",
77
77
  "OllamaBizError": "请求 Ollama 服务出错,请根据以下信息排查或重试",
78
- "OllamaServiceUnavailable": "未检测到 Ollama 服务,请检查是否正常启动",
78
+ "OllamaServiceUnavailable": "Ollama 服务连接失败,请检查 Ollama 是否运行正常,或是否正确设置 Ollama 的跨域配置",
79
79
  "AgentRuntimeError": "Lobe AI Runtime 执行出错,请根据以下信息排查或重试"
80
80
  },
81
81
  "stt": {
@@ -130,9 +130,35 @@
130
130
  },
131
131
  "endpoint": {
132
132
  "desc": "填入 Ollama 接口代理地址,本地未额外指定可留空",
133
- "placeholder": "http://127.0.0.1:11434/v1",
133
+ "placeholder": "http://127.0.0.1:11434",
134
134
  "title": "接口代理地址"
135
135
  },
136
+ "setup": {
137
+ "cors": {
138
+ "description": "因浏览器安全限制,你需要为 Ollama 进行跨域配置后方可正常使用。",
139
+ "linux": {
140
+ "env": "在 [Service] 部分下添加 `Environment`,添加 OLLAMA_ORIGINS 环境变量:",
141
+ "reboot": "重载 systemd 并重启 Ollama",
142
+ "systemd": "调用 systemd 编辑 ollama 服务:"
143
+ },
144
+ "macos": "请打开「终端」应用程序,并粘贴以下指令,并按回车运行",
145
+ "reboot": "请在执行完成后重启 Ollama 服务",
146
+ "title": "配置 Ollama 允许跨域访问",
147
+ "windows": "在 Windows 上,点击「控制面板」,进入编辑系统环境变量。为您的用户账户新建名为 「OLLAMA_ORIGINS」 的环境变量,值为 * ,点击 「OK/应用」 保存"
148
+ },
149
+ "install": {
150
+ "description": "请确认你已经开启 Ollama ,如果没有下载 Ollama ,请前往官网下载",
151
+ "docker": "如果你更倾向于使用 Docker,Ollama 也提供了官方 Docker 镜像,你可以通过以下命令拉取:",
152
+ "linux": {
153
+ "command": "通过以下命令安装:",
154
+ "manual": "或者,你也可以参考 <1>Linux 手动安装指南</1> 自行安装"
155
+ },
156
+ "macos": "<0>下载 macOS 版 Ollama</0>,解压并安装",
157
+ "title": "在本地安装并开启 Ollama 应用",
158
+ "windows": "<0>下载 Windows 版 Ollama</0>,解压并安装",
159
+ "windowsTab": "Windows (预览版)"
160
+ }
161
+ },
136
162
  "title": "Ollama"
137
163
  },
138
164
  "openai": {
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "button": {
3
3
  "import": "导入配置",
4
+ "market": "逛逛市场",
4
5
  "start": "立即开始"
5
6
  },
6
7
  "header": "欢迎使用",
@@ -48,13 +48,17 @@
48
48
  "sessionGroup": {
49
49
  "config": "分組管理",
50
50
  "confirmRemoveGroupAlert": "即將刪除該分組,刪除後該分組的助手將移動到預設清單,請確認你的操作",
51
+ "createAgentSuccess": "助手建立成功",
51
52
  "createGroup": "新增新分組",
52
53
  "createSuccess": "創建成功",
54
+ "creatingAgent": "助手建立中...",
53
55
  "inputPlaceholder": "請輸入分組名稱...",
54
56
  "moveGroup": "移動到分組",
55
57
  "newGroup": "新分組",
56
58
  "rename": "重新命名分組",
57
59
  "renameSuccess": "重新命名成功",
60
+ "sortSuccess": "重新排序成功",
61
+ "sorting": "分組排序更新中...",
58
62
  "tooLong": "分組名稱長度需在 1-20 之內"
59
63
  },
60
64
  "shareModal": {
@@ -58,7 +58,7 @@
58
58
  "MoonshotBizError": "請求月球背面服務出錯,請根據以下信息排查或重試",
59
59
  "NoOpenAIAPIKey": "OpenAI API 金鑰為空,請添加自訂 OpenAI API 金鑰",
60
60
  "OllamaBizError": "請求 Ollama 服務出錯,請根據以下資訊排查或重試",
61
- "OllamaServiceUnavailable": "未偵測到 Ollama 服務,請檢查是否正常啟動",
61
+ "OllamaServiceUnavailable": "Ollama 服務暫時無法使用,請檢查 Ollama 是否運作正常,或是否正確設定 Ollama 的跨域配置",
62
62
  "OpenAIBizError": "請求 OpenAI 服務出錯。請根據以下資訊進行排查或重試。",
63
63
  "OpenRouterBizError": "請求 OpenRouter AI 服務出錯,請根據以下信息排查或重試",
64
64
  "PerplexityBizError": "請求 Perplexity AI 服務出錯,請根據以下信息排查或重試",
@@ -130,9 +130,35 @@
130
130
  },
131
131
  "endpoint": {
132
132
  "desc": "填入 Ollama 接口代理地址,本地未額外指定可留空",
133
- "placeholder": "http://127.0.0.1:11434/v1",
133
+ "placeholder": "http://127.0.0.1:11434",
134
134
  "title": "接口代理地址"
135
135
  },
136
+ "setup": {
137
+ "cors": {
138
+ "description": "因瀏覽器安全限制,您需要為 Ollama 進行跨域配置後才能正常使用。",
139
+ "linux": {
140
+ "env": "在 [Service] 部分下添加 `Environment`,新增 OLLAMA_ORIGINS 環境變數:",
141
+ "reboot": "重新載入 systemd 並重新啟動 Ollama",
142
+ "systemd": "呼叫 systemd 編輯 ollama 服務:"
143
+ },
144
+ "macos": "請開啟「終端」應用程式,貼上以下指令,然後按 Enter 執行",
145
+ "reboot": "執行完成後請重新啟動 Ollama 服務",
146
+ "title": "配置 Ollama 允許跨域訪問",
147
+ "windows": "在 Windows 上,點擊「控制面板」,進入編輯系統環境變數。為您的使用者帳戶新增名為「OLLAMA_ORIGINS」的環境變數,值為 *,點擊「確定/應用」保存"
148
+ },
149
+ "install": {
150
+ "description": "請確認您已經啟動 Ollama,如果尚未下載 Ollama,請前往官網下載",
151
+ "docker": "如果您更傾向於使用 Docker,Ollama 也提供了官方 Docker 映像,您可以透過以下命令拉取:",
152
+ "linux": {
153
+ "command": "透過以下命令安裝:",
154
+ "manual": "或者,您也可以參考 <1>Linux 手動安裝指南</1> 自行安裝"
155
+ },
156
+ "macos": "<0>下載 macOS 版 Ollama</0>,解壓並安裝",
157
+ "title": "在本地安裝並啟動 Ollama 應用",
158
+ "windows": "<0>下載 Windows 版 Ollama</0>,解壓並安裝",
159
+ "windowsTab": "Windows (預覽版)"
160
+ }
161
+ },
136
162
  "title": "Ollama"
137
163
  },
138
164
  "openai": {
@@ -1,6 +1,7 @@
1
1
  {
2
2
  "button": {
3
3
  "import": "匯入設定檔",
4
+ "market": "逛逛市場",
4
5
  "start": "馬上開始"
5
6
  },
6
7
  "header": "歡迎",
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "0.148.9",
3
+ "version": "0.149.0",
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",
@@ -101,7 +101,7 @@
101
101
  "ai": "3.0.19",
102
102
  "antd": "^5.16.2",
103
103
  "antd-style": "^3.6.2",
104
- "brotli-wasm": "^2.0.1",
104
+ "brotli-wasm": "^3.0.0",
105
105
  "chroma-js": "^2.4.2",
106
106
  "dayjs": "^1.11.10",
107
107
  "debug": "^4.3.4",
@@ -39,7 +39,7 @@ vi.mock('@/config/server', () => ({
39
39
  AWS_SECRET_ACCESS_KEY: 'test-aws-secret',
40
40
  AWS_ACCESS_KEY_ID: 'test-aws-id',
41
41
  AWS_REGION: 'test-aws-region',
42
- OLLAMA_PROXY_URL: 'test-ollama-url',
42
+ OLLAMA_PROXY_URL: 'https://test-ollama-url.local',
43
43
  PERPLEXITY_API_KEY: 'test-perplexity-key',
44
44
  ANTHROPIC_API_KEY: 'test-anthropic-key',
45
45
  MISTRAL_API_KEY: 'test-mistral-key',
@@ -110,7 +110,7 @@ describe('initAgentRuntimeWithUserPayload method', () => {
110
110
  });
111
111
 
112
112
  it('Ollama provider: with endpoint', async () => {
113
- const jwtPayload: JWTPayload = { endpoint: 'user-ollama-url' };
113
+ const jwtPayload: JWTPayload = { endpoint: 'http://user-ollama-url' };
114
114
  const runtime = await initAgentRuntimeWithUserPayload(ModelProvider.Ollama, jwtPayload);
115
115
  expect(runtime).toBeInstanceOf(AgentRuntime);
116
116
  expect(runtime['_runtime']).toBeInstanceOf(LobeOllamaAI);
@@ -37,6 +37,7 @@ export const GET = async () => {
37
37
 
38
38
  ENABLE_OLLAMA,
39
39
  OLLAMA_MODEL_LIST,
40
+ OLLAMA_PROXY_URL,
40
41
 
41
42
  ENABLED_OPENROUTER,
42
43
  OPENROUTER_MODEL_LIST,
@@ -72,6 +73,7 @@ export const GET = async () => {
72
73
  moonshot: { enabled: ENABLED_MOONSHOT },
73
74
  ollama: {
74
75
  enabled: ENABLE_OLLAMA,
76
+ fetchOnClient: !OLLAMA_PROXY_URL,
75
77
  serverModelCards: transformToChatModelCards({
76
78
  defaultChatModels: OllamaProviderCard.chatModels,
77
79
  modelString: OLLAMA_MODEL_LIST,
@@ -1,5 +1,4 @@
1
1
  import { Ollama } from '@lobehub/icons';
2
- import { useTheme } from 'antd-style';
3
2
  import { memo } from 'react';
4
3
  import { useTranslation } from 'react-i18next';
5
4
 
@@ -10,7 +9,6 @@ import Checker from './Checker';
10
9
 
11
10
  const OllamaProvider = memo(() => {
12
11
  const { t } = useTranslation('setting');
13
- const theme = useTheme();
14
12
 
15
13
  return (
16
14
  <ProviderConfig
@@ -20,13 +18,12 @@ const OllamaProvider = memo(() => {
20
18
  label: t('llm.checker.title'),
21
19
  minWidth: undefined,
22
20
  }}
23
- modelList={{ showModelFetcher: true }}
24
21
  provider={ModelProvider.Ollama}
25
22
  showApiKey={false}
23
+ showBrowserRequest
26
24
  showEndpoint
27
- title={
28
- <Ollama.Combine color={theme.isDarkMode ? theme.colorText : theme.colorPrimary} size={24} />
29
- }
25
+ title={<Ollama.Combine size={24} />}
26
+ // modelList={{ showModelFetcher: true }}
30
27
  />
31
28
  );
32
29
  });
@@ -32,6 +32,7 @@ interface ProviderConfigProps {
32
32
  };
33
33
  provider: GlobalLLMProviderKey;
34
34
  showApiKey?: boolean;
35
+ showBrowserRequest?: boolean;
35
36
  showEndpoint?: boolean;
36
37
  title: ReactNode;
37
38
  }
@@ -47,6 +48,7 @@ const ProviderConfig = memo<ProviderConfigProps>(
47
48
  title,
48
49
  checkerItem,
49
50
  modelList,
51
+ showBrowserRequest,
50
52
  }) => {
51
53
  const { t } = useTranslation('setting');
52
54
  const { t: modelT } = useTranslation('modelProvider');
@@ -93,6 +95,19 @@ const ProviderConfig = memo<ProviderConfigProps>(
93
95
  label: modelT(`${provider}.endpoint.title` as any),
94
96
  name: [LLMProviderConfigKey, provider, LLMProviderBaseUrlKey],
95
97
  },
98
+ (showBrowserRequest || (showEndpoint && isProviderEndpointNotEmpty)) && {
99
+ children: (
100
+ <Switch
101
+ onChange={(enabled) => {
102
+ setSettings({ [LLMProviderConfigKey]: { [provider]: { fetchOnClient: enabled } } });
103
+ }}
104
+ value={isFetchOnClient}
105
+ />
106
+ ),
107
+ desc: t('llm.fetchOnClient.desc'),
108
+ label: t('llm.fetchOnClient.title'),
109
+ minWidth: undefined,
110
+ },
96
111
  {
97
112
  children: (
98
113
  <ProviderModelListSelect
@@ -107,20 +122,6 @@ const ProviderConfig = memo<ProviderConfigProps>(
107
122
  label: t('llm.modelList.title'),
108
123
  name: [LLMProviderConfigKey, provider, LLMProviderModelListKey],
109
124
  },
110
- showEndpoint &&
111
- isProviderEndpointNotEmpty && {
112
- children: (
113
- <Switch
114
- onChange={(enabled) => {
115
- setSettings({ [LLMProviderConfigKey]: { [provider]: { fetchOnClient: enabled } } });
116
- }}
117
- value={isFetchOnClient}
118
- />
119
- ),
120
- desc: t('llm.fetchOnClient.desc'),
121
- label: t('llm.fetchOnClient.title'),
122
- minWidth: undefined,
123
- },
124
125
  checkerItem ?? {
125
126
  children: <Checker model={checkModel!} provider={provider} />,
126
127
  desc: t('llm.checker.desc'),
@@ -2,148 +2,148 @@ import { ModelProviderCard } from '@/types/llm';
2
2
 
3
3
  const Ollama: ModelProviderCard = {
4
4
  chatModels: [
5
+ {
6
+ displayName: 'Command R 35B',
7
+ enabled: true,
8
+ id: 'command-r',
9
+ tokens: 128_000,
10
+ },
11
+ {
12
+ displayName: 'Command R+ 104B (Q2_K)',
13
+ id: 'command-r-plus:104b-q2_K',
14
+ tokens: 128_000,
15
+ },
5
16
  {
6
17
  displayName: 'Gemma 7B',
7
18
  enabled: true,
8
- functionCall: false,
9
19
  id: 'gemma',
10
20
  tokens: 4000,
11
- vision: false,
12
21
  },
13
22
  {
14
23
  displayName: 'Gemma 2B',
15
24
  enabled: true,
16
- functionCall: false,
17
25
  id: 'gemma:2b',
18
26
  tokens: 4000,
19
- vision: false,
20
27
  },
21
28
  {
22
29
  displayName: 'Llama2 Chat 13B',
23
- functionCall: false,
24
30
  id: 'llama2:13b',
25
31
  tokens: 4000,
26
- vision: false,
27
32
  },
28
33
  {
29
34
  displayName: 'Llama2 Chat 7B',
30
- enabled: true,
31
- functionCall: false,
32
35
  id: 'llama2',
33
36
  tokens: 4000,
34
- vision: false,
35
37
  },
36
38
  {
37
39
  displayName: 'Llama2 Chat 70B',
38
- functionCall: false,
39
40
  id: 'llama2:70b',
40
41
  tokens: 4000,
41
- vision: false,
42
42
  },
43
43
  {
44
44
  displayName: 'Llama2 CN 13B',
45
- functionCall: false,
46
45
  id: 'llama2-chinese:13b',
47
46
  tokens: 4000,
48
- vision: false,
49
47
  },
50
48
  {
51
49
  displayName: 'Llama2 CN 7B',
52
- functionCall: false,
53
50
  id: 'llama2-chinese',
54
51
  tokens: 4000,
55
- vision: false,
52
+ },
53
+ {
54
+ displayName: 'Llama3 8B',
55
+ enabled: true,
56
+ id: 'llama3',
57
+ tokens: 8000,
58
+ },
59
+ {
60
+ displayName: 'Llama3 70B',
61
+ id: 'llama3:70b',
62
+ tokens: 8000,
63
+ },
64
+ {
65
+ displayName: 'WizardLM 2 7B',
66
+ enabled: true,
67
+ id: 'wizardlm2',
68
+ tokens: 65_536,
69
+ },
70
+ {
71
+ displayName: 'WizardLM 2 8x22B',
72
+ id: 'wizardlm2:8x22b',
73
+ tokens: 65_536,
56
74
  },
57
75
  {
58
76
  displayName: 'Code Llama 7B',
59
- functionCall: false,
60
77
  id: 'codellama',
61
78
  tokens: 16_000,
62
- vision: false,
63
79
  },
64
80
  {
65
81
  displayName: 'Code Llama 34B',
66
- functionCall: false,
67
82
  id: 'codellama:34b',
68
83
  tokens: 16_000,
69
- vision: false,
70
84
  },
71
85
  {
72
86
  displayName: 'Code Llama 70B',
73
- functionCall: false,
74
87
  id: 'codellama:70b',
75
88
  tokens: 16_000,
76
- vision: false,
77
89
  },
78
90
  {
79
91
  displayName: 'Code Llama 7B (Python)',
80
- functionCall: false,
81
92
  id: 'codellama:python',
82
93
  tokens: 16_000,
83
- vision: false,
84
94
  },
85
95
  {
86
96
  displayName: 'Mistral',
87
97
  enabled: true,
88
- functionCall: false,
89
98
  id: 'mistral',
90
99
  tokens: 4800,
91
- vision: false,
92
100
  },
93
101
  {
94
102
  displayName: 'Mixtral 8x7B',
95
103
  enabled: true,
96
- functionCall: false,
97
104
  id: 'mixtral',
98
105
  tokens: 32_000,
99
- vision: false,
106
+ },
107
+ {
108
+ displayName: 'Mixtral 8x22B',
109
+ id: 'mixtral:8x22b',
110
+ tokens: 64_000,
100
111
  },
101
112
  {
102
113
  displayName: 'Qwen Chat 4B',
103
- functionCall: false,
104
114
  id: 'qwen',
105
115
  tokens: 32_768,
106
- vision: false,
107
116
  },
108
117
  {
109
118
  displayName: 'Qwen Chat 7B',
110
119
  enabled: true,
111
- functionCall: false,
112
120
  id: 'qwen:7b',
113
121
  tokens: 32_768,
114
- vision: false,
115
122
  },
116
123
  {
117
124
  displayName: 'Qwen Chat 14B',
118
- functionCall: false,
119
125
  id: 'qwen:14b',
120
126
  tokens: 32_768,
121
- vision: false,
122
127
  },
123
128
  {
124
129
  displayName: 'Qwen Chat 72B',
125
- functionCall: false,
126
130
  id: 'qwen:72b',
127
131
  tokens: 32_768,
128
- vision: false,
129
132
  },
130
133
  {
131
134
  displayName: 'LLaVA 7B',
132
- functionCall: false,
133
135
  id: 'llava',
134
136
  tokens: 4000,
135
137
  vision: true,
136
138
  },
137
139
  {
138
140
  displayName: 'LLaVA 13B',
139
- functionCall: false,
140
141
  id: 'llava:13b',
141
142
  tokens: 4000,
142
143
  vision: true,
143
144
  },
144
145
  {
145
146
  displayName: 'LLaVA 34B',
146
- functionCall: false,
147
147
  id: 'llava:34b',
148
148
  tokens: 4000,
149
149
  vision: true,
@@ -104,6 +104,7 @@ export const DEFAULT_LLM_CONFIG: GlobalLLMConfig = {
104
104
  enabled: false,
105
105
  enabledModels: filterEnabledModels(OllamaProviderCard),
106
106
  endpoint: '',
107
+ fetchOnClient: true,
107
108
  },
108
109
  openai: {
109
110
  apiKey: '',
@@ -9,7 +9,7 @@ import useSWR from 'swr';
9
9
  import { ollamaService } from '@/services/ollama';
10
10
  import { useChatStore } from '@/store/chat';
11
11
 
12
- import { ErrorActionContainer, FormAction } from '../style';
12
+ import { ErrorActionContainer, FormAction } from '../../style';
13
13
  import { formatSize, useDownloadMonitor } from './useDownloadMonitor';
14
14
 
15
15
  interface OllamaModelFormProps {