@lobehub/chat 0.162.16 → 0.162.18

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 (173) hide show
  1. package/.env.example +4 -0
  2. package/CHANGELOG.md +50 -0
  3. package/Dockerfile +3 -0
  4. package/README.md +1 -0
  5. package/README.zh-CN.md +1 -0
  6. package/docs/self-hosting/advanced/settings-url-share.mdx +89 -57
  7. package/docs/self-hosting/advanced/settings-url-share.zh-CN.mdx +87 -56
  8. package/docs/self-hosting/advanced/upstream-sync.mdx +1 -1
  9. package/docs/self-hosting/environment-variables/model-provider.mdx +10 -1
  10. package/docs/self-hosting/environment-variables/model-provider.zh-CN.mdx +9 -0
  11. package/docs/usage/features/multi-ai-providers.mdx +1 -0
  12. package/docs/usage/features/multi-ai-providers.zh-CN.mdx +1 -0
  13. package/locales/ar/error.json +7 -37
  14. package/locales/ar/modelProvider.json +15 -171
  15. package/locales/ar/setting.json +5 -8
  16. package/locales/bg-BG/error.json +6 -36
  17. package/locales/bg-BG/modelProvider.json +15 -171
  18. package/locales/bg-BG/setting.json +5 -8
  19. package/locales/de-DE/error.json +6 -36
  20. package/locales/de-DE/modelProvider.json +15 -171
  21. package/locales/de-DE/setting.json +5 -8
  22. package/locales/en-US/error.json +6 -36
  23. package/locales/en-US/modelProvider.json +15 -171
  24. package/locales/en-US/setting.json +6 -9
  25. package/locales/es-ES/error.json +6 -36
  26. package/locales/es-ES/modelProvider.json +15 -171
  27. package/locales/es-ES/setting.json +5 -8
  28. package/locales/fr-FR/error.json +6 -36
  29. package/locales/fr-FR/modelProvider.json +15 -171
  30. package/locales/fr-FR/setting.json +9 -12
  31. package/locales/it-IT/error.json +6 -36
  32. package/locales/it-IT/modelProvider.json +15 -171
  33. package/locales/it-IT/setting.json +5 -8
  34. package/locales/ja-JP/error.json +6 -36
  35. package/locales/ja-JP/modelProvider.json +15 -171
  36. package/locales/ja-JP/setting.json +5 -8
  37. package/locales/ko-KR/error.json +6 -36
  38. package/locales/ko-KR/modelProvider.json +15 -171
  39. package/locales/ko-KR/setting.json +5 -8
  40. package/locales/nl-NL/error.json +6 -36
  41. package/locales/nl-NL/modelProvider.json +15 -171
  42. package/locales/nl-NL/setting.json +5 -8
  43. package/locales/pl-PL/error.json +6 -36
  44. package/locales/pl-PL/modelProvider.json +15 -171
  45. package/locales/pl-PL/setting.json +6 -9
  46. package/locales/pt-BR/error.json +6 -36
  47. package/locales/pt-BR/modelProvider.json +15 -171
  48. package/locales/pt-BR/setting.json +5 -8
  49. package/locales/ru-RU/error.json +6 -36
  50. package/locales/ru-RU/modelProvider.json +15 -171
  51. package/locales/ru-RU/setting.json +5 -8
  52. package/locales/tr-TR/error.json +6 -36
  53. package/locales/tr-TR/modelProvider.json +15 -171
  54. package/locales/tr-TR/setting.json +5 -8
  55. package/locales/vi-VN/error.json +6 -36
  56. package/locales/vi-VN/modelProvider.json +15 -171
  57. package/locales/vi-VN/setting.json +5 -8
  58. package/locales/zh-CN/error.json +7 -37
  59. package/locales/zh-CN/modelProvider.json +15 -171
  60. package/locales/zh-CN/setting.json +5 -8
  61. package/locales/zh-TW/error.json +7 -37
  62. package/locales/zh-TW/modelProvider.json +15 -171
  63. package/locales/zh-TW/setting.json +5 -8
  64. package/package.json +1 -2
  65. package/src/app/(main)/settings/llm/ProviderList/Azure/index.tsx +107 -0
  66. package/src/app/(main)/settings/llm/ProviderList/Bedrock/index.tsx +68 -0
  67. package/src/app/(main)/settings/llm/ProviderList/Ollama/index.tsx +29 -0
  68. package/src/app/(main)/settings/llm/ProviderList/OpenAI/index.tsx +20 -0
  69. package/src/app/(main)/settings/llm/ProviderList/providers.tsx +141 -0
  70. package/src/app/(main)/settings/llm/components/ProviderConfig/index.tsx +18 -27
  71. package/src/app/(main)/settings/llm/index.tsx +7 -34
  72. package/src/app/(main)/settings/llm/type.ts +5 -0
  73. package/src/app/api/chat/[provider]/route.ts +8 -3
  74. package/src/app/api/chat/agentRuntime.test.ts +17 -0
  75. package/src/app/api/chat/agentRuntime.ts +7 -0
  76. package/src/app/api/errorResponse.test.ts +7 -89
  77. package/src/app/api/errorResponse.ts +6 -43
  78. package/src/app/api/middleware/auth/index.ts +7 -3
  79. package/src/components/ModelProviderIcon/index.tsx +5 -0
  80. package/src/components/ModelSelect/index.tsx +7 -10
  81. package/src/config/llm.ts +6 -0
  82. package/src/config/modelProviders/anthropic.ts +5 -0
  83. package/src/config/modelProviders/azure.ts +2 -0
  84. package/src/config/modelProviders/bedrock.ts +2 -0
  85. package/src/config/modelProviders/deepseek.ts +4 -1
  86. package/src/config/modelProviders/google.ts +5 -0
  87. package/src/config/modelProviders/groq.ts +5 -0
  88. package/src/config/modelProviders/index.ts +4 -0
  89. package/src/config/modelProviders/minimax.ts +2 -0
  90. package/src/config/modelProviders/mistral.ts +2 -0
  91. package/src/config/modelProviders/moonshot.ts +2 -0
  92. package/src/config/modelProviders/ollama.ts +4 -0
  93. package/src/config/modelProviders/openai.ts +3 -0
  94. package/src/config/modelProviders/openrouter.ts +3 -0
  95. package/src/config/modelProviders/perplexity.ts +5 -0
  96. package/src/config/modelProviders/qwen.ts +35 -0
  97. package/src/config/modelProviders/togetherai.ts +3 -0
  98. package/src/config/modelProviders/zeroone.ts +4 -2
  99. package/src/config/modelProviders/zhipu.ts +2 -0
  100. package/src/const/settings/llm.ts +5 -0
  101. package/src/features/Conversation/Error/APIKeyForm/ProviderApiKeyForm.tsx +6 -3
  102. package/src/features/Conversation/Error/APIKeyForm/ProviderAvatar.tsx +5 -0
  103. package/src/features/Conversation/Error/APIKeyForm/index.tsx +4 -0
  104. package/src/features/Conversation/Error/OllamaBizError/InvalidOllamaModel/index.tsx +11 -14
  105. package/src/features/Conversation/Error/index.tsx +29 -19
  106. package/src/features/Conversation/components/ChatItem/index.tsx +4 -13
  107. package/src/features/ModelSelect/index.tsx +1 -1
  108. package/src/features/ModelSwitchPanel/index.tsx +1 -1
  109. package/src/hooks/useProviderName.ts +8 -0
  110. package/src/libs/agent-runtime/AgentRuntime.ts +8 -1
  111. package/src/libs/agent-runtime/anthropic/index.test.ts +8 -5
  112. package/src/libs/agent-runtime/anthropic/index.ts +3 -3
  113. package/src/libs/agent-runtime/azureOpenai/index.test.ts +5 -2
  114. package/src/libs/agent-runtime/azureOpenai/index.ts +2 -2
  115. package/src/libs/agent-runtime/bedrock/index.test.ts +2 -2
  116. package/src/libs/agent-runtime/bedrock/index.ts +2 -2
  117. package/src/libs/agent-runtime/deepseek/index.test.ts +3 -2
  118. package/src/libs/agent-runtime/deepseek/index.ts +0 -5
  119. package/src/libs/agent-runtime/error.ts +11 -43
  120. package/src/libs/agent-runtime/google/index.test.ts +3 -4
  121. package/src/libs/agent-runtime/google/index.ts +4 -4
  122. package/src/libs/agent-runtime/groq/index.test.ts +3 -2
  123. package/src/libs/agent-runtime/groq/index.ts +0 -4
  124. package/src/libs/agent-runtime/index.ts +1 -0
  125. package/src/libs/agent-runtime/minimax/index.test.ts +3 -2
  126. package/src/libs/agent-runtime/minimax/index.ts +5 -5
  127. package/src/libs/agent-runtime/mistral/index.test.ts +2 -2
  128. package/src/libs/agent-runtime/mistral/index.ts +0 -5
  129. package/src/libs/agent-runtime/moonshot/index.test.ts +3 -2
  130. package/src/libs/agent-runtime/moonshot/index.ts +0 -5
  131. package/src/libs/agent-runtime/openrouter/index.test.ts +3 -2
  132. package/src/libs/agent-runtime/openrouter/index.ts +0 -6
  133. package/src/libs/agent-runtime/perplexity/index.test.ts +2 -2
  134. package/src/libs/agent-runtime/perplexity/index.ts +0 -5
  135. package/src/libs/agent-runtime/qwen/index.test.ts +251 -0
  136. package/src/libs/agent-runtime/qwen/index.ts +28 -0
  137. package/src/libs/agent-runtime/togetherai/index.test.ts +3 -2
  138. package/src/libs/agent-runtime/togetherai/index.ts +0 -5
  139. package/src/libs/agent-runtime/types/type.ts +1 -1
  140. package/src/libs/agent-runtime/utils/openaiCompatibleFactory/index.test.ts +123 -6
  141. package/src/libs/agent-runtime/utils/openaiCompatibleFactory/index.ts +12 -6
  142. package/src/libs/agent-runtime/utils/streams/openai.ts +1 -1
  143. package/src/libs/agent-runtime/zeroone/index.test.ts +3 -2
  144. package/src/libs/agent-runtime/zeroone/index.ts +1 -5
  145. package/src/libs/agent-runtime/zhipu/index.test.ts +8 -5
  146. package/src/libs/agent-runtime/zhipu/index.ts +2 -2
  147. package/src/locales/default/error.ts +10 -51
  148. package/src/locales/default/modelProvider.ts +12 -169
  149. package/src/locales/default/setting.ts +5 -8
  150. package/src/server/globalConfig/index.ts +2 -0
  151. package/src/services/__tests__/chat.test.ts +16 -0
  152. package/src/services/chat.ts +3 -0
  153. package/src/services/message/client.test.ts +4 -1
  154. package/src/types/fetch.ts +3 -1
  155. package/src/types/llm.ts +22 -0
  156. package/src/types/user/settings/keyVaults.ts +1 -0
  157. package/src/app/(main)/settings/llm/Anthropic/index.tsx +0 -25
  158. package/src/app/(main)/settings/llm/Azure/index.tsx +0 -110
  159. package/src/app/(main)/settings/llm/Bedrock/index.tsx +0 -74
  160. package/src/app/(main)/settings/llm/DeepSeek/index.tsx +0 -21
  161. package/src/app/(main)/settings/llm/Google/index.tsx +0 -31
  162. package/src/app/(main)/settings/llm/Groq/index.tsx +0 -26
  163. package/src/app/(main)/settings/llm/Minimax/index.tsx +0 -20
  164. package/src/app/(main)/settings/llm/Mistral/index.tsx +0 -20
  165. package/src/app/(main)/settings/llm/Moonshot/index.tsx +0 -28
  166. package/src/app/(main)/settings/llm/Ollama/index.tsx +0 -37
  167. package/src/app/(main)/settings/llm/OpenAI/index.tsx +0 -28
  168. package/src/app/(main)/settings/llm/OpenRouter/index.tsx +0 -21
  169. package/src/app/(main)/settings/llm/Perplexity/index.tsx +0 -23
  170. package/src/app/(main)/settings/llm/TogetherAI/index.tsx +0 -19
  171. package/src/app/(main)/settings/llm/ZeroOne/index.tsx +0 -20
  172. package/src/app/(main)/settings/llm/Zhipu/index.tsx +0 -18
  173. /package/src/app/(main)/settings/llm/{Ollama → ProviderList/Ollama}/Checker.tsx +0 -0
package/.env.example CHANGED
@@ -108,6 +108,10 @@ OPENAI_API_KEY=sk-xxxxxxxxx
108
108
 
109
109
  # DEEPSEEK_API_KEY=xxxxxxxxxxxxxxxxxxxxxxxxxxxxx
110
110
 
111
+ ### Qwen AI ####
112
+
113
+ # QWEN_API_KEY=sk-xxxxxxxxxxxxxxxxxxxxxxxxxxxxxxxx
114
+
111
115
  ########################################
112
116
  ############ Market Service ############
113
117
  ########################################
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 0.162.18](https://github.com/lobehub/lobe-chat/compare/v0.162.17...v0.162.18)
6
+
7
+ <sup>Released on **2024-06-06**</sup>
8
+
9
+ #### ♻ Code Refactoring
10
+
11
+ - **misc**: Refactor model provider implement.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### Code refactoring
19
+
20
+ - **misc**: Refactor model provider implement, closes [#2801](https://github.com/lobehub/lobe-chat/issues/2801) ([7bb4fec](https://github.com/lobehub/lobe-chat/commit/7bb4fec))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
30
+ ### [Version 0.162.17](https://github.com/lobehub/lobe-chat/compare/v0.162.16...v0.162.17)
31
+
32
+ <sup>Released on **2024-06-04**</sup>
33
+
34
+ #### 🐛 Bug Fixes
35
+
36
+ - **misc**: Fix `response.undefined` error with some provider.
37
+
38
+ <br/>
39
+
40
+ <details>
41
+ <summary><kbd>Improvements and Fixes</kbd></summary>
42
+
43
+ #### What's fixed
44
+
45
+ - **misc**: Fix `response.undefined` error with some provider, closes [#2782](https://github.com/lobehub/lobe-chat/issues/2782) ([5676899](https://github.com/lobehub/lobe-chat/commit/5676899))
46
+
47
+ </details>
48
+
49
+ <div align="right">
50
+
51
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
52
+
53
+ </div>
54
+
5
55
  ### [Version 0.162.16](https://github.com/lobehub/lobe-chat/compare/v0.162.15...v0.162.16)
6
56
 
7
57
  <sup>Released on **2024-06-04**</sup>
package/Dockerfile CHANGED
@@ -132,4 +132,7 @@ ENV MINIMAX_API_KEY ""
132
132
  # DeepSeek
133
133
  ENV DEEPSEEK_API_KEY ""
134
134
 
135
+ # Qwen
136
+ ENV QWEN_API_KEY ""
137
+
135
138
  CMD ["node", "server.js"]
package/README.md CHANGED
@@ -131,6 +131,7 @@ We have implemented support for the following model service providers:
131
131
  - **Moonshot AI (Dark Side of the Moon)**: Integrated with the Moonshot series models, an innovative AI startup from China, aiming to provide deeper conversation understanding. [Learn more](https://www.moonshot.cn/)
132
132
  - **Minimax**: Integrated the Minimax models, including the MoE model **abab6**, offers a broader range of choices. [Learn more](https://www.minimaxi.com/)
133
133
  - **DeepSeek**: Integrated with the DeepSeek series models, an innovative AI startup from China, The product has been designed to provide a model that balances performance with price. [Learn more](https://www.deepseek.com/)
134
+ - **Qwen**: Integrated the Qwen series models, including the latest **qwen-turbo**, **qwen-plus** and **qwen-max**. [Lean more](https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction)
134
135
 
135
136
  At the same time, we are also planning to support more model service providers, such as Replicate and Perplexity, to further enrich our service provider library. If you would like LobeChat to support your favorite service provider, feel free to join our [community discussion](https://github.com/lobehub/lobe-chat/discussions/1284).
136
137
 
package/README.zh-CN.md CHANGED
@@ -130,6 +130,7 @@
130
130
  - **OpenRouter**:其支持包括 **Claude 3**,**Gemma**,**Mistral**,**Llama2**和**Cohere**等模型路由,支持智能路由优化,提升使用效率,开放且灵活。[了解更多](https://openrouter.ai/)
131
131
  - **Minimax**: 接入了 Minimax 的 AI 模型,包括 MoE 模型 **abab6**,提供了更多的选择空间。[了解更多](https://www.minimaxi.com/)
132
132
  - **DeepSeek**: 接入了 DeepSeek 的 AI 模型,包括最新的 **DeepSeek-V2**,提供兼顾性能与价格的模型。[了解更多](https://www.deepseek.com/)
133
+ - **Qwen**: 接入了 Qwen 的 AI 模型,包括最新的 **qwen-turbo**,**qwen-plus** 和 **qwen-max** 等模型。[了解更多](https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction)
133
134
 
134
135
  同时,我们也在计划支持更多的模型服务商,如 Replicate 和 Perplexity 等,以进一步丰富我们的服务商库。如果你希望让 LobeChat 支持你喜爱的服务商,欢迎加入我们的[社区讨论](https://github.com/lobehub/lobe-chat/discussions/1284)。
135
136
 
@@ -1,9 +1,10 @@
1
- # Share settings via URL
1
+ # Share settings via URL
2
2
 
3
3
  LobeChat support import settings from external URL to quickly set up LobeChat configuration.
4
4
 
5
5
  The currently supported settings are:
6
6
 
7
+ - `keyVaults`: provider api key and baseURL settings
7
8
  - `languageModel`: Language model settings
8
9
 
9
10
  ## Import from URL
@@ -12,18 +13,18 @@ Use the following URL format to import settings parameters from an external URL:
12
13
 
13
14
  ```plaintext
14
15
  https://lobehub.com/?settings=<settings object in JSON format>
15
- https://lobehub.com/?settings={"languageModel":{"openai":{"apiKey":"user-key","endpoint":"https://lobehub.com/v1"}}}
16
+ https://lobehub.com/?settings={"keyVaults":{"openai":{"apiKey":"user-key","baseURL":"https://your-proxy.com/v1"}}}
16
17
  ```
17
18
 
18
19
  Example of settings in JSON format:
19
20
 
20
21
  ```json
21
22
  {
22
- "languageModel": {
23
- "openai": {
24
- "apiKey": "user-key"
25
- }
23
+ "keyVaults": {
24
+ "openai": {
25
+ "apiKey": "user-key"
26
26
  }
27
+ }
27
28
  }
28
29
  ```
29
30
 
@@ -32,69 +33,100 @@ Example of settings in JSON format:
32
33
  ```ts
33
34
  // Generate settings to export to URL
34
35
  const settings = {
35
- languageModel: {
36
+ keyVaults: {
36
37
  openai: {
37
- apiKey: 'user-key',
38
- endpoint: 'https://lobehub.com/v1'
38
+ apiKey: 'user-key',
39
+ baseURL: 'https://your-proxy.com/v1',
39
40
  },
40
- }};
41
+ },
42
+ };
41
43
  // Convert settings to a JSON formatted string
42
44
  const url = `/?settings=${JSON.stringify(settings)}`;
43
- console.log(url);
44
- // /?settings={"languageModel":{"openai":{"apiKey":"user-key","endpoint":"https://lobehub.com/v1"}}}
45
+ console.log(url);
46
+ // /?settings={"keyVaults":{"openai":{"apiKey":"user-key","baseURL":"https://your-proxy.com/v1"}}}
45
47
  ```
46
48
 
47
49
  <Callout type={'warning'}>
48
- LobeChat does not verify the correctness of the settings parameters in the URL, nor provide encryption or decryption methods. Please use with caution.
50
+ LobeChat does not verify the correctness of the settings parameters in the URL, nor provide
51
+ encryption or decryption methods. Please use with caution.
49
52
  </Callout>
50
53
 
51
54
  ## Parameter schema
52
55
 
53
- ### languageModel
56
+ ### keyVaults
54
57
 
55
58
  - Property name and type
56
59
 
57
- | Property name | Type |
58
- |---------------|--------------------------------|
59
- | anthropic | GeneralModelProviderConfig |
60
- | azure | AzureOpenAIConfig |
61
- | bedrock | AWSBedrockConfig |
62
- | google | GeneralModelProviderConfig |
63
- | groq | GeneralModelProviderConfig |
64
- | minimax | GeneralModelProviderConfig |
65
- | mistral | GeneralModelProviderConfig |
66
- | moonshot | GeneralModelProviderConfig |
67
- | ollama | GeneralModelProviderConfig |
68
- | openai | GeneralModelProviderConfig |
69
- | openrouter | GeneralModelProviderConfig |
70
- | perplexity | GeneralModelProviderConfig |
71
- | togetherai | GeneralModelProviderConfig |
72
- | zeroone | GeneralModelProviderConfig |
73
- | zhipu | GeneralModelProviderConfig |
74
-
75
- - Type `GeneralModelProviderConfig`
76
-
77
- | Property name | Type | Description |
78
- |-----------------------|--------------------------|-----------------------------------------------------------------------------|
79
- | apiKey | string | The API key for the model provider. |
80
- | autoFetchModelLists | boolean | Whether to automatically fetch model lists. |
81
- | enabled | boolean | Whether the model provider is enabled. |
82
- | enabledModels | string[] | null | The IDs of the enabled models. |
83
- | endpoint | string | The endpoint for the model provider. |
84
- | fetchOnClient | boolean | Whether to fetch on the client. |
85
-
86
- - Type `AzureOpenAIConfig`
87
- > Inherits the fields from `GeneralModelProviderConfig`
88
-
89
- | Property name | Type | Description |
90
- |-----------------------|--------------------------|-----------------------------------------------------------------------------|
91
- | apiVersion | string | The API version for Azure OpenAI. |
92
-
93
- - Type `AWSBedrockConfig`
94
- > Inherits all fields from `GeneralModelProviderConfig` except `apiKey, endpoint`
95
-
96
- | Property name | Type | Description |
97
- | accessKeyId | string | The access key ID for AWS Bedrock. |
98
- | region | string | The region for AWS Bedrock. |
99
- | secretAccessKey | string | The secret access key for AWS Bedrock. |
60
+ | Property name | Type |
61
+ | ------------- | ------------------------ |
62
+ | anthropic | `OpenAICompatibleKeyVault` |
63
+ | azure | `AzureOpenAIKeyVault` |
64
+ | bedrock | `AWSBedrockKeyVault` |
65
+ | google | `OpenAICompatibleKeyVault` |
66
+ | groq | `OpenAICompatibleKeyVault` |
67
+ | minimax | `OpenAICompatibleKeyVault` |
68
+ | mistral | `OpenAICompatibleKeyVault` |
69
+ | moonshot | `OpenAICompatibleKeyVault` |
70
+ | ollama | `OpenAICompatibleKeyVault` |
71
+ | openai | `OpenAICompatibleKeyVault` |
72
+ | openrouter | `OpenAICompatibleKeyVault` |
73
+ | perplexity | `OpenAICompatibleKeyVault` |
74
+ | togetherai | `OpenAICompatibleKeyVault` |
75
+ | zeroone | `OpenAICompatibleKeyVault` |
76
+ | zhipu | `OpenAICompatibleKeyVault` |
77
+
78
+ - Type `OpenAICompatibleKeyVault`
79
+
80
+ | Property name | Type | Description |
81
+ | ------------- | ------ | ------------------------------------ |
82
+ | apiKey | string | The API key for the model provider. |
83
+ | baseURL | string | The endpoint for the model provider. |
84
+
85
+ - Type `AzureOpenAIKeyVault`
86
+
87
+ | Property name | Type | Description |
88
+ | ------------- | ------ | ------------------------------------ |
89
+ | apiVersion | string | The API version for Azure OpenAI. |
90
+ | apiKey | string | The API key for the model provider. |
91
+ | endpoint | string | The endpoint for the model provider. |
92
+
93
+ - Type `AWSBedrockKeyVault`
94
+
95
+ | Property name | Type | Description |
96
+ | --------------- | ------ | -------------------------------------- |
97
+ | accessKeyId | string | The access key ID for AWS Bedrock. |
98
+ | region | string | The region for AWS Bedrock. |
99
+ | secretAccessKey | string | The secret access key for AWS Bedrock. |
100
+
101
+ ### languageModel
102
+
103
+ ```ts
104
+ export type UserModelProviderConfig = Record<string, ProviderConfig>;
105
+ ```
100
106
 
107
+ | Property name | Type |
108
+ | ------------- | -------------- |
109
+ | anthropic | `ProviderConfig` |
110
+ | azure | `ProviderConfig` |
111
+ | bedrock | `ProviderConfig` |
112
+ | google | `ProviderConfig` |
113
+ | groq | `ProviderConfig` |
114
+ | minimax | `ProviderConfig` |
115
+ | mistral | `ProviderConfig` |
116
+ | moonshot | `ProviderConfig` |
117
+ | ollama | `ProviderConfig` |
118
+ | openai | `ProviderConfig` |
119
+ | openrouter | `ProviderConfig` |
120
+ | perplexity | `ProviderConfig` |
121
+ | togetherai | `ProviderConfig` |
122
+ | zeroone | `ProviderConfig` |
123
+ | zhipu | `ProviderConfig` |
124
+
125
+ - Type `ProviderConfig`
126
+
127
+ | Property name | Type | Description |
128
+ | ------------------- | -------- | ------------------------------------------- | ------------------------------ |
129
+ | autoFetchModelLists | boolean | Whether to automatically fetch model lists. |
130
+ | enabled | boolean | Whether the model provider is enabled. |
131
+ | enabledModels | string[] | null | The IDs of the enabled models. |
132
+ | fetchOnClient | boolean | Whether to fetch on the client. |
@@ -4,7 +4,8 @@ LobeChat 支持从外部 URL 导入设置参数,以便于快速设置 LobeChat
4
4
 
5
5
  目前支持的设置项有:
6
6
 
7
- - `languageModel`:语言模型设置
7
+ - `keyVaults`: 模型供应商相关秘钥设置
8
+ - `languageModel`:语言模型设置
8
9
 
9
10
  ## 从 URL 中导入
10
11
 
@@ -12,18 +13,18 @@ LobeChat 支持从外部 URL 导入设置参数,以便于快速设置 LobeChat
12
13
 
13
14
  ```plaintext
14
15
  https://lobehub.com/?settings=<JSON格式的设置对象>
15
- https://lobehub.com/?settings={"languageModel":{"openai":{"apiKey":"user-key","endpoint":"https://lobehub.com/v1"}}}
16
+ https://lobehub.com/?settings={"keyVaults":{"openai":{"apiKey":"user-key","baseURL":"https://your-proxy.com/v1"}}}
16
17
  ```
17
18
 
18
19
  JSON格式的设置示例:
19
20
 
20
21
  ```json
21
22
  {
22
- "languageModel": {
23
- "openai": {
24
- "apiKey": "user-key"
25
- }
23
+ "keyVaults": {
24
+ "openai": {
25
+ "apiKey": "user-key"
26
26
  }
27
+ }
27
28
  }
28
29
  ```
29
30
 
@@ -32,69 +33,99 @@ JSON格式的设置示例:
32
33
  ```ts
33
34
  // 生成要导出到 URL 的设置
34
35
  const settings = {
35
- languageModel: {
36
+ keyVaults: {
36
37
  openai: {
37
- apiKey: 'user-key',
38
- endpoint: 'https://lobehub.com/v1'
38
+ apiKey: 'user-key',
39
+ baseURL: 'https://your-proxy.com/v1',
39
40
  },
40
- }};
41
- // 将设置转为 JSON 格式的字符串
41
+ },
42
+ };
43
+ // Convert settings to a JSON formatted string
42
44
  const url = `/?settings=${JSON.stringify(settings)}`;
43
- console.log(url);
44
- // /?settings={"languageModel":{"openai":{"apiKey":"user-key","endpoint":"https://lobehub.com/v1"}}}
45
+ console.log(url);
46
+ // /?settings={"keyVaults":{"openai":{"apiKey":"user-key","baseURL":"https://your-proxy.com/v1"}}}
45
47
  ```
46
48
 
47
49
  <Callout type={'warning'}>
48
- LobeChat 不对 URL 中的设置参数进行正确性校验,也不提供加密、解密方法,请谨慎使用。
50
+ LobeChat 不对 URL 中的设置参数进行正确性校验,也不提供 URL 的加密、解密方法,请谨慎使用。
49
51
  </Callout>
50
52
 
51
53
  ## 参数格式
52
54
 
53
- ### languageModel
55
+ ### keyVaults
54
56
 
55
57
  - 参数及其类型
56
58
 
57
- | 参数名称 | 类型 |
58
- |---------------|--------------------------------|
59
- | anthropic | GeneralModelProviderConfig |
60
- | azure | AzureOpenAIConfig |
61
- | bedrock | AWSBedrockConfig |
62
- | google | GeneralModelProviderConfig |
63
- | groq | GeneralModelProviderConfig |
64
- | minimax | GeneralModelProviderConfig |
65
- | mistral | GeneralModelProviderConfig |
66
- | moonshot | GeneralModelProviderConfig |
67
- | ollama | GeneralModelProviderConfig |
68
- | openai | GeneralModelProviderConfig |
69
- | openrouter | GeneralModelProviderConfig |
70
- | perplexity | GeneralModelProviderConfig |
71
- | togetherai | GeneralModelProviderConfig |
72
- | zeroone | GeneralModelProviderConfig |
73
- | zhipu | GeneralModelProviderConfig |
74
-
75
- - 类型 `GeneralModelProviderConfig`
76
-
77
- | 参数 | TS 类型 | 描述 |
78
- |-----------------------|--------------------------|-----------------------------------------------------------------------------|
79
- | apiKey | string | 模型的 API 密钥。 |
80
- | autoFetchModelLists | boolean | 是否自动获取模型列表。 |
81
- | enabled | boolean | 是否启用该模型。 |
82
- | enabledModels | string[] | 启用的模型的 ID。 |
83
- | endpoint | string | 模型API端点。 |
84
- | fetchOnClient | boolean | 是否在客户端发起请求,默认在服务端发起请求。 |
85
-
86
- - 类型 `AzureOpenAIConfig`
87
- > 继承 `GeneralModelProviderConfig` 中的字段
88
-
89
- | 参数 | TS 类型 | 描述 |
90
- |-----------------------|--------------------------|-----------------------------------------------------------------------------|
59
+ | 参数名称 | 类型 |
60
+ | ---------- | ------------------------ |
61
+ | anthropic | `OpenAICompatibleKeyVault` |
62
+ | azure | `AzureOpenAIKeyVault` |
63
+ | bedrock | `AWSBedrockKeyVault` |
64
+ | google | `OpenAICompatibleKeyVault` |
65
+ | groq | `OpenAICompatibleKeyVault` |
66
+ | minimax | `OpenAICompatibleKeyVault` |
67
+ | mistral | `OpenAICompatibleKeyVault` |
68
+ | moonshot | `OpenAICompatibleKeyVault` |
69
+ | ollama | `OpenAICompatibleKeyVault` |
70
+ | openai | `OpenAICompatibleKeyVault` |
71
+ | openrouter | `OpenAICompatibleKeyVault` |
72
+ | perplexity | `OpenAICompatibleKeyVault` |
73
+ | togetherai | `OpenAICompatibleKeyVault` |
74
+ | zeroone | `OpenAICompatibleKeyVault` |
75
+ | zhipu | `OpenAICompatibleKeyVault` |
76
+
77
+ - Type `OpenAICompatibleKeyVault`
78
+
79
+ | 参数 | 类型 | 描述 |
80
+ | ------- | ------ | ----------------- |
81
+ | apiKey | string | 模型的 API 密钥。 |
82
+ | baseURL | string | 模型API端点。 |
83
+
84
+ - Type `AzureOpenAIKeyVault`
85
+
86
+ | 参数 | 类型 | 描述 |
87
+ | ---------- | ------ | -------------------------- |
91
88
  | apiVersion | string | Azure OpenAI 的 API 版本。 |
89
+ | apiKey | string | 模型的 API 密钥。 |
90
+ | baseURL | string | 模型API端点。 |
91
+
92
+ - Type `AWSBedrockKeyVault`
92
93
 
93
- - 类型 `AWSBedrockConfig`
94
- > 继承 `GeneralModelProviderConfig` 中除 `apiKey, endpoint` 外的所有字段
94
+ | 参数 | 类型 | 描述 |
95
+ | --------------- | ------ | --------------------------- |
96
+ | accessKeyId | string | AWS Bedrock 的访问密钥 ID。 |
97
+ | region | string | AWS Bedrock 的区域。 |
98
+ | secretAccessKey | string | AWS Bedrock 的访问密钥。 |
99
+
100
+ ### languageModel
101
+
102
+ ```ts
103
+ export type UserModelProviderConfig = Record<string, ProviderConfig>;
104
+ ```
95
105
 
96
- | 参数 | TS 类型 | 描述 |
97
- |-----------------------|--------------------------|-----------------------------------------------------------------------------|
98
- | accessKeyId | string | AWS Bedrock 的访问密钥 ID。 |
99
- | region | string | AWS Bedrock 的区域。 |
100
- | secretAccessKey | string | AWS Bedrock 的访问密钥。 |
106
+ | 参数名称 | 类型 |
107
+ | ---------- | -------------- |
108
+ | anthropic | `ProviderConfig` |
109
+ | azure | `ProviderConfig` |
110
+ | bedrock | `ProviderConfig` |
111
+ | google | `ProviderConfig` |
112
+ | groq | `ProviderConfig` |
113
+ | minimax | `ProviderConfig` |
114
+ | mistral | `ProviderConfig` |
115
+ | moonshot | `ProviderConfig` |
116
+ | ollama | `ProviderConfig` |
117
+ | openai | `ProviderConfig` |
118
+ | openrouter | `ProviderConfig` |
119
+ | perplexity | `ProviderConfig` |
120
+ | togetherai | `ProviderConfig` |
121
+ | zeroone | `ProviderConfig` |
122
+ | zhipu | `ProviderConfig` |
123
+
124
+ - 类型 `ProviderConfig`
125
+
126
+ | 参数 | TS 类型 | 描述 |
127
+ | ------------------- | -------- | -------------------------------------------- |
128
+ | autoFetchModelLists | boolean | 是否自动获取模型列表。 |
129
+ | enabled | boolean | 是否启用该模型。 |
130
+ | enabledModels | string[] | 启用的模型的 ID。 |
131
+ | fetchOnClient | boolean | 是否在客户端发起请求,默认在服务端发起请求。 |
@@ -158,4 +158,4 @@ The following command configures Crontab to execute scripts every 5 minutes, or
158
158
  */5 * * * * /path/to/auto-update-lobe-chat.sh >> /path/to/auto-update-lobe-chat.log 2>&1
159
159
  ```
160
160
 
161
- </Steps>
161
+ </Steps>
@@ -285,6 +285,15 @@ If you need to use Azure OpenAI to provide model services, you can refer to the
285
285
  - Type: Required
286
286
  - Description: This is the API key you applied for in the 01.AI service
287
287
  - Default: -
288
- - 示例:`xxxxxx...xxxxxx`
288
+ - Example:`xxxxxx...xxxxxx`
289
+
290
+ ## Qwen
291
+
292
+ ### `QWEN_API_KEY`
293
+
294
+ - Type: Required
295
+ - Description: This is the DashScope API key you can obtain from Alibaba Cloud
296
+ - Default: -
297
+ - Example:`sk-xxxxx...xxxxx`
289
298
 
290
299
  [model-list]: /docs/self-hosting/advanced/model-list
@@ -286,3 +286,12 @@ LobeChat 在部署时提供了丰富的模型服务商相关的环境变量,
286
286
  - 示例:`xxxxxx...xxxxxx`
287
287
 
288
288
  [model-list]: /docs/self-hosting/advanced/model-list
289
+
290
+ ## 通义千问
291
+
292
+ ### `QWEN_API_KEY`
293
+
294
+ - 类型:必选
295
+ - 描述:这是你在阿里云百炼平台上获取的 DashScope API 密钥
296
+ - 默认值:-
297
+ - 示例:`sk-xxxxx...xxxxx`
@@ -46,6 +46,7 @@ We have implemented support for the following model service providers:
46
46
  - **Together.ai**: Over 100 leading open-source Chat, Language, Image, Code, and Embedding models are available through the Together Inference API. For these models you pay just for what you use. [Learn more](https://www.together.ai/)
47
47
  - **Minimax**: Integrated the Minimax models, including the MoE model **abab6**, offers a broader range of choices. [Learn more](https://www.minimaxi.com/)
48
48
  - **DeepSeek**: Integrated with the DeepSeek series models, an innovative AI startup from China, The product has been designed to provide a model that balances performance with price. [Learn more](https://www.deepseek.com/)
49
+ - **Qwen**: Integrated with the Qwen series models, including the latest **qwen-turbo**, **qwen-plus** and **qwen-max**. [Learn more](https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction)
49
50
 
50
51
  At the same time, we are also planning to support more model service providers, such as Replicate and Perplexity, to further enrich our service provider library. If you would like LobeChat to support your favorite service provider, feel free to join our [community discussion](https://github.com/lobehub/lobe-chat/discussions/1284).
51
52
 
@@ -46,6 +46,7 @@ tags:
46
46
  - **OpenRouter**:其支持包括 **Claude 3**,**Gemma**,**Mistral**,**Llama2**和**Cohere**等模型路由,支持智能路由优化,提升使用效率,开放且灵活。[了解更多](https://openrouter.ai/)
47
47
  - **Minimax**: 接入了 Minimax 的 AI 模型,包括 MoE 模型 **abab6**,提供了更多的选择空间。[了解更多](https://www.minimaxi.com/)
48
48
  - **DeepSeek**: 接入了 DeepSeek 的 AI 模型,包括最新的 **DeepSeek-V2**,提供兼顾性能与价格的模型。[了解更多](https://www.deepseek.com/)
49
+ - **Qwen (通义千问)**: 接入了 Qwen 的 AI 模型,包括最新的 **qwen-turbo**,**qwen-plus** 和 **qwen-max** 等模型。[了解更多](https://help.aliyun.com/zh/dashscope/developer-reference/model-introduction)
49
50
 
50
51
  同时,我们也在计划支持更多的模型服务商,如 Replicate 和 Perplexity 等,以进一步丰富我们的服务商库。如果你希望让 LobeChat 支持你喜爱的服务商,欢迎加入我们的[社区讨论](https://github.com/lobehub/lobe-chat/discussions/1284)。
51
52
 
@@ -54,39 +54,15 @@
54
54
  "503": "عذرًا، الخادم غير قادر حاليًا على معالجة طلبك، قد يكون بسبب الحمل الزائد أو الصيانة الجارية، يرجى المحاولة مرة أخرى لاحقًا",
55
55
  "504": "عذرًا، الخادم لم ينتظر ردًا من الخادم الأصلي، يرجى المحاولة مرة أخرى لاحقًا",
56
56
  "AgentRuntimeError": "حدث خطأ في تشغيل نموذج Lobe اللغوي، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
57
- "AnthropicBizError": "خطأ في طلب خدمة Anthropic AI، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
58
- "AzureBizError": "حدث خطأ في طلب خدمة Azure AI، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
59
- "BedrockBizError": "حدث خطأ في طلب خدمة Bedrock، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
60
- "DeepSeekBizError": "خطأ في طلب خدمة DeepSeek، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
61
- "GoogleBizError": "حدث خطأ في طلب خدمة Google، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
62
- "GroqBizError": "حدث خطأ في خدمة Groq ، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
63
57
  "InvalidAccessCode": "كلمة المرور غير صحيحة أو فارغة، يرجى إدخال كلمة مرور الوصول الصحيحة أو إضافة مفتاح API مخصص",
64
- "InvalidAnthropicAPIKey": "مفتاح Anthropic API غير صحيح أو فارغ، يرجى التحقق من مفتاح Anthropic API وإعادة المحاولة",
65
- "InvalidAzureAPIKey": "مفتاح Azure API غير صحيح أو فارغ، يرجى التحقق من مفتاح Azure API وإعادة المحاولة",
66
58
  "InvalidBedrockCredentials": "فشلت مصادقة Bedrock، يرجى التحقق من AccessKeyId/SecretAccessKey وإعادة المحاولة",
67
59
  "InvalidClerkUser": "عذرًا، لم تقم بتسجيل الدخول بعد، يرجى تسجيل الدخول أو التسجيل للمتابعة",
68
- "InvalidDeepSeekAPIKey": "مفتاح DeepSeek API غير صحيح أو فارغ، يرجى التحقق من مفتاح DeepSeek API وإعادة المحاولة",
69
- "InvalidGoogleAPIKey": "مفتاح Google API غير صحيح أو فارغ، يرجى التحقق من مفتاح Google API وإعادة المحاولة",
70
- "InvalidGroqAPIKey": "مفتاح Groq API غير صحيح أو فارغ، يرجى التحقق من مفتاح Groq API وإعادة المحاولة",
71
- "InvalidMinimaxAPIKey": "مفتاح Minimax API غير صحيح أو فارغ، يرجى التحقق من مفتاح Minimax API وإعادة المحاولة",
72
- "InvalidMistralAPIKey": "مفتاح Mistral AI API غير صحيح أو فارغ، يرجى التحقق من مفتاح Mistral API وإعادة المحاولة",
73
- "InvalidMoonshotAPIKey": "مفتاح API لـ Moonshot AI غير صحيح أو فارغ، يرجى التحقق من مفتاح API لـ Moonshot وإعادة المحاولة",
74
60
  "InvalidOllamaArgs": "تكوين Ollama غير صحيح، يرجى التحقق من تكوين Ollama وإعادة المحاولة",
75
- "InvalidOpenRouterAPIKey": "مفتاح OpenRouter API غير صحيح أو فارغ، يرجى التحقق من مفتاح OpenRouter API وإعادة المحاولة",
76
- "InvalidPerplexityAPIKey": "مفتاح Perplexity API غير صحيح أو فارغ، يرجى التحقق من مفتاح Perplexity API وإعادة المحاولة",
77
- "InvalidTogetherAIAPIKey": "مفتاح TogetherAI API غير صحيح أو فارغ، يرجى التحقق من مفتاح TogetherAI API وإعادة المحاولة",
78
- "InvalidZeroOneAPIKey": "مفتاح ZeroOne API غير صحيح أو فارغ، يرجى التحقق من مفتاح ZeroOne API وإعادة المحاولة",
79
- "InvalidZhipuAPIKey": "مفتاح Zhipu API غير صحيح أو فارغ، يرجى التحقق من مفتاح Zhipu API وإعادة المحاولة",
61
+ "InvalidProviderAPIKey": "{{provider}} مفتاح API غير صحيح أو فارغ، يرجى التحقق من مفتاح API {{provider}} الخاص بك وحاول مرة أخرى",
80
62
  "LocationNotSupportError": "عذرًا، لا يدعم موقعك الحالي خدمة هذا النموذج، قد يكون ذلك بسبب قيود المنطقة أو عدم توفر الخدمة. يرجى التحقق مما إذا كان الموقع الحالي يدعم استخدام هذه الخدمة، أو محاولة استخدام معلومات الموقع الأخرى.",
81
- "MinimaxBizError": "حدث خطأ في طلب خدمة Minimax، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
82
- "MistralBizError": "طلب خدمة Mistral AI خاطئ، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
83
- "MoonshotBizError": "حدث خطأ في خدمة جانب القمر، يرجى التحقق من المعلومات أدناه أو إعادة المحاولة",
84
63
  "NoOpenAIAPIKey": "مفتاح API الخاص بـ OpenAI فارغ، يرجى إضافة مفتاح API الخاص بـ OpenAI",
85
64
  "OllamaBizError": "خطأ في طلب خدمة Ollama، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
86
65
  "OllamaServiceUnavailable": "خدمة Ollama غير متوفرة، يرجى التحقق من تشغيل Ollama بشكل صحيح أو إعدادات الـ Ollama للاتصال عبر النطاقات",
87
- "OpenAIBizError": "حدث خطأ في طلب خدمة OpenAI، يرجى التحقق من المعلومات أدناه وإعادة المحاولة",
88
- "OpenRouterBizError": "خطأ في طلب خدمة OpenRouter AI، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
89
- "PerplexityBizError": "خطأ في طلب خدمة Perplexity AI، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
90
66
  "PluginApiNotFound": "عذرًا، لا يوجد API للإضافة في وصف الإضافة، يرجى التحقق من تطابق طريقة الطلب الخاصة بك مع API الوصف",
91
67
  "PluginApiParamsError": "عذرًا، فشلت التحقق من صحة معلمات الطلب للإضافة، يرجى التحقق من تطابق المعلمات مع معلومات الوصف",
92
68
  "PluginGatewayError": "عذرًا، حدث خطأ في بوابة الإضافة، يرجى التحقق من تكوين بوابة الإضافة",
@@ -99,9 +75,7 @@
99
75
  "PluginOpenApiInitError": "عذرًا، فشل تهيئة عميل OpenAPI، يرجى التحقق من معلومات تكوين OpenAPI",
100
76
  "PluginServerError": "خطأ في استجابة الخادم لطلب الإضافة، يرجى التحقق من ملف وصف الإضافة وتكوين الإضافة وتنفيذ الخادم وفقًا لمعلومات الخطأ أدناه",
101
77
  "PluginSettingsInvalid": "تحتاج هذه الإضافة إلى تكوين صحيح قبل الاستخدام، يرجى التحقق من صحة تكوينك",
102
- "TogetherAIBizError": "خطأ في طلب خدمة TogetherAI AI، يرجى التحقق من المعلومات التالية أو إعادة المحاولة",
103
- "ZeroOneBizError": "طلب خدمة ZeroOneBiz خطأ، يرجى التحقق من المعلومات أدناه أو إعادة المحاولة",
104
- "ZhipuBizError": "حدث خطأ في طلب خدمة Zhipu، يرجى التحقق من المعلومات التالية أو إعادة المحاولة"
78
+ "ProviderBizAPIKey": "حدث خطأ في طلب خدمة {{provider}}، يرجى التحقق من المعلومات التالية أو المحاولة مرة أخرى"
105
79
  },
106
80
  "stt": {
107
81
  "responseError": "فشل طلب الخدمة، يرجى التحقق من الإعدادات أو إعادة المحاولة"
@@ -111,6 +85,10 @@
111
85
  },
112
86
  "unlock": {
113
87
  "addProxyUrl": "إضافة عنوان وكيل OpenAI (اختياري)",
88
+ "apiKey": {
89
+ "description": "يمكنك بدء الجلسة عن طريق إدخال مفتاح API {{name}} الخاص بك",
90
+ "title": "استخدام مفتاح API {{name}} المخصص"
91
+ },
114
92
  "closeMessage": "إغلاق الرسالة",
115
93
  "confirm": "تأكيد وإعادة المحاولة",
116
94
  "oauth": {
@@ -119,14 +97,6 @@
119
97
  "title": "تسجيل الدخول إلى الحساب",
120
98
  "welcome": "مرحبا بك!"
121
99
  },
122
- "ollama": {
123
- "cancel": "إلغاء",
124
- "confirm": "تأكيد",
125
- "description": "أدخل علامة نموذج Ollama الخاصة بك لاستكمال الجلسة",
126
- "downloaded": "{{completed}} / {{total}}",
127
- "starting": "بدء التحميل...",
128
- "title": "تحميل نموذج Ollama المحدد"
129
- },
130
100
  "password": {
131
101
  "description": "قام المسؤول بتشفير التطبيق، قم بإدخال كلمة مرور التطبيق لفتح التطبيق. يتعين إدخال كلمة المرور مرة واحدة فقط",
132
102
  "placeholder": "الرجاء إدخال كلمة المرور",
@@ -141,4 +111,4 @@
141
111
  "desc": "التفاصيل: {{detail}}",
142
112
  "title": "فشل تحميل الملف، يرجى التحقق من الاتصال بالشبكة أو المحاولة لاحقًا"
143
113
  }
144
- }
114
+ }