@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.
- package/.env.example +1 -1
- package/CHANGELOG.md +50 -0
- package/docs/self-hosting/advanced/sso-providers/github.zh-CN.mdx +1 -3
- package/docs/self-hosting/environment-variables/model-provider.mdx +1 -1
- package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +1 -1
- package/docs/self-hosting/examples/ollama.mdx +0 -1
- package/docs/self-hosting/examples/ollama.zh-CN.mdx +0 -2
- package/locales/ar/chat.json +4 -0
- package/locales/ar/error.json +1 -1
- package/locales/ar/modelProvider.json +27 -1
- package/locales/ar/welcome.json +1 -0
- package/locales/bg-BG/chat.json +4 -0
- package/locales/bg-BG/error.json +1 -1
- package/locales/bg-BG/modelProvider.json +27 -1
- package/locales/bg-BG/welcome.json +1 -0
- package/locales/de-DE/chat.json +4 -0
- package/locales/de-DE/error.json +1 -1
- package/locales/de-DE/modelProvider.json +27 -1
- package/locales/de-DE/welcome.json +1 -0
- package/locales/en-US/chat.json +4 -0
- package/locales/en-US/error.json +1 -1
- package/locales/en-US/modelProvider.json +27 -1
- package/locales/en-US/welcome.json +1 -0
- package/locales/es-ES/chat.json +4 -0
- package/locales/es-ES/error.json +1 -1
- package/locales/es-ES/modelProvider.json +27 -1
- package/locales/es-ES/welcome.json +1 -0
- package/locales/fr-FR/chat.json +4 -0
- package/locales/fr-FR/error.json +1 -1
- package/locales/fr-FR/modelProvider.json +27 -1
- package/locales/fr-FR/welcome.json +1 -0
- package/locales/it-IT/chat.json +4 -0
- package/locales/it-IT/error.json +1 -1
- package/locales/it-IT/modelProvider.json +26 -1
- package/locales/it-IT/welcome.json +1 -0
- package/locales/ja-JP/chat.json +4 -0
- package/locales/ja-JP/error.json +1 -1
- package/locales/ja-JP/modelProvider.json +27 -1
- package/locales/ja-JP/welcome.json +1 -0
- package/locales/ko-KR/chat.json +4 -0
- package/locales/ko-KR/error.json +1 -1
- package/locales/ko-KR/modelProvider.json +27 -1
- package/locales/ko-KR/welcome.json +1 -0
- package/locales/nl-NL/chat.json +4 -0
- package/locales/nl-NL/error.json +1 -1
- package/locales/nl-NL/modelProvider.json +27 -1
- package/locales/nl-NL/welcome.json +1 -0
- package/locales/pl-PL/chat.json +4 -0
- package/locales/pl-PL/error.json +1 -1
- package/locales/pl-PL/modelProvider.json +27 -1
- package/locales/pl-PL/welcome.json +1 -0
- package/locales/pt-BR/chat.json +4 -0
- package/locales/pt-BR/error.json +1 -1
- package/locales/pt-BR/modelProvider.json +27 -1
- package/locales/pt-BR/welcome.json +1 -0
- package/locales/ru-RU/chat.json +4 -0
- package/locales/ru-RU/error.json +1 -1
- package/locales/ru-RU/modelProvider.json +27 -1
- package/locales/ru-RU/welcome.json +1 -0
- package/locales/tr-TR/chat.json +4 -0
- package/locales/tr-TR/error.json +1 -1
- package/locales/tr-TR/modelProvider.json +27 -1
- package/locales/tr-TR/welcome.json +1 -0
- package/locales/vi-VN/chat.json +4 -0
- package/locales/vi-VN/error.json +1 -1
- package/locales/vi-VN/modelProvider.json +27 -1
- package/locales/vi-VN/welcome.json +1 -0
- package/locales/zh-CN/chat.json +5 -1
- package/locales/zh-CN/error.json +1 -1
- package/locales/zh-CN/modelProvider.json +27 -1
- package/locales/zh-CN/welcome.json +1 -0
- package/locales/zh-TW/chat.json +4 -0
- package/locales/zh-TW/error.json +1 -1
- package/locales/zh-TW/modelProvider.json +27 -1
- package/locales/zh-TW/welcome.json +1 -0
- package/package.json +2 -2
- package/src/app/api/chat/agentRuntime.test.ts +2 -2
- package/src/app/api/config/route.ts +2 -0
- package/src/app/settings/llm/Ollama/index.tsx +3 -6
- package/src/app/settings/llm/components/ProviderConfig/index.tsx +15 -14
- package/src/config/modelProviders/ollama.ts +38 -38
- package/src/const/settings/index.ts +1 -0
- package/src/features/Conversation/Error/{InvalidOllamaModel → OllamaBizError/InvalidOllamaModel}/index.tsx +1 -1
- package/src/features/Conversation/Error/OllamaBizError/SetupGuide.tsx +128 -0
- package/src/features/Conversation/Error/{OllamaBizError.tsx → OllamaBizError/index.tsx} +15 -2
- package/src/features/ModelSwitchPanel/index.tsx +0 -6
- package/src/libs/agent-runtime/ollama/index.ts +42 -57
- package/src/libs/agent-runtime/ollama/stream.ts +31 -0
- package/src/libs/agent-runtime/ollama/type.ts +8 -0
- package/src/libs/agent-runtime/types/chat.ts +0 -7
- package/src/libs/agent-runtime/zeroone/index.test.ts +16 -16
- package/src/locales/default/error.ts +2 -1
- package/src/locales/default/modelProvider.ts +29 -1
- package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +0 -1
- package/src/services/__tests__/chat.test.ts +1 -1
- package/src/services/ollama.ts +6 -9
- package/src/store/global/slices/settings/actions/llm.test.ts +0 -1
- package/src/store/global/slices/settings/selectors/modelProvider.test.ts +1 -1
- package/src/types/serverConfig.ts +1 -1
- package/src/libs/agent-runtime/ollama/index.test.ts +0 -365
- /package/src/features/Conversation/Error/{InvalidOllamaModel → OllamaBizError/InvalidOllamaModel}/useDownloadMonitor.ts +0 -0
package/locales/vi-VN/chat.json
CHANGED
|
@@ -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": {
|
package/locales/vi-VN/error.json
CHANGED
|
@@ -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
|
|
61
|
+
"OllamaServiceUnavailable": "Dịch vụ Ollama không khả dụng, vui lòng kiểm tra xem Ollama có 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
|
|
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": {
|
package/locales/zh-CN/chat.json
CHANGED
|
@@ -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": {
|
package/locales/zh-CN/error.json
CHANGED
|
@@ -75,7 +75,7 @@
|
|
|
75
75
|
"InvalidZeroOneAPIKey": "零一万物 API Key 不正确或为空,请检查零一万物 API Key 后重试",
|
|
76
76
|
"InvalidOllamaArgs": "Ollama 配置不正确,请检查 Ollama 配置后重试",
|
|
77
77
|
"OllamaBizError": "请求 Ollama 服务出错,请根据以下信息排查或重试",
|
|
78
|
-
"OllamaServiceUnavailable": "
|
|
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
|
|
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": {
|
package/locales/zh-TW/chat.json
CHANGED
|
@@ -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": {
|
package/locales/zh-TW/error.json
CHANGED
|
@@ -58,7 +58,7 @@
|
|
|
58
58
|
"MoonshotBizError": "請求月球背面服務出錯,請根據以下信息排查或重試",
|
|
59
59
|
"NoOpenAIAPIKey": "OpenAI API 金鑰為空,請添加自訂 OpenAI API 金鑰",
|
|
60
60
|
"OllamaBizError": "請求 Ollama 服務出錯,請根據以下資訊排查或重試",
|
|
61
|
-
"OllamaServiceUnavailable": "
|
|
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
|
|
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": {
|
package/package.json
CHANGED
|
@@ -1,6 +1,6 @@
|
|
|
1
1
|
{
|
|
2
2
|
"name": "@lobehub/chat",
|
|
3
|
-
"version": "0.
|
|
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": "^
|
|
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
|
-
|
|
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
|
-
|
|
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
|
-
|
|
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,
|
|
@@ -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 '
|
|
12
|
+
import { ErrorActionContainer, FormAction } from '../../style';
|
|
13
13
|
import { formatSize, useDownloadMonitor } from './useDownloadMonitor';
|
|
14
14
|
|
|
15
15
|
interface OllamaModelFormProps {
|