@lobehub/chat 0.128.10 → 0.129.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 (75) hide show
  1. package/CHANGELOG.md +25 -0
  2. package/locales/ar/common.json +2 -1
  3. package/locales/ar/error.json +6 -0
  4. package/locales/ar/setting.json +9 -1
  5. package/locales/de-DE/common.json +1 -0
  6. package/locales/de-DE/error.json +6 -0
  7. package/locales/de-DE/setting.json +9 -1
  8. package/locales/en-US/common.json +1 -0
  9. package/locales/en-US/error.json +6 -0
  10. package/locales/en-US/setting.json +8 -0
  11. package/locales/es-ES/common.json +1 -0
  12. package/locales/es-ES/error.json +6 -0
  13. package/locales/es-ES/setting.json +9 -1
  14. package/locales/fr-FR/common.json +1 -0
  15. package/locales/fr-FR/error.json +6 -0
  16. package/locales/fr-FR/setting.json +8 -0
  17. package/locales/it-IT/common.json +1 -0
  18. package/locales/it-IT/error.json +6 -0
  19. package/locales/it-IT/setting.json +8 -0
  20. package/locales/ja-JP/common.json +1 -0
  21. package/locales/ja-JP/error.json +6 -0
  22. package/locales/ja-JP/setting.json +8 -0
  23. package/locales/ko-KR/common.json +1 -0
  24. package/locales/ko-KR/error.json +6 -0
  25. package/locales/ko-KR/setting.json +8 -0
  26. package/locales/nl-NL/common.json +2 -1
  27. package/locales/nl-NL/error.json +6 -0
  28. package/locales/nl-NL/setting.json +8 -0
  29. package/locales/pl-PL/common.json +2 -1
  30. package/locales/pl-PL/error.json +6 -0
  31. package/locales/pl-PL/setting.json +8 -0
  32. package/locales/pt-BR/common.json +1 -0
  33. package/locales/pt-BR/error.json +6 -0
  34. package/locales/pt-BR/setting.json +9 -1
  35. package/locales/ru-RU/common.json +1 -0
  36. package/locales/ru-RU/error.json +6 -0
  37. package/locales/ru-RU/setting.json +9 -1
  38. package/locales/tr-TR/common.json +1 -0
  39. package/locales/tr-TR/error.json +6 -0
  40. package/locales/tr-TR/setting.json +9 -1
  41. package/locales/vi-VN/common.json +1 -0
  42. package/locales/vi-VN/error.json +6 -0
  43. package/locales/vi-VN/setting.json +9 -1
  44. package/locales/zh-CN/common.json +1 -0
  45. package/locales/zh-CN/error.json +6 -0
  46. package/locales/zh-CN/setting.json +8 -0
  47. package/locales/zh-TW/common.json +1 -0
  48. package/locales/zh-TW/error.json +6 -0
  49. package/locales/zh-TW/setting.json +8 -0
  50. package/package.json +1 -1
  51. package/src/app/api/chat/[provider]/agentRuntime.ts +13 -0
  52. package/src/app/api/config/route.ts +2 -0
  53. package/src/app/api/errorResponse.ts +3 -0
  54. package/src/app/settings/llm/Perplexity/index.tsx +52 -0
  55. package/src/app/settings/llm/index.tsx +2 -0
  56. package/src/components/ModelIcon/index.tsx +3 -1
  57. package/src/components/ModelProviderIcon/index.tsx +19 -1
  58. package/src/components/ModelTag/ModelIcon.tsx +3 -1
  59. package/src/config/modelProviders/index.ts +3 -0
  60. package/src/config/modelProviders/perplexity.ts +44 -0
  61. package/src/config/server/provider.ts +8 -0
  62. package/src/const/settings.ts +4 -0
  63. package/src/features/Conversation/Error/APIKeyForm/Perplexity.tsx +60 -0
  64. package/src/features/Conversation/Error/APIKeyForm/index.tsx +5 -0
  65. package/src/features/Conversation/Error/index.tsx +1 -0
  66. package/src/libs/agent-runtime/error.ts +3 -0
  67. package/src/libs/agent-runtime/index.ts +1 -0
  68. package/src/libs/agent-runtime/perplexity/index.ts +86 -0
  69. package/src/libs/agent-runtime/types/type.ts +1 -0
  70. package/src/locales/default/common.ts +1 -0
  71. package/src/locales/default/error.ts +7 -0
  72. package/src/locales/default/setting.ts +8 -0
  73. package/src/services/_auth.ts +4 -0
  74. package/src/store/global/slices/settings/selectors/modelProvider.ts +9 -0
  75. package/src/types/settings/modelProvider.ts +7 -0
@@ -43,12 +43,14 @@
43
43
  "InvalidGoogleAPIKey": "Chave de API Google incorreta ou vazia, por favor, verifique a chave de API Google e tente novamente",
44
44
  "InvalidMoonshotAPIKey": "A chave da API Moonshot AI está incorreta ou vazia. Por favor, verifique a chave da API Moonshot e tente novamente.",
45
45
  "InvalidOllamaArgs": "Configuração Ollama inválida, verifique a configuração do Ollama e tente novamente",
46
+ "InvalidPerplexityAPIKey": "Chave da API Perplexity inválida ou em branco, verifique a chave da API Perplexity e tente novamente",
46
47
  "InvalidZhipuAPIKey": "Chave de API Zhipu incorreta ou vazia, por favor, verifique a chave de API Zhipu e tente novamente",
47
48
  "LocationNotSupportError": "Desculpe, sua localização atual não suporta este serviço de modelo, pode ser devido a restrições geográficas ou serviço não disponível. Por favor, verifique se a localização atual suporta o uso deste serviço ou tente usar outras informações de localização.",
48
49
  "MoonshotBizError": "O serviço Moonshot na face oculta da lua encontrou um erro. Por favor, verifique as informações abaixo ou tente novamente.",
49
50
  "NoOpenAIAPIKey": "A chave de API do OpenAI está em branco. Adicione uma chave de API personalizada do OpenAI",
50
51
  "OllamaBizError": "Erro de negócio ao solicitar o serviço Ollama, verifique as informações a seguir ou tente novamente",
51
52
  "OpenAIBizError": "Erro ao solicitar o serviço OpenAI. Verifique ou tente novamente com base nas informações abaixo",
53
+ "PerplexityBizError": "Erro de negócios ao solicitar o serviço de IA Perplexity, verifique as informações a seguir ou tente novamente",
52
54
  "PluginApiNotFound": "Desculpe, o API especificado não existe no manifesto do plugin. Verifique se o método de solicitação corresponde ao API do manifesto do plugin",
53
55
  "PluginApiParamsError": "Desculpe, a validação dos parâmetros de entrada da solicitação do plugin falhou. Verifique se os parâmetros de entrada correspondem às informações de descrição do API",
54
56
  "PluginGatewayError": "Desculpe, ocorreu um erro no gateway do plugin. Verifique se a configuração do gateway do plugin está correta",
@@ -89,6 +91,10 @@
89
91
  "description": "Digite sua chave de API OpenAI para iniciar a sessão. O aplicativo não irá armazenar sua chave de API",
90
92
  "title": "Usar chave de API OpenAI personalizada"
91
93
  },
94
+ "Perplexity": {
95
+ "description": "Insira sua chave da API Perplexity para iniciar a sessão. O aplicativo não irá armazenar sua chave da API",
96
+ "title": "Usar chave da API Perplexity personalizada"
97
+ },
92
98
  "Zhipu": {
93
99
  "description": "Digite sua chave de API Zhipu para iniciar a sessão. O aplicativo não irá armazenar sua chave de API",
94
100
  "title": "Usar chave de API Zhipu personalizada"
@@ -138,8 +138,16 @@
138
138
  "title": "Usar Azure OpenAI"
139
139
  }
140
140
  },
141
+ "Perplexity": {
142
+ "title": "Perplexity",
143
+ "token": {
144
+ "desc": "Insira a chave da API do Perplexity AI",
145
+ "placeholder": "Chave da API do Perplexity AI",
146
+ "title": "Chave da API"
147
+ }
148
+ },
141
149
  "Zhipu": {
142
- "title": "智谱",
150
+ "title": "Zhipu AI",
143
151
  "token": {
144
152
  "desc": "Insira a API Key do Zhipu",
145
153
  "placeholder": "Zhipu API Key",
@@ -107,6 +107,7 @@
107
107
  "ollama": "Оллама",
108
108
  "oneapi": "One API",
109
109
  "openai": "OpenAI",
110
+ "perplexity": "Perplexity AI",
110
111
  "zhipu": "Zhipu AI"
111
112
  },
112
113
  "noDescription": "Нет описания",
@@ -43,12 +43,14 @@
43
43
  "InvalidGoogleAPIKey": "Неверный или пустой ключ API Google, пожалуйста, проверьте ключ API Google и повторите попытку",
44
44
  "InvalidMoonshotAPIKey": "Moonshot AI API Key неверный или пустой, пожалуйста, проверьте ключ API Moonshot и повторите попытку",
45
45
  "InvalidOllamaArgs": "Неверная конфигурация Ollama, пожалуйста, проверьте конфигурацию Ollama и повторите попытку",
46
+ "InvalidPerplexityAPIKey": "Неверный или пустой ключ API Perplexity. Пожалуйста, проверьте ключ API Perplexity и повторите попытку",
46
47
  "InvalidZhipuAPIKey": "Неверный или пустой ключ API Zhipu, пожалуйста, проверьте ключ API Zhipu и повторите попытку",
47
48
  "LocationNotSupportError": "Извините, ваше текущее местоположение не поддерживает эту службу модели, возможно из-за ограничений региона или недоступности службы. Пожалуйста, убедитесь, что текущее местоположение поддерживает использование этой службы, или попробуйте использовать другую информацию о местоположении.",
48
49
  "MoonshotBizError": "请求月球暗面服务出错,请根据以下信息排查或重试",
49
50
  "NoOpenAIAPIKey": "Ключ OpenAI API пуст, пожалуйста, добавьте свой собственный ключ OpenAI API",
50
51
  "OllamaBizError": "Ошибка обращения к сервису Ollama, пожалуйста, проверьте следующую информацию или повторите попытку",
51
52
  "OpenAIBizError": "Ошибка запроса службы OpenAI. Устраните неполадку или повторите попытку, основываясь на следующей информации.",
53
+ "PerplexityBizError": "Ошибка обращения к сервису Perplexity AI. Пожалуйста, проверьте информацию ниже или повторите попытку",
52
54
  "PluginApiNotFound": "К сожалению, API не существует в манифесте плагина. Пожалуйста, проверьте, соответствует ли ваш метод запроса API манифеста плагина",
53
55
  "PluginApiParamsError": "К сожалению, проверка входных параметров для запроса плагина не удалась. Пожалуйста, проверьте, соответствуют ли входные параметры описанию API",
54
56
  "PluginGatewayError": "Извините, возникла ошибка шлюза плагина. Пожалуйста, проверьте правильность конфигурации шлюза плагина.",
@@ -89,6 +91,10 @@
89
91
  "description": "Введите свой ключ API OpenAI, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API",
90
92
  "title": "Использовать пользовательский ключ API OpenAI"
91
93
  },
94
+ "Perplexity": {
95
+ "description": "Введите свой ключ API Perplexity, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API",
96
+ "title": "Использовать пользовательский ключ API Perplexity"
97
+ },
92
98
  "Zhipu": {
93
99
  "description": "Введите свой ключ API Zhipu, чтобы начать сеанс. Приложение не будет сохранять ваш ключ API",
94
100
  "title": "Использовать пользовательский ключ API Zhipu"
@@ -138,8 +138,16 @@
138
138
  "title": "Использовать Azure OpenAI"
139
139
  }
140
140
  },
141
+ "Perplexity": {
142
+ "title": "Perplexity",
143
+ "token": {
144
+ "desc": "Введите API-ключ от Perplexity AI",
145
+ "placeholder": "Ключ API Perplexity AI",
146
+ "title": "API-ключ"
147
+ }
148
+ },
141
149
  "Zhipu": {
142
- "title": "智谱",
150
+ "title": "Zhipu AI",
143
151
  "token": {
144
152
  "desc": "Введите API-ключ от Zhipu",
145
153
  "placeholder": "Ключ API Zhipu",
@@ -107,6 +107,7 @@
107
107
  "ollama": "Ollama",
108
108
  "oneapi": "One API",
109
109
  "openai": "OpenAI",
110
+ "perplexity": "Perplexity",
110
111
  "zhipu": "Zhipu AI"
111
112
  },
112
113
  "noDescription": "Açıklama yok",
@@ -43,12 +43,14 @@
43
43
  "InvalidGoogleAPIKey": "Google API Anahtarı yanlış veya boş, lütfen Google API Anahtarınızı kontrol edip tekrar deneyin",
44
44
  "InvalidMoonshotAPIKey": "Geçersiz veya boş Moonshot AI API Anahtarı, lütfen Moonshot API Anahtarınızı kontrol edip tekrar deneyin",
45
45
  "InvalidOllamaArgs": "Ollama yapılandırması yanlış, lütfen Ollama yapılandırmasını kontrol edip tekrar deneyin",
46
+ "InvalidPerplexityAPIKey": "Perplexity API Key geçersiz veya boş, lütfen Perplexity API Key'inizi kontrol edip tekrar deneyin",
46
47
  "InvalidZhipuAPIKey": "Zhipu API Anahtarı yanlış veya boş, lütfen Zhipu API Anahtarınızı kontrol edip tekrar deneyin",
47
48
  "LocationNotSupportError": "Üzgünüz, bulunduğunuz konum bu model hizmetini desteklemiyor, muhtemelen bölge kısıtlamaları veya hizmetin henüz açılmamış olması nedeniyle. Lütfen mevcut konumun bu hizmeti kullanmaya uygun olup olmadığını doğrulayın veya başka bir konum bilgisi kullanmayı deneyin.",
48
49
  "MoonshotBizError": "Moonshot hizmetinde bir hata oluştu, lütfen aşağıdaki bilgilere göre sorunu giderin veya tekrar deneyin",
49
50
  "NoOpenAIAPIKey": "OpenAI API Anahtarı boş, lütfen özel bir OpenAI API Anahtarı ekleyin",
50
51
  "OllamaBizError": "Ollama servisine yapılan istekte hata oluştu, lütfen aşağıdaki bilgilere göre sorunu gidermeye çalışın veya tekrar deneyin",
51
52
  "OpenAIBizError": "OpenAI hizmeti talep ederken hata oluştu. Aşağıdaki bilgilere dayanarak sorun giderin veya tekrar deneyin.",
53
+ "PerplexityBizError": "Perplexity AI hizmetine yapılan istekte hata oluştu, lütfen aşağıdaki bilgilere göre sorunu gidermeye çalışın veya tekrar deneyin",
52
54
  "PluginApiNotFound": "Üzgünüm, eklentinin bildiriminde API mevcut değil. Lütfen istek yönteminizin eklenti bildirim API'sı ile eşleşip eşleşmediğini kontrol edin",
53
55
  "PluginApiParamsError": "Üzgünüm, eklenti isteği için giriş parametre doğrulaması başarısız oldu. Lütfen giriş parametrelerinin API açıklamasıyla eşleşip eşleşmediğini kontrol edin",
54
56
  "PluginGatewayError": "Üzgünüz, eklenti ağ geçidinde bir hata oluştu, lütfen eklenti ağ geçidi yapılandırmasını kontrol edin",
@@ -89,6 +91,10 @@
89
91
  "description": "OpenAI API Anahtarınızı girerek oturumu başlatabilirsiniz. Uygulama API Anahtarınızı kaydetmez",
90
92
  "title": "Özel OpenAI API Anahtarını kullan"
91
93
  },
94
+ "Perplexity": {
95
+ "description": "Sohbeti başlatmak için Perplexity API Key'inizi girin. Uygulama API Key'inizi kaydetmez",
96
+ "title": "Özel Perplexity API Key'i Kullan"
97
+ },
92
98
  "Zhipu": {
93
99
  "description": "Zhipu API Anahtarınızı girerek oturumu başlatabilirsiniz. Uygulama API Anahtarınızı kaydetmez",
94
100
  "title": "Özel Zhipu API Anahtarını kullan"
@@ -138,8 +138,16 @@
138
138
  "title": "Azure OpenAI"
139
139
  }
140
140
  },
141
+ "Perplexity": {
142
+ "title": "Perplexity",
143
+ "token": {
144
+ "desc": "Perplexity AI'dan gelen API Anahtarı'nı girin",
145
+ "placeholder": "Perplexity AI API Anahtarı",
146
+ "title": "API Anahtarı"
147
+ }
148
+ },
141
149
  "Zhipu": {
142
- "title": "智谱",
150
+ "title": "Zhipu AI",
143
151
  "token": {
144
152
  "desc": "Zhipu'dan alınan API Anahtarını girin",
145
153
  "placeholder": "Zhipu API Anahtarı",
@@ -107,6 +107,7 @@
107
107
  "ollama": "Ollama",
108
108
  "oneapi": "One API",
109
109
  "openai": "OpenAI",
110
+ "perplexity": "Perplexity AI",
110
111
  "zhipu": "Zhipu AI"
111
112
  },
112
113
  "noDescription": "Chưa có mô tả",
@@ -43,12 +43,14 @@
43
43
  "InvalidGoogleAPIKey": "Khóa API Google không chính xác hoặc trống, vui lòng kiểm tra lại Khóa API Google và thử lại",
44
44
  "InvalidMoonshotAPIKey": "Khóa API Moonshot AI không hợp lệ hoặc trống, vui lòng kiểm tra lại Khóa API Moonshot và thử lại",
45
45
  "InvalidOllamaArgs": "Cấu hình Ollama không hợp lệ, vui lòng kiểm tra lại cấu hình Ollama và thử lại",
46
+ "InvalidPerplexityAPIKey": "Khóa API Perplexity không hợp lệ hoặc trống, vui lòng kiểm tra lại và thử lại sau",
46
47
  "InvalidZhipuAPIKey": "Khóa API Zhipu không chính xác hoặc trống, vui lòng kiểm tra lại Khóa API Zhipu và thử lại",
47
48
  "LocationNotSupportError": "Xin lỗi, vị trí của bạn không hỗ trợ dịch vụ mô hình này, có thể do hạn chế vùng miền hoặc dịch vụ chưa được mở. Vui lòng xác nhận xem vị trí hiện tại có hỗ trợ sử dụng dịch vụ này không, hoặc thử sử dụng thông tin vị trí khác.",
48
49
  "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",
49
50
  "NoOpenAIAPIKey": "Khóa API OpenAI trống, vui lòng thêm Khóa API OpenAI tùy chỉnh",
50
51
  "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",
51
52
  "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",
53
+ "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",
52
54
  "PluginApiNotFound": "Xin lỗi, không có API nào trong tệp mô tả plugin, vui lòng kiểm tra phương thức yêu cầu của bạn có khớp với API mô tả plugin không",
53
55
  "PluginApiParamsError": "Xin lỗi, kiểm tra tham số đầu vào yêu cầu của plugin không thông qua, vui lòng kiểm tra tham số đầu vào có khớp với thông tin mô tả API không",
54
56
  "PluginGatewayError": "Xin lỗi, cổng plugin gặp lỗi, vui lòng kiểm tra cấu hình cổng plugin có đúng không",
@@ -89,6 +91,10 @@
89
91
  "description": "Nhập OpenAI API Key của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu trữ API Key của bạn",
90
92
  "title": "Sử dụng thông tin xác thực tùy chỉnh của OpenAI"
91
93
  },
94
+ "Perplexity": {
95
+ "description": "Nhập Khóa API Perplexity của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không ghi lại Khóa API của bạn",
96
+ "title": "Sử dụng Khóa API Perplexity tùy chỉnh"
97
+ },
92
98
  "Zhipu": {
93
99
  "description": "Nhập Zhipu API Key của bạn để bắt đầu phiên làm việc. Ứng dụng sẽ không lưu trữ API Key của bạn",
94
100
  "title": "Sử dụng thông tin xác thực tùy chỉnh của Zhipu"
@@ -138,8 +138,16 @@
138
138
  "title": "Sử dụng Azure OpenAI"
139
139
  }
140
140
  },
141
+ "Perplexity": {
142
+ "title": "Perplexity AI",
143
+ "token": {
144
+ "desc": "Nhập API Key từ Perplexity AI",
145
+ "placeholder": "Khóa API Perplexity AI",
146
+ "title": "API Key"
147
+ }
148
+ },
141
149
  "Zhipu": {
142
- "title": "智谱",
150
+ "title": "Zhipu AI",
143
151
  "token": {
144
152
  "desc": "Nhập API Key từ Zhipu",
145
153
  "placeholder": "Zhipu API Key",
@@ -107,6 +107,7 @@
107
107
  "ollama": "Ollama",
108
108
  "oneapi": "One API",
109
109
  "openai": "OpenAI",
110
+ "perplexity": "Perplexity",
110
111
  "zhipu": "智谱AI"
111
112
  },
112
113
  "noDescription": "暂无描述",
@@ -59,6 +59,8 @@
59
59
  "BedrockBizError": "请求 Bedrock 服务出错,请根据以下信息排查或重试",
60
60
  "InvalidAzureAPIKey": "Azure API Key 不正确或为空,请检查 Azure API Key 后重试",
61
61
  "AzureBizError": "请求 Azure AI 服务出错,请根据以下信息排查或重试",
62
+ "InvalidPerplexityAPIKey": "Perplexity API Key 不正确或为空,请检查 Perplexity API Key 后重试",
63
+ "PerplexityBizError": "请求 Perplexity AI 服务出错,请根据以下信息排查或重试",
62
64
  "InvalidOllamaArgs": "Ollama 配置不正确,请检查 Ollama 配置后重试",
63
65
  "OllamaBizError": "请求 Ollama 服务出错,请根据以下信息排查或重试",
64
66
  "AgentRuntimeError": "Lobe 语言模型运行时执行出错,请根据以下信息排查或重试"
@@ -89,6 +91,10 @@
89
91
  "description": "输入你的 OpenAI API Key 即可开始会话。应用不会记录你的 API Key",
90
92
  "title": "使用自定义 OpenAI API Key"
91
93
  },
94
+ "Perplexity": {
95
+ "description": "输入你的 Perplexity API Key 即可开始会话。应用不会记录你的 API Key",
96
+ "title": "使用自定义 Perplexity API Key"
97
+ },
92
98
  "Zhipu": {
93
99
  "description": "输入你的 Zhipu API Key 即可开始会话。应用不会记录你的 API Key",
94
100
  "title": "使用自定义 Zhipu API Key"
@@ -138,6 +138,14 @@
138
138
  "title": "Azure OpenAI"
139
139
  }
140
140
  },
141
+ "Perplexity": {
142
+ "title": "Perplexity",
143
+ "token": {
144
+ "desc": "填入来自 Perplexity AI 的 API Key",
145
+ "placeholder": "Perplexity AI API Key",
146
+ "title": "API Key"
147
+ }
148
+ },
141
149
  "Zhipu": {
142
150
  "title": "智谱",
143
151
  "token": {
@@ -107,6 +107,7 @@
107
107
  "ollama": "奧拉馬",
108
108
  "oneapi": "One API",
109
109
  "openai": "OpenAI",
110
+ "perplexity": "Perplexity AI",
110
111
  "zhipu": "智譜AI"
111
112
  },
112
113
  "noDescription": "暫無描述",
@@ -43,12 +43,14 @@
43
43
  "InvalidGoogleAPIKey": "Google API Key 不正確或為空,請檢查 Google API Key 後重試",
44
44
  "InvalidMoonshotAPIKey": "Moonshot AI API 金鑰不正確或為空,請檢查 Moonshot API 金鑰後重試",
45
45
  "InvalidOllamaArgs": "Ollama 配置不正確,請檢查 Ollama 配置後重試",
46
+ "InvalidPerplexityAPIKey": "Perplexity API Key 不正確或為空,請檢查 Perplexity API Key 後重試",
46
47
  "InvalidZhipuAPIKey": "Zhipu API Key 不正確或為空,請檢查 Zhipu API Key 後重試",
47
48
  "LocationNotSupportError": "很抱歉,你的所在位置不支持此模型服務,可能是由於地區限制或服務未開通。請確認當前位置是否支持使用此服務,或嘗試使用其他位置信息。",
48
49
  "MoonshotBizError": "請求月球背面服務出錯,請根據以下信息排查或重試",
49
50
  "NoOpenAIAPIKey": "OpenAI API 金鑰為空,請添加自訂 OpenAI API 金鑰",
50
51
  "OllamaBizError": "請求 Ollama 服務出錯,請根據以下資訊排查或重試",
51
52
  "OpenAIBizError": "請求 OpenAI 服務出錯。請根據以下資訊進行排查或重試。",
53
+ "PerplexityBizError": "請求 Perplexity AI 服務出錯,請根據以下信息排查或重試",
52
54
  "PluginApiNotFound": "抱歉,外掛描述檔案中不存在該 API。請檢查您的請求方法與外掛清單 API 是否相符",
53
55
  "PluginApiParamsError": "抱歉,該外掛請求的輸入參數驗證失敗。請檢查輸入參數與 API 描述資訊是否相符",
54
56
  "PluginGatewayError": "很抱歉,插件網關出現錯誤,請檢查插件網關配置是否正確",
@@ -89,6 +91,10 @@
89
91
  "description": "輸入你的 OpenAI API Key 即可開始會話。應用不會記錄你的 API Key",
90
92
  "title": "使用自定義 OpenAI API Key"
91
93
  },
94
+ "Perplexity": {
95
+ "description": "輸入你的 Perplexity API Key 即可開始會話。應用不會記錄你的 API Key",
96
+ "title": "使用自定義 Perplexity API Key"
97
+ },
92
98
  "Zhipu": {
93
99
  "description": "輸入你的 Zhipu API Key 即可開始會話。應用不會記錄你的 API Key",
94
100
  "title": "使用自定義 Zhipu API Key"
@@ -138,6 +138,14 @@
138
138
  "title": "Azure OpenAI"
139
139
  }
140
140
  },
141
+ "Perplexity": {
142
+ "title": "Perplexity AI",
143
+ "token": {
144
+ "desc": "請填入來自 Perplexity AI 的 API 金鑰",
145
+ "placeholder": "Perplexity AI API 金鑰",
146
+ "title": "API 金鑰"
147
+ }
148
+ },
141
149
  "Zhipu": {
142
150
  "title": "智譜",
143
151
  "token": {
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "0.128.10",
3
+ "version": "0.129.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",
@@ -8,6 +8,7 @@ import {
8
8
  LobeMoonshotAI,
9
9
  LobeOllamaAI,
10
10
  LobeOpenAI,
11
+ LobePerplexityAI,
11
12
  LobeRuntimeAI,
12
13
  LobeZhipuAI,
13
14
  ModelProvider,
@@ -74,6 +75,11 @@ class AgentRuntime {
74
75
  runtimeModel = this.initOllama(payload);
75
76
  break;
76
77
  }
78
+
79
+ case ModelProvider.Perplexity: {
80
+ runtimeModel = this.initPerplexity(payload);
81
+ break;
82
+ }
77
83
  }
78
84
 
79
85
  return new AgentRuntime(runtimeModel);
@@ -152,6 +158,13 @@ class AgentRuntime {
152
158
 
153
159
  return new LobeOllamaAI(baseUrl);
154
160
  }
161
+
162
+ private static initPerplexity(payload: JWTPayload) {
163
+ const { PERPLEXITY_API_KEY } = getServerConfig();
164
+ const apiKey = payload?.apiKey || PERPLEXITY_API_KEY;
165
+
166
+ return new LobePerplexityAI(apiKey);
167
+ }
155
168
  }
156
169
 
157
170
  export default AgentRuntime;
@@ -17,6 +17,7 @@ export const GET = async () => {
17
17
  ENABLED_GOOGLE,
18
18
  ENABLE_OAUTH_SSO,
19
19
  ENABLE_OLLAMA,
20
+ ENABLED_PERPLEXITY,
20
21
  DEFAULT_AGENT_CONFIG,
21
22
  } = getServerConfig();
22
23
 
@@ -31,6 +32,7 @@ export const GET = async () => {
31
32
  google: { enabled: ENABLED_GOOGLE },
32
33
  moonshot: { enabled: ENABLED_MOONSHOT },
33
34
  ollama: { enabled: ENABLE_OLLAMA },
35
+ perplexity: { enabled: ENABLED_PERPLEXITY },
34
36
  zhipu: { enabled: ENABLED_ZHIPU },
35
37
  },
36
38
  };
@@ -40,6 +40,9 @@ const getStatus = (errorType: ILobeAgentRuntimeErrorType | ErrorType) => {
40
40
  case AgentRuntimeErrorType.OllamaBizError: {
41
41
  return 478;
42
42
  }
43
+ case AgentRuntimeErrorType.PerplexityBizError: {
44
+ return 479;
45
+ }
43
46
  }
44
47
  return errorType as number;
45
48
  };
@@ -0,0 +1,52 @@
1
+ import { Perplexity } from '@lobehub/icons';
2
+ import { Input } from 'antd';
3
+ import { useTheme } from 'antd-style';
4
+ import { memo } from 'react';
5
+ import { useTranslation } from 'react-i18next';
6
+
7
+ import { ModelProvider } from '@/libs/agent-runtime';
8
+
9
+ import Checker from '../components/Checker';
10
+ import ProviderConfig from '../components/ProviderConfig';
11
+ import { LLMProviderApiTokenKey, LLMProviderConfigKey } from '../const';
12
+
13
+ const providerKey = 'perplexity';
14
+
15
+ const PerplexityProvider = memo(() => {
16
+ const { t } = useTranslation('setting');
17
+
18
+ const theme = useTheme();
19
+
20
+ return (
21
+ <ProviderConfig
22
+ configItems={[
23
+ {
24
+ children: (
25
+ <Input.Password
26
+ autoComplete={'new-password'}
27
+ placeholder={t('llm.Perplexity.token.placeholder')}
28
+ />
29
+ ),
30
+ desc: t('llm.Perplexity.token.desc'),
31
+ label: t('llm.Perplexity.token.title'),
32
+ name: [LLMProviderConfigKey, providerKey, LLMProviderApiTokenKey],
33
+ },
34
+ {
35
+ children: <Checker model={'pplx-7b-chat'} provider={ModelProvider.Perplexity} />,
36
+ desc: t('llm.checker.desc'),
37
+ label: t('llm.checker.title'),
38
+ minWidth: '100%',
39
+ },
40
+ ]}
41
+ provider={providerKey}
42
+ title={
43
+ <Perplexity.Combine
44
+ color={theme.isDarkMode ? theme.colorText : Perplexity.colorPrimary}
45
+ size={24}
46
+ />
47
+ }
48
+ />
49
+ );
50
+ });
51
+
52
+ export default PerplexityProvider;
@@ -13,6 +13,7 @@ import Google from './Google';
13
13
  import Moonshot from './Moonshot';
14
14
  import Ollama from './Ollama';
15
15
  import OpenAI from './OpenAI';
16
+ import Perplexity from './Perplexity';
16
17
  import Zhipu from './Zhipu';
17
18
 
18
19
  export default memo<{ showOllama: boolean }>(({ showOllama }) => {
@@ -27,6 +28,7 @@ export default memo<{ showOllama: boolean }>(({ showOllama }) => {
27
28
  <Moonshot />
28
29
  <Google />
29
30
  <Bedrock />
31
+ <Perplexity />
30
32
  {showOllama && <Ollama />}
31
33
  <Footer>
32
34
  <Trans i18nKey="llm.waitingForMore" ns={'setting'}>
@@ -9,6 +9,7 @@ import {
9
9
  Mistral,
10
10
  Moonshot,
11
11
  OpenAI,
12
+ Perplexity,
12
13
  Tongyi,
13
14
  } from '@lobehub/icons';
14
15
  import { memo } from 'react';
@@ -33,7 +34,8 @@ const ModelIcon = memo<ModelProviderIconProps>(({ model, size = 12 }) => {
33
34
  if (model.includes('moonshot')) return <Moonshot.Avatar size={size} />;
34
35
  if (model.includes('baichuan'))
35
36
  return <Baichuan.Avatar background={Baichuan.colorPrimary} size={size} />;
36
- if (model.includes('mistral')) return <Mistral.Avatar size={size} />;
37
+ if (model.includes('mistral') || model.includes('mixtral')) return <Mistral.Avatar size={size} />;
38
+ if (model.includes('pplx')) return <Perplexity.Avatar size={size} />;
37
39
  });
38
40
 
39
41
  export default ModelIcon;
@@ -1,4 +1,14 @@
1
- import { Azure, Bedrock, Google, Moonshot, Ollama, OpenAI, Zhipu } from '@lobehub/icons';
1
+ import {
2
+ Azure,
3
+ Bedrock,
4
+ Google,
5
+ Mistral,
6
+ Moonshot,
7
+ Ollama,
8
+ OpenAI,
9
+ Perplexity,
10
+ Zhipu,
11
+ } from '@lobehub/icons';
2
12
  import { memo } from 'react';
3
13
  import { Center } from 'react-layout-kit';
4
14
 
@@ -46,6 +56,14 @@ const ModelProviderIcon = memo<ModelProviderIconProps>(({ provider }) => {
46
56
  return <Ollama size={20} />;
47
57
  }
48
58
 
59
+ case ModelProvider.Perplexity: {
60
+ return <Perplexity size={20} />;
61
+ }
62
+
63
+ case ModelProvider.Mistral: {
64
+ return <Mistral size={20} />;
65
+ }
66
+
49
67
  default: {
50
68
  return null;
51
69
  }
@@ -9,6 +9,7 @@ import {
9
9
  Mistral,
10
10
  Moonshot,
11
11
  OpenAI,
12
+ Perplexity,
12
13
  Tongyi,
13
14
  } from '@lobehub/icons';
14
15
  import { memo } from 'react';
@@ -31,7 +32,8 @@ const ModelIcon = memo<ModelIconProps>(({ model, size = 12 }) => {
31
32
  if (model.includes('qwen')) return <Tongyi size={size} />;
32
33
  if (model.includes('minmax')) return <Minimax size={size} />;
33
34
  if (model.includes('baichuan')) return <Baichuan size={size} />;
34
- if (model.includes('mistral')) return <Mistral size={size} />;
35
+ if (model.includes('mistral') || model.includes('mixtral')) return <Mistral size={size} />;
36
+ if (model.includes('pplx')) return <Perplexity size={size} />;
35
37
  });
36
38
 
37
39
  export default ModelIcon;
@@ -5,6 +5,7 @@ import GoogleProvider from './google';
5
5
  import MoonshotProvider from './moonshot';
6
6
  import OllamaProvider from './ollama';
7
7
  import OpenAIProvider from './openai';
8
+ import PerplexityProvider from './perplexity';
8
9
  import ZhiPuProvider from './zhipu';
9
10
 
10
11
  export const LOBE_DEFAULT_MODEL_LIST: ChatModelCard[] = [
@@ -14,6 +15,7 @@ export const LOBE_DEFAULT_MODEL_LIST: ChatModelCard[] = [
14
15
  GoogleProvider.chatModels,
15
16
  MoonshotProvider.chatModels,
16
17
  OllamaProvider.chatModels,
18
+ PerplexityProvider.chatModels,
17
19
  ].flat();
18
20
 
19
21
  export { default as BedrockProvider } from './bedrock';
@@ -21,4 +23,5 @@ export { default as GoogleProvider } from './google';
21
23
  export { default as MoonshotProvider } from './moonshot';
22
24
  export { default as OllamaProvider } from './ollama';
23
25
  export { default as OpenAIProvider } from './openai';
26
+ export { default as PerplexityProvider } from './perplexity';
24
27
  export { default as ZhiPuProvider } from './zhipu';
@@ -0,0 +1,44 @@
1
+ import { ModelProviderCard } from '@/types/llm';
2
+
3
+ const Perplexity: ModelProviderCard = {
4
+ chatModels: [
5
+ {
6
+ displayName: 'Perplexity 7B Chat',
7
+ id: 'pplx-7b-chat',
8
+ tokens: 8192,
9
+ },
10
+ {
11
+ displayName: 'Perplexity 70B Chat',
12
+ id: 'pplx-70b-chat',
13
+ tokens: 8192,
14
+ },
15
+ {
16
+ displayName: 'Perplexity 7B Online',
17
+ id: 'pplx-7b-online',
18
+ tokens: 8192,
19
+ },
20
+ {
21
+ displayName: 'Perplexity 70B Online',
22
+ id: 'pplx-70b-online',
23
+ tokens: 8192,
24
+ },
25
+ {
26
+ displayName: 'Codellama 34B Instruct',
27
+ id: 'codellama-34b-instruct',
28
+ tokens: 16_384,
29
+ },
30
+ {
31
+ displayName: 'Codellama 70B Instruct',
32
+ id: 'codellama-70b-instruct',
33
+ tokens: 16_384,
34
+ },
35
+ {
36
+ displayName: 'Mixtral 8x7B Instruct',
37
+ id: 'mixtral-8x7b-instruct',
38
+ tokens: 8192,
39
+ },
40
+ ],
41
+ id: 'perplexity',
42
+ };
43
+
44
+ export default Perplexity;
@@ -28,6 +28,9 @@ declare global {
28
28
  MOONSHOT_API_KEY?: string;
29
29
  MOONSHOT_PROXY_URL?: string;
30
30
 
31
+ // Perplexity Provider
32
+ PERPLEXITY_API_KEY?: string;
33
+
31
34
  // AWS Credentials
32
35
  AWS_REGION?: string;
33
36
  AWS_ACCESS_KEY_ID?: string;
@@ -53,6 +56,8 @@ export const getProviderConfig = () => {
53
56
 
54
57
  const MOONSHOT_API_KEY = process.env.MOONSHOT_API_KEY || '';
55
58
 
59
+ const PERPLEXITY_API_KEY = process.env.PERPLEXITY_API_KEY || '';
60
+
56
61
  // region format: iad1,sfo1
57
62
  let regions: string[] = [];
58
63
  if (process.env.OPENAI_FUNCTION_REGIONS) {
@@ -72,6 +77,9 @@ export const getProviderConfig = () => {
72
77
  ENABLED_GOOGLE: !!GOOGLE_API_KEY,
73
78
  GOOGLE_API_KEY,
74
79
 
80
+ ENABLED_PERPLEXITY: !!PERPLEXITY_API_KEY,
81
+ PERPLEXITY_API_KEY,
82
+
75
83
  ENABLED_MOONSHOT: !!MOONSHOT_API_KEY,
76
84
  MOONSHOT_API_KEY,
77
85
  MOONSHOT_PROXY_URL: process.env.MOONSHOT_PROXY_URL,
@@ -75,6 +75,10 @@ export const DEFAULT_LLM_CONFIG: GlobalLLMConfig = {
75
75
  enabled: true,
76
76
  models: [],
77
77
  },
78
+ perplexity: {
79
+ apiKey: '',
80
+ enabled: false,
81
+ },
78
82
  zhipu: {
79
83
  apiKey: '',
80
84
  enabled: false,