@lobehub/chat 1.61.2 → 1.61.4
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/CHANGELOG.md +50 -0
- package/changelog/v1.json +18 -0
- package/locales/ar/error.json +1 -1
- package/locales/ar/models.json +9 -0
- package/locales/bg-BG/error.json +1 -1
- package/locales/bg-BG/models.json +9 -0
- package/locales/de-DE/error.json +1 -1
- package/locales/de-DE/models.json +9 -0
- package/locales/en-US/error.json +1 -1
- package/locales/en-US/models.json +9 -0
- package/locales/es-ES/error.json +1 -1
- package/locales/es-ES/models.json +9 -0
- package/locales/fa-IR/error.json +1 -1
- package/locales/fa-IR/models.json +9 -0
- package/locales/fr-FR/error.json +1 -1
- package/locales/fr-FR/models.json +9 -0
- package/locales/it-IT/error.json +1 -1
- package/locales/it-IT/models.json +9 -0
- package/locales/ja-JP/error.json +1 -1
- package/locales/ja-JP/models.json +9 -0
- package/locales/ko-KR/error.json +1 -1
- package/locales/ko-KR/models.json +9 -0
- package/locales/nl-NL/error.json +1 -1
- package/locales/nl-NL/models.json +9 -0
- package/locales/pl-PL/error.json +1 -1
- package/locales/pl-PL/models.json +9 -0
- package/locales/pt-BR/error.json +1 -1
- package/locales/pt-BR/models.json +9 -0
- package/locales/ru-RU/error.json +1 -1
- package/locales/ru-RU/models.json +9 -0
- package/locales/tr-TR/error.json +1 -1
- package/locales/tr-TR/models.json +9 -0
- package/locales/vi-VN/error.json +1 -1
- package/locales/vi-VN/models.json +9 -0
- package/locales/zh-CN/error.json +1 -1
- package/locales/zh-CN/models.json +9 -0
- package/locales/zh-TW/error.json +1 -1
- package/locales/zh-TW/models.json +9 -0
- package/package.json +1 -1
- package/src/app/(backend)/middleware/auth/index.ts +1 -0
- package/src/config/aiModels/perplexity.ts +16 -6
- package/src/config/modelProviders/perplexity.ts +9 -6
- package/src/libs/agent-runtime/perplexity/index.test.ts +10 -222
- package/src/locales/default/error.ts +1 -1
package/locales/pt-BR/error.json
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
"ProviderBizError": "Erro no serviço {{provider}} solicitado. Por favor, verifique as informações abaixo ou tente novamente.",
|
101
101
|
"QuotaLimitReached": "Desculpe, o uso atual de tokens ou o número de solicitações atingiu o limite de quota da chave. Por favor, aumente a quota dessa chave ou tente novamente mais tarde.",
|
102
102
|
"StreamChunkError": "Erro de análise do bloco de mensagem da solicitação em fluxo. Verifique se a interface da API atual está em conformidade com os padrões ou entre em contato com seu fornecedor de API para mais informações.",
|
103
|
-
"SubscriptionPlanLimit": "
|
103
|
+
"SubscriptionPlanLimit": "Seu limite de pontos de assinatura foi atingido, não é possível usar essa funcionalidade. Por favor, faça um upgrade para um plano superior ou configure a API do modelo personalizado para continuar usando.",
|
104
104
|
"SystemTimeNotMatchError": "Desculpe, o horário do seu sistema não coincide com o do servidor. Por favor, verifique o horário do seu sistema e tente novamente.",
|
105
105
|
"UnknownChatFetchError": "Desculpe, ocorreu um erro desconhecido na solicitação. Por favor, verifique as informações abaixo ou tente novamente."
|
106
106
|
},
|
@@ -1034,6 +1034,9 @@
|
|
1034
1034
|
"jina-deepsearch-v1": {
|
1035
1035
|
"description": "A busca profunda combina pesquisa na web, leitura e raciocínio para realizar investigações abrangentes. Você pode vê-la como um agente que aceita suas tarefas de pesquisa - ela realizará uma busca extensa e passará por várias iterações antes de fornecer uma resposta. Esse processo envolve pesquisa contínua, raciocínio e resolução de problemas sob diferentes ângulos. Isso é fundamentalmente diferente de gerar respostas diretamente a partir de dados pré-treinados de grandes modelos padrão e de sistemas RAG tradicionais que dependem de buscas superficiais únicas."
|
1036
1036
|
},
|
1037
|
+
"kimi-latest": {
|
1038
|
+
"description": "O produto assistente inteligente Kimi utiliza o mais recente modelo Kimi, que pode conter recursos ainda não estáveis. Suporta compreensão de imagens e seleciona automaticamente o modelo de cobrança de 8k/32k/128k com base no comprimento do contexto da solicitação."
|
1039
|
+
},
|
1037
1040
|
"learnlm-1.5-pro-experimental": {
|
1038
1041
|
"description": "LearnLM é um modelo de linguagem experimental e específico para tarefas, treinado para atender aos princípios da ciência da aprendizagem, podendo seguir instruções sistemáticas em cenários de ensino e aprendizagem, atuando como um mentor especialista, entre outros."
|
1039
1042
|
},
|
@@ -1349,6 +1352,9 @@
|
|
1349
1352
|
"moonshot-v1-8k-vision-preview": {
|
1350
1353
|
"description": "O modelo visual Kimi (incluindo moonshot-v1-8k-vision-preview/moonshot-v1-32k-vision-preview/moonshot-v1-128k-vision-preview, etc.) é capaz de entender o conteúdo das imagens, incluindo texto, cores e formas dos objetos."
|
1351
1354
|
},
|
1355
|
+
"moonshot-v1-auto": {
|
1356
|
+
"description": "O Moonshot V1 Auto pode escolher o modelo adequado com base na quantidade de Tokens ocupados pelo contexto atual."
|
1357
|
+
},
|
1352
1358
|
"nousresearch/hermes-2-pro-llama-3-8b": {
|
1353
1359
|
"description": "Hermes 2 Pro Llama 3 8B é uma versão aprimorada do Nous Hermes 2, contendo os conjuntos de dados mais recentes desenvolvidos internamente."
|
1354
1360
|
},
|
@@ -1571,6 +1577,9 @@
|
|
1571
1577
|
"sonar-reasoning": {
|
1572
1578
|
"description": "Novo produto API suportado pelo modelo de raciocínio da DeepSeek."
|
1573
1579
|
},
|
1580
|
+
"sonar-reasoning-pro": {
|
1581
|
+
"description": "Um novo produto de API suportado pelo modelo de raciocínio DeepSeek."
|
1582
|
+
},
|
1574
1583
|
"step-1-128k": {
|
1575
1584
|
"description": "Equilibra desempenho e custo, adequado para cenários gerais."
|
1576
1585
|
},
|
package/locales/ru-RU/error.json
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
"ProviderBizError": "Ошибка обслуживания {{provider}}. Пожалуйста, проверьте следующую информацию или повторите попытку",
|
101
101
|
"QuotaLimitReached": "Извините, текущий объем токенов или количество запросов достигло предела квоты для этого ключа. Пожалуйста, увеличьте квоту для этого ключа или попробуйте позже.",
|
102
102
|
"StreamChunkError": "Ошибка разбора блока сообщения потокового запроса. Пожалуйста, проверьте, соответствует ли текущий API стандартам, или свяжитесь с вашим поставщиком API для получения консультации.",
|
103
|
-
"SubscriptionPlanLimit": "
|
103
|
+
"SubscriptionPlanLimit": "Ваши подписочные баллы исчерпаны, вы не можете использовать эту функцию. Пожалуйста, обновите до более высокого плана или настройте API пользовательской модели, чтобы продолжить использование.",
|
104
104
|
"SystemTimeNotMatchError": "Извините, ваше системное время не совпадает с серверным. Пожалуйста, проверьте ваше системное время и попробуйте снова.",
|
105
105
|
"UnknownChatFetchError": "Извините, произошла неизвестная ошибка запроса. Пожалуйста, проверьте информацию ниже или попробуйте снова."
|
106
106
|
},
|
@@ -1034,6 +1034,9 @@
|
|
1034
1034
|
"jina-deepsearch-v1": {
|
1035
1035
|
"description": "Глубокий поиск сочетает в себе сетевой поиск, чтение и рассуждение, позволяя проводить всесторонние исследования. Вы можете рассматривать его как агента, который принимает ваши исследовательские задачи — он проводит обширный поиск и проходит через множество итераций, прежде чем предоставить ответ. Этот процесс включает в себя постоянные исследования, рассуждения и решение проблем с разных точек зрения. Это принципиально отличается от стандартных больших моделей, которые генерируют ответы непосредственно из предобученных данных, и от традиционных систем RAG, полагающихся на одноразовый поверхностный поиск."
|
1036
1036
|
},
|
1037
|
+
"kimi-latest": {
|
1038
|
+
"description": "Продукт Kimi Smart Assistant использует последнюю модель Kimi, которая может содержать нестабильные функции. Поддерживает понимание изображений и автоматически выбирает модель 8k/32k/128k в качестве модели для выставления счетов в зависимости от длины контекста запроса."
|
1039
|
+
},
|
1037
1040
|
"learnlm-1.5-pro-experimental": {
|
1038
1041
|
"description": "LearnLM — это экспериментальная языковая модель, ориентированная на конкретные задачи, обученная в соответствии с принципами науки о обучении, которая может следовать системным инструкциям в учебных и образовательных сценариях, выступая в роли эксперта-наставника и т.д."
|
1039
1042
|
},
|
@@ -1349,6 +1352,9 @@
|
|
1349
1352
|
"moonshot-v1-8k-vision-preview": {
|
1350
1353
|
"description": "Модель визуализации Kimi (включая moonshot-v1-8k-vision-preview/moonshot-v1-32k-vision-preview/moonshot-v1-128k-vision-preview и др.) может понимать содержимое изображений, включая текст на изображениях, цвета изображений и формы объектов."
|
1351
1354
|
},
|
1355
|
+
"moonshot-v1-auto": {
|
1356
|
+
"description": "Moonshot V1 Auto может выбирать подходящую модель в зависимости от количества токенов, используемых в текущем контексте."
|
1357
|
+
},
|
1352
1358
|
"nousresearch/hermes-2-pro-llama-3-8b": {
|
1353
1359
|
"description": "Hermes 2 Pro Llama 3 8B — это обновленная версия Nous Hermes 2, содержащая последние внутренние разработанные наборы данных."
|
1354
1360
|
},
|
@@ -1571,6 +1577,9 @@
|
|
1571
1577
|
"sonar-reasoning": {
|
1572
1578
|
"description": "Новый API продукт, поддерживаемый моделью вывода DeepSeek."
|
1573
1579
|
},
|
1580
|
+
"sonar-reasoning-pro": {
|
1581
|
+
"description": "Новый API продукт, поддерживаемый моделью вывода DeepSeek."
|
1582
|
+
},
|
1574
1583
|
"step-1-128k": {
|
1575
1584
|
"description": "Балансирует производительность и стоимость, подходит для общих сценариев."
|
1576
1585
|
},
|
package/locales/tr-TR/error.json
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
"ProviderBizError": "Talep {{provider}} hizmetinde bir hata oluştu, lütfen aşağıdaki bilgilere göre sorunu giderin veya tekrar deneyin",
|
101
101
|
"QuotaLimitReached": "Üzgünüz, mevcut Token kullanımı veya istek sayısı bu anahtarın kota (quota) sınırına ulaştı. Lütfen bu anahtarın kotasını artırın veya daha sonra tekrar deneyin.",
|
102
102
|
"StreamChunkError": "Akış isteği mesaj parçası çözümleme hatası, lütfen mevcut API arayüzünün standartlara uygun olup olmadığını kontrol edin veya API sağlayıcınızla iletişime geçin.",
|
103
|
-
"SubscriptionPlanLimit": "Abonelik
|
103
|
+
"SubscriptionPlanLimit": "Abonelik puanlarınız tükenmiştir, bu özelliği kullanamazsınız. Lütfen daha yüksek bir plana geçin veya özel model API'sini yapılandırarak devam edin.",
|
104
104
|
"SystemTimeNotMatchError": "Üzgünüm, sistem saatiniz ile sunucu arasında bir uyumsuzluk var, lütfen sistem saatinizi kontrol edip tekrar deneyin",
|
105
105
|
"UnknownChatFetchError": "Üzgünüm, bilinmeyen bir istek hatasıyla karşılaştık. Lütfen aşağıdaki bilgileri kontrol edin veya tekrar deneyin."
|
106
106
|
},
|
@@ -1034,6 +1034,9 @@
|
|
1034
1034
|
"jina-deepsearch-v1": {
|
1035
1035
|
"description": "Derin arama, web araması, okuma ve akıl yürütmeyi birleştirerek kapsamlı bir araştırma yapar. Bunu, araştırma görevlerinizi kabul eden bir ajan olarak düşünebilirsiniz - geniş bir arama yapar ve birden fazla yineleme ile cevap verir. Bu süreç, sürekli araştırma, akıl yürütme ve sorunları çeşitli açılardan çözmeyi içerir. Bu, doğrudan önceden eğitilmiş verilerden cevaplar üreten standart büyük modellerle ve tek seferlik yüzey aramasına dayanan geleneksel RAG sistemleriyle temelde farklıdır."
|
1036
1036
|
},
|
1037
|
+
"kimi-latest": {
|
1038
|
+
"description": "Kimi akıllı asistan ürünü, en son Kimi büyük modelini kullanır ve henüz kararlı olmayan özellikler içerebilir. Görüntü anlayışını desteklerken, isteğin bağlam uzunluğuna göre 8k/32k/128k modelini faturalama modeli olarak otomatik olarak seçecektir."
|
1039
|
+
},
|
1037
1040
|
"learnlm-1.5-pro-experimental": {
|
1038
1041
|
"description": "LearnLM, öğrenme bilimleri ilkelerine uygun olarak eğitilmiş, görev odaklı deneysel bir dil modelidir. Eğitim ve öğrenim senaryolarında sistem talimatlarını takip edebilir ve uzman bir mentor olarak görev alabilir."
|
1039
1042
|
},
|
@@ -1349,6 +1352,9 @@
|
|
1349
1352
|
"moonshot-v1-8k-vision-preview": {
|
1350
1353
|
"description": "Kimi görsel modeli (moonshot-v1-8k-vision-preview/moonshot-v1-32k-vision-preview/moonshot-v1-128k-vision-preview gibi) resim içeriğini anlayabilir, resim metni, resim rengi ve nesne şekilleri gibi içerikleri kapsar."
|
1351
1354
|
},
|
1355
|
+
"moonshot-v1-auto": {
|
1356
|
+
"description": "Moonshot V1 Auto, mevcut bağlamın kullandığı Token sayısına göre uygun modeli seçebilir."
|
1357
|
+
},
|
1352
1358
|
"nousresearch/hermes-2-pro-llama-3-8b": {
|
1353
1359
|
"description": "Hermes 2 Pro Llama 3 8B, Nous Hermes 2'nin güncellenmiş versiyonudur ve en son iç geliştirme veri setlerini içermektedir."
|
1354
1360
|
},
|
@@ -1571,6 +1577,9 @@
|
|
1571
1577
|
"sonar-reasoning": {
|
1572
1578
|
"description": "DeepSeek akıl yürütme modeli tarafından desteklenen yeni API ürünü."
|
1573
1579
|
},
|
1580
|
+
"sonar-reasoning-pro": {
|
1581
|
+
"description": "DeepSeek'in akıl yürütme modeli tarafından desteklenen yeni API ürünü."
|
1582
|
+
},
|
1574
1583
|
"step-1-128k": {
|
1575
1584
|
"description": "Performans ve maliyet arasında denge sağlar, genel senaryolar için uygundur."
|
1576
1585
|
},
|
package/locales/vi-VN/error.json
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
"ProviderBizError": "Yêu cầu dịch vụ {{provider}} gặp sự cố, vui lòng kiểm tra thông tin dưới đây hoặc thử lại",
|
101
101
|
"QuotaLimitReached": "Xin lỗi, lượng Token hiện tại hoặc số lần yêu cầu đã đạt đến giới hạn quota của khóa này, vui lòng tăng quota của khóa hoặc thử lại sau.",
|
102
102
|
"StreamChunkError": "Lỗi phân tích khối tin nhắn yêu cầu luồng, vui lòng kiểm tra xem API hiện tại có tuân thủ tiêu chuẩn hay không, hoặc liên hệ với nhà cung cấp API của bạn để được tư vấn.",
|
103
|
-
"SubscriptionPlanLimit": "
|
103
|
+
"SubscriptionPlanLimit": "Điểm đăng ký của bạn đã hết, không thể sử dụng tính năng này. Vui lòng nâng cấp lên gói cao hơn hoặc cấu hình API mô hình tùy chỉnh để tiếp tục sử dụng.",
|
104
104
|
"SystemTimeNotMatchError": "Xin lỗi, thời gian hệ thống của bạn không khớp với máy chủ, vui lòng kiểm tra lại thời gian hệ thống của bạn và thử lại",
|
105
105
|
"UnknownChatFetchError": "Xin lỗi, đã xảy ra lỗi yêu cầu không xác định. Vui lòng kiểm tra hoặc thử lại theo thông tin dưới đây."
|
106
106
|
},
|
@@ -1034,6 +1034,9 @@
|
|
1034
1034
|
"jina-deepsearch-v1": {
|
1035
1035
|
"description": "Tìm kiếm sâu kết hợp tìm kiếm trên mạng, đọc và suy luận, có thể thực hiện điều tra toàn diện. Bạn có thể coi nó như một đại lý, nhận nhiệm vụ nghiên cứu của bạn - nó sẽ thực hiện tìm kiếm rộng rãi và qua nhiều lần lặp lại trước khi đưa ra câu trả lời. Quá trình này liên quan đến nghiên cứu liên tục, suy luận và giải quyết vấn đề từ nhiều góc độ. Điều này khác biệt hoàn toàn với việc tạo ra câu trả lời trực tiếp từ dữ liệu đã được huấn luyện trước của các mô hình lớn tiêu chuẩn và các hệ thống RAG truyền thống dựa vào tìm kiếm bề mặt một lần."
|
1036
1036
|
},
|
1037
|
+
"kimi-latest": {
|
1038
|
+
"description": "Sản phẩm trợ lý thông minh Kimi sử dụng mô hình lớn Kimi mới nhất, có thể chứa các tính năng chưa ổn định. Hỗ trợ hiểu hình ảnh, đồng thời tự động chọn mô hình 8k/32k/128k làm mô hình tính phí dựa trên độ dài ngữ cảnh yêu cầu."
|
1039
|
+
},
|
1037
1040
|
"learnlm-1.5-pro-experimental": {
|
1038
1041
|
"description": "LearnLM là một mô hình ngôn ngữ thử nghiệm, chuyên biệt cho các nhiệm vụ, được đào tạo để tuân theo các nguyên tắc khoa học học tập, có thể tuân theo các chỉ dẫn hệ thống trong các tình huống giảng dạy và học tập, đóng vai trò như một người hướng dẫn chuyên gia."
|
1039
1042
|
},
|
@@ -1349,6 +1352,9 @@
|
|
1349
1352
|
"moonshot-v1-8k-vision-preview": {
|
1350
1353
|
"description": "Mô hình hình ảnh Kimi (bao gồm moonshot-v1-8k-vision-preview/moonshot-v1-32k-vision-preview/moonshot-v1-128k-vision-preview, v.v.) có khả năng hiểu nội dung hình ảnh, bao gồm văn bản hình ảnh, màu sắc hình ảnh và hình dạng vật thể."
|
1351
1354
|
},
|
1355
|
+
"moonshot-v1-auto": {
|
1356
|
+
"description": "Moonshot V1 Auto có thể chọn mô hình phù hợp dựa trên số lượng Tokens hiện tại đang chiếm dụng trong ngữ cảnh."
|
1357
|
+
},
|
1352
1358
|
"nousresearch/hermes-2-pro-llama-3-8b": {
|
1353
1359
|
"description": "Hermes 2 Pro Llama 3 8B là phiên bản nâng cấp của Nous Hermes 2, bao gồm bộ dữ liệu phát triển nội bộ mới nhất."
|
1354
1360
|
},
|
@@ -1571,6 +1577,9 @@
|
|
1571
1577
|
"sonar-reasoning": {
|
1572
1578
|
"description": "Sản phẩm API mới được hỗ trợ bởi mô hình suy luận của DeepSeek."
|
1573
1579
|
},
|
1580
|
+
"sonar-reasoning-pro": {
|
1581
|
+
"description": "Sản phẩm API mới được hỗ trợ bởi mô hình suy diễn DeepSeek."
|
1582
|
+
},
|
1574
1583
|
"step-1-128k": {
|
1575
1584
|
"description": "Cân bằng hiệu suất và chi phí, phù hợp cho các tình huống chung."
|
1576
1585
|
},
|
package/locales/zh-CN/error.json
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
"OllamaServiceUnavailable": "Ollama 服务连接失败,请检查 Ollama 是否运行正常,或是否正确设置 Ollama 的跨域配置",
|
101
101
|
"AgentRuntimeError": "Lobe AI Runtime 执行出错,请根据以下信息排查或重试",
|
102
102
|
"FreePlanLimit": "当前为免费用户,无法使用该功能,请升级到付费计划后继续使用",
|
103
|
-
"SubscriptionPlanLimit": "
|
103
|
+
"SubscriptionPlanLimit": "您的订阅积分已用尽,无法使用该功能,请升级到更高计划,或配置自定义模型 API 后继续使用",
|
104
104
|
"InvalidGithubToken": "Github PAT 不正确或为空,请检查 Github PAT 后重试",
|
105
105
|
"ConnectionCheckFailed": "请求返回为空,请检查 API 代理地址末尾是否未包含 `/v1`"
|
106
106
|
},
|
@@ -1034,6 +1034,9 @@
|
|
1034
1034
|
"jina-deepsearch-v1": {
|
1035
1035
|
"description": "深度搜索结合了网络搜索、阅读和推理,可进行全面调查。您可以将其视为一个代理,接受您的研究任务 - 它会进行广泛搜索并经过多次迭代,然后才能给出答案。这个过程涉及持续的研究、推理和从各个角度解决问题。这与直接从预训练数据生成答案的标准大模型以及依赖一次性表面搜索的传统 RAG 系统有着根本的不同。"
|
1036
1036
|
},
|
1037
|
+
"kimi-latest": {
|
1038
|
+
"description": "Kimi 智能助手产品使用最新的 Kimi 大模型,可能包含尚未稳定的特性。支持图片理解,同时会自动根据请求的上下文长度选择 8k/32k/128k 模型作为计费模型"
|
1039
|
+
},
|
1037
1040
|
"learnlm-1.5-pro-experimental": {
|
1038
1041
|
"description": "LearnLM 是一个实验性的、特定于任务的语言模型,经过训练以符合学习科学原则,可在教学和学习场景中遵循系统指令,充当专家导师等。"
|
1039
1042
|
},
|
@@ -1349,6 +1352,9 @@
|
|
1349
1352
|
"moonshot-v1-8k-vision-preview": {
|
1350
1353
|
"description": "Kimi 视觉模型(包括 moonshot-v1-8k-vision-preview/moonshot-v1-32k-vision-preview/moonshot-v1-128k-vision-preview 等)能够理解图片内容,包括图片文字、图片颜色和物体形状等内容。"
|
1351
1354
|
},
|
1355
|
+
"moonshot-v1-auto": {
|
1356
|
+
"description": "Moonshot V1 Auto 可以根据当前上下文占用的 Tokens 数量来选择合适的模型"
|
1357
|
+
},
|
1352
1358
|
"nousresearch/hermes-2-pro-llama-3-8b": {
|
1353
1359
|
"description": "Hermes 2 Pro Llama 3 8B 是 Nous Hermes 2的升级版本,包含最新的内部开发的数据集。"
|
1354
1360
|
},
|
@@ -1571,6 +1577,9 @@
|
|
1571
1577
|
"sonar-reasoning": {
|
1572
1578
|
"description": "由 DeepSeek 推理模型提供支持的新 API 产品。"
|
1573
1579
|
},
|
1580
|
+
"sonar-reasoning-pro": {
|
1581
|
+
"description": "由 DeepSeek 推理模型提供支持的新 API 产品。"
|
1582
|
+
},
|
1574
1583
|
"step-1-128k": {
|
1575
1584
|
"description": "平衡性能与成本,适合一般场景。"
|
1576
1585
|
},
|
package/locales/zh-TW/error.json
CHANGED
@@ -100,7 +100,7 @@
|
|
100
100
|
"ProviderBizError": "請求 {{provider}} 服務出錯,請根據以下資訊排查或重試",
|
101
101
|
"QuotaLimitReached": "很抱歉,當前 Token 用量或請求次數已達該金鑰的配額上限,請增加該金鑰的配額或稍後再試",
|
102
102
|
"StreamChunkError": "流式請求的消息塊解析錯誤,請檢查當前 API 介面是否符合標準規範,或聯繫你的 API 供應商諮詢",
|
103
|
-
"SubscriptionPlanLimit": "
|
103
|
+
"SubscriptionPlanLimit": "您的訂閱積分已用盡,無法使用該功能,請升級到更高計劃,或配置自訂模型 API 後繼續使用",
|
104
104
|
"SystemTimeNotMatchError": "很抱歉,您的系統時間與伺服器不匹配,請檢查您的系統時間後重試",
|
105
105
|
"UnknownChatFetchError": "很抱歉,遇到未知請求錯誤,請根據以下資訊排查或重試"
|
106
106
|
},
|
@@ -1034,6 +1034,9 @@
|
|
1034
1034
|
"jina-deepsearch-v1": {
|
1035
1035
|
"description": "深度搜索結合了網路搜索、閱讀和推理,可進行全面調查。您可以將其視為一個代理,接受您的研究任務 - 它會進行廣泛搜索並經過多次迭代,然後才能給出答案。這個過程涉及持續的研究、推理和從各個角度解決問題。這與直接從預訓練數據生成答案的標準大模型以及依賴一次性表面搜索的傳統 RAG 系統有著根本的不同。"
|
1036
1036
|
},
|
1037
|
+
"kimi-latest": {
|
1038
|
+
"description": "Kimi 智能助手產品使用最新的 Kimi 大模型,可能包含尚未穩定的特性。支持圖片理解,同時會自動根據請求的上下文長度選擇 8k/32k/128k 模型作為計費模型"
|
1039
|
+
},
|
1037
1040
|
"learnlm-1.5-pro-experimental": {
|
1038
1041
|
"description": "LearnLM 是一個實驗性的、特定於任務的語言模型,經過訓練以符合學習科學原則,可在教學和學習場景中遵循系統指令,充當專家導師等。"
|
1039
1042
|
},
|
@@ -1349,6 +1352,9 @@
|
|
1349
1352
|
"moonshot-v1-8k-vision-preview": {
|
1350
1353
|
"description": "Kimi 視覺模型(包括 moonshot-v1-8k-vision-preview/moonshot-v1-32k-vision-preview/moonshot-v1-128k-vision-preview 等)能夠理解圖片內容,包括圖片文字、圖片顏色和物體形狀等內容。"
|
1351
1354
|
},
|
1355
|
+
"moonshot-v1-auto": {
|
1356
|
+
"description": "Moonshot V1 Auto 可以根據當前上下文佔用的 Tokens 數量來選擇合適的模型"
|
1357
|
+
},
|
1352
1358
|
"nousresearch/hermes-2-pro-llama-3-8b": {
|
1353
1359
|
"description": "Hermes 2 Pro Llama 3 8B 是 Nous Hermes 2 的升級版本,包含最新的內部開發的數據集。"
|
1354
1360
|
},
|
@@ -1571,6 +1577,9 @@
|
|
1571
1577
|
"sonar-reasoning": {
|
1572
1578
|
"description": "由 DeepSeek 推理模型提供支持的新 API 產品。"
|
1573
1579
|
},
|
1580
|
+
"sonar-reasoning-pro": {
|
1581
|
+
"description": "由 DeepSeek 推理模型提供支援的新 API 產品。"
|
1582
|
+
},
|
1574
1583
|
"step-1-128k": {
|
1575
1584
|
"description": "平衡性能與成本,適合一般場景。"
|
1576
1585
|
},
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.61.
|
3
|
+
"version": "1.61.4",
|
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",
|
@@ -56,6 +56,7 @@ export const checkAuth =
|
|
56
56
|
return createErrorResponse(ChatErrorType.SystemTimeNotMatchError, e);
|
57
57
|
|
58
58
|
// other issue will be internal server error
|
59
|
+
console.error(e);
|
59
60
|
return createErrorResponse(ChatErrorType.InternalServerError, {
|
60
61
|
error: e,
|
61
62
|
provider: params?.provider,
|
@@ -6,17 +6,28 @@ const perplexityChatModels: AIChatModelCard[] = [
|
|
6
6
|
reasoning: true,
|
7
7
|
},
|
8
8
|
contextWindowTokens: 127_072,
|
9
|
-
description:
|
10
|
-
|
9
|
+
description: '由 DeepSeek 推理模型提供支持的新 API 产品。',
|
10
|
+
displayName: 'Sonar Reasoning Pro',
|
11
|
+
enabled: true,
|
12
|
+
id: 'sonar-reasoning-pro',
|
13
|
+
maxOutput: 8192,
|
14
|
+
type: 'chat',
|
15
|
+
},
|
16
|
+
{
|
17
|
+
abilities: {
|
18
|
+
reasoning: true,
|
19
|
+
},
|
20
|
+
contextWindowTokens: 127_072,
|
21
|
+
description: '由 DeepSeek 推理模型提供支持的新 API 产品。',
|
11
22
|
displayName: 'Sonar Reasoning',
|
12
23
|
enabled: true,
|
13
24
|
id: 'sonar-reasoning',
|
25
|
+
maxOutput: 8192,
|
14
26
|
type: 'chat',
|
15
27
|
},
|
16
28
|
{
|
17
29
|
contextWindowTokens: 200_000,
|
18
|
-
description:
|
19
|
-
'支持搜索上下文的高级搜索产品,支持高级查询和跟进。',
|
30
|
+
description: '支持搜索上下文的高级搜索产品,支持高级查询和跟进。',
|
20
31
|
displayName: 'Sonar Pro',
|
21
32
|
enabled: true,
|
22
33
|
id: 'sonar-pro',
|
@@ -24,8 +35,7 @@ const perplexityChatModels: AIChatModelCard[] = [
|
|
24
35
|
},
|
25
36
|
{
|
26
37
|
contextWindowTokens: 127_072,
|
27
|
-
description:
|
28
|
-
'基于搜索上下文的轻量级搜索产品,比 Sonar Pro 更快、更便宜。',
|
38
|
+
description: '基于搜索上下文的轻量级搜索产品,比 Sonar Pro 更快、更便宜。',
|
29
39
|
displayName: 'Sonar',
|
30
40
|
enabled: true,
|
31
41
|
id: 'sonar',
|
@@ -5,24 +5,21 @@ const Perplexity: ModelProviderCard = {
|
|
5
5
|
chatModels: [
|
6
6
|
{
|
7
7
|
contextWindowTokens: 127_072,
|
8
|
-
description:
|
9
|
-
'由 DeepSeek 推理模型提供支持的新 API 产品。',
|
8
|
+
description: '由 DeepSeek 推理模型提供支持的新 API 产品。',
|
10
9
|
displayName: 'Sonar Reasoning',
|
11
10
|
enabled: true,
|
12
11
|
id: 'sonar-reasoning',
|
13
12
|
},
|
14
13
|
{
|
15
14
|
contextWindowTokens: 200_000,
|
16
|
-
description:
|
17
|
-
'支持搜索上下文的高级搜索产品,支持高级查询和跟进。',
|
15
|
+
description: '支持搜索上下文的高级搜索产品,支持高级查询和跟进。',
|
18
16
|
displayName: 'Sonar Pro',
|
19
17
|
enabled: true,
|
20
18
|
id: 'sonar-pro',
|
21
19
|
},
|
22
20
|
{
|
23
21
|
contextWindowTokens: 127_072,
|
24
|
-
description:
|
25
|
-
'基于搜索上下文的轻量级搜索产品,比 Sonar Pro 更快、更便宜。',
|
22
|
+
description: '基于搜索上下文的轻量级搜索产品,比 Sonar Pro 更快、更便宜。',
|
26
23
|
displayName: 'Sonar',
|
27
24
|
enabled: true,
|
28
25
|
id: 'sonar',
|
@@ -60,10 +57,16 @@ const Perplexity: ModelProviderCard = {
|
|
60
57
|
placeholder: 'https://api.perplexity.ai',
|
61
58
|
},
|
62
59
|
settings: {
|
60
|
+
// perplexity doesn't support CORS
|
61
|
+
disableBrowserRequest: true,
|
63
62
|
proxyUrl: {
|
64
63
|
placeholder: 'https://api.perplexity.ai',
|
65
64
|
},
|
66
65
|
sdkType: 'openai',
|
66
|
+
smoothing: {
|
67
|
+
speed: 2,
|
68
|
+
text: true,
|
69
|
+
},
|
67
70
|
},
|
68
71
|
url: 'https://www.perplexity.ai',
|
69
72
|
};
|
@@ -1,16 +1,18 @@
|
|
1
1
|
// @vitest-environment node
|
2
|
-
import
|
3
|
-
import { Mock, afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
2
|
+
import { afterEach, beforeEach, describe, expect, it, vi } from 'vitest';
|
4
3
|
|
5
|
-
import {
|
4
|
+
import { LobeOpenAICompatibleRuntime, ModelProvider } from '@/libs/agent-runtime';
|
5
|
+
import { testProvider } from '@/libs/agent-runtime/providerTestUtils';
|
6
6
|
|
7
|
-
import * as debugStreamModule from '../utils/debugStream';
|
8
7
|
import { LobePerplexityAI } from './index';
|
9
8
|
|
10
|
-
|
11
|
-
|
12
|
-
|
13
|
-
|
9
|
+
testProvider({
|
10
|
+
Runtime: LobePerplexityAI,
|
11
|
+
provider: ModelProvider.Perplexity,
|
12
|
+
defaultBaseURL: 'https://api.perplexity.ai',
|
13
|
+
chatDebugEnv: 'DEBUG_PERPLEXITY_CHAT_COMPLETION',
|
14
|
+
chatModel: 'sonar',
|
15
|
+
});
|
14
16
|
|
15
17
|
// Mock the console.error to avoid polluting test output
|
16
18
|
vi.spyOn(console, 'error').mockImplementation(() => {});
|
@@ -31,221 +33,7 @@ afterEach(() => {
|
|
31
33
|
});
|
32
34
|
|
33
35
|
describe('LobePerplexityAI', () => {
|
34
|
-
describe('init', () => {
|
35
|
-
it('should correctly initialize with an API key', async () => {
|
36
|
-
const instance = new LobePerplexityAI({ apiKey: 'test_api_key' });
|
37
|
-
expect(instance).toBeInstanceOf(LobePerplexityAI);
|
38
|
-
expect(instance.baseURL).toEqual(defaultBaseURL);
|
39
|
-
});
|
40
|
-
});
|
41
|
-
|
42
36
|
describe('chat', () => {
|
43
|
-
describe('Error', () => {
|
44
|
-
it('should return OpenAIBizError with an openai error response when OpenAI.APIError is thrown', async () => {
|
45
|
-
// Arrange
|
46
|
-
const apiError = new OpenAI.APIError(
|
47
|
-
400,
|
48
|
-
{
|
49
|
-
status: 400,
|
50
|
-
error: {
|
51
|
-
message: 'Bad Request',
|
52
|
-
},
|
53
|
-
},
|
54
|
-
'Error message',
|
55
|
-
{},
|
56
|
-
);
|
57
|
-
|
58
|
-
vi.spyOn(instance['client'].chat.completions, 'create').mockRejectedValue(apiError);
|
59
|
-
|
60
|
-
// Act
|
61
|
-
try {
|
62
|
-
await instance.chat({
|
63
|
-
messages: [{ content: 'Hello', role: 'user' }],
|
64
|
-
model: 'text-davinci-003',
|
65
|
-
temperature: 0,
|
66
|
-
});
|
67
|
-
} catch (e) {
|
68
|
-
expect(e).toEqual({
|
69
|
-
endpoint: defaultBaseURL,
|
70
|
-
error: {
|
71
|
-
error: { message: 'Bad Request' },
|
72
|
-
status: 400,
|
73
|
-
},
|
74
|
-
errorType: bizErrorType,
|
75
|
-
provider,
|
76
|
-
});
|
77
|
-
}
|
78
|
-
});
|
79
|
-
|
80
|
-
it('should throw AgentRuntimeError with NoOpenAIAPIKey if no apiKey is provided', async () => {
|
81
|
-
try {
|
82
|
-
new LobePerplexityAI({});
|
83
|
-
} catch (e) {
|
84
|
-
expect(e).toEqual({ errorType: invalidErrorType });
|
85
|
-
}
|
86
|
-
});
|
87
|
-
|
88
|
-
it('should return OpenAIBizError with the cause when OpenAI.APIError is thrown with cause', async () => {
|
89
|
-
// Arrange
|
90
|
-
const errorInfo = {
|
91
|
-
stack: 'abc',
|
92
|
-
cause: {
|
93
|
-
message: 'api is undefined',
|
94
|
-
},
|
95
|
-
};
|
96
|
-
const apiError = new OpenAI.APIError(400, errorInfo, 'module error', {});
|
97
|
-
|
98
|
-
vi.spyOn(instance['client'].chat.completions, 'create').mockRejectedValue(apiError);
|
99
|
-
|
100
|
-
// Act
|
101
|
-
try {
|
102
|
-
await instance.chat({
|
103
|
-
messages: [{ content: 'Hello', role: 'user' }],
|
104
|
-
model: 'text-davinci-003',
|
105
|
-
temperature: 0,
|
106
|
-
});
|
107
|
-
} catch (e) {
|
108
|
-
expect(e).toEqual({
|
109
|
-
endpoint: defaultBaseURL,
|
110
|
-
error: {
|
111
|
-
cause: { message: 'api is undefined' },
|
112
|
-
stack: 'abc',
|
113
|
-
},
|
114
|
-
errorType: bizErrorType,
|
115
|
-
provider,
|
116
|
-
});
|
117
|
-
}
|
118
|
-
});
|
119
|
-
|
120
|
-
it('should return OpenAIBizError with an cause response with desensitize Url', async () => {
|
121
|
-
// Arrange
|
122
|
-
const errorInfo = {
|
123
|
-
stack: 'abc',
|
124
|
-
cause: { message: 'api is undefined' },
|
125
|
-
};
|
126
|
-
const apiError = new OpenAI.APIError(400, errorInfo, 'module error', {});
|
127
|
-
|
128
|
-
instance = new LobePerplexityAI({
|
129
|
-
apiKey: 'test',
|
130
|
-
|
131
|
-
baseURL: 'https://api.abc.com/v1',
|
132
|
-
});
|
133
|
-
|
134
|
-
vi.spyOn(instance['client'].chat.completions, 'create').mockRejectedValue(apiError);
|
135
|
-
|
136
|
-
// Act
|
137
|
-
try {
|
138
|
-
await instance.chat({
|
139
|
-
messages: [{ content: 'Hello', role: 'user' }],
|
140
|
-
model: 'gpt-3.5-turbo',
|
141
|
-
temperature: 0,
|
142
|
-
});
|
143
|
-
} catch (e) {
|
144
|
-
expect(e).toEqual({
|
145
|
-
endpoint: 'https://api.***.com/v1',
|
146
|
-
error: {
|
147
|
-
cause: { message: 'api is undefined' },
|
148
|
-
stack: 'abc',
|
149
|
-
},
|
150
|
-
errorType: bizErrorType,
|
151
|
-
provider,
|
152
|
-
});
|
153
|
-
}
|
154
|
-
});
|
155
|
-
|
156
|
-
it('should throw an InvalidMoonshotAPIKey error type on 401 status code', async () => {
|
157
|
-
// Mock the API call to simulate a 401 error
|
158
|
-
const error = new Error('Unauthorized') as any;
|
159
|
-
error.status = 401;
|
160
|
-
vi.mocked(instance['client'].chat.completions.create).mockRejectedValue(error);
|
161
|
-
|
162
|
-
try {
|
163
|
-
await instance.chat({
|
164
|
-
messages: [{ content: 'Hello', role: 'user' }],
|
165
|
-
model: 'gpt-3.5-turbo',
|
166
|
-
temperature: 0,
|
167
|
-
});
|
168
|
-
} catch (e) {
|
169
|
-
// Expect the chat method to throw an error with InvalidMoonshotAPIKey
|
170
|
-
expect(e).toEqual({
|
171
|
-
endpoint: defaultBaseURL,
|
172
|
-
error: new Error('Unauthorized'),
|
173
|
-
errorType: invalidErrorType,
|
174
|
-
provider,
|
175
|
-
});
|
176
|
-
}
|
177
|
-
});
|
178
|
-
|
179
|
-
it('should return AgentRuntimeError for non-OpenAI errors', async () => {
|
180
|
-
// Arrange
|
181
|
-
const genericError = new Error('Generic Error');
|
182
|
-
|
183
|
-
vi.spyOn(instance['client'].chat.completions, 'create').mockRejectedValue(genericError);
|
184
|
-
|
185
|
-
// Act
|
186
|
-
try {
|
187
|
-
await instance.chat({
|
188
|
-
messages: [{ content: 'Hello', role: 'user' }],
|
189
|
-
model: 'text-davinci-003',
|
190
|
-
temperature: 0,
|
191
|
-
});
|
192
|
-
} catch (e) {
|
193
|
-
expect(e).toEqual({
|
194
|
-
endpoint: defaultBaseURL,
|
195
|
-
errorType: 'AgentRuntimeError',
|
196
|
-
provider,
|
197
|
-
error: {
|
198
|
-
name: genericError.name,
|
199
|
-
cause: genericError.cause,
|
200
|
-
message: genericError.message,
|
201
|
-
stack: genericError.stack,
|
202
|
-
},
|
203
|
-
});
|
204
|
-
}
|
205
|
-
});
|
206
|
-
});
|
207
|
-
|
208
|
-
describe('DEBUG', () => {
|
209
|
-
it('should call debugStream and return StreamingTextResponse when DEBUG_PERPLEXITY_CHAT_COMPLETION is 1', async () => {
|
210
|
-
// Arrange
|
211
|
-
const mockProdStream = new ReadableStream() as any; // 模拟的 prod 流
|
212
|
-
const mockDebugStream = new ReadableStream({
|
213
|
-
start(controller) {
|
214
|
-
controller.enqueue('Debug stream content');
|
215
|
-
controller.close();
|
216
|
-
},
|
217
|
-
}) as any;
|
218
|
-
mockDebugStream.toReadableStream = () => mockDebugStream; // 添加 toReadableStream 方法
|
219
|
-
|
220
|
-
// 模拟 chat.completions.create 返回值,包括模拟的 tee 方法
|
221
|
-
(instance['client'].chat.completions.create as Mock).mockResolvedValue({
|
222
|
-
tee: () => [mockProdStream, { toReadableStream: () => mockDebugStream }],
|
223
|
-
});
|
224
|
-
|
225
|
-
// 保存原始环境变量值
|
226
|
-
const originalDebugValue = process.env.DEBUG_PERPLEXITY_CHAT_COMPLETION;
|
227
|
-
|
228
|
-
// 模拟环境变量
|
229
|
-
process.env.DEBUG_PERPLEXITY_CHAT_COMPLETION = '1';
|
230
|
-
vi.spyOn(debugStreamModule, 'debugStream').mockImplementation(() => Promise.resolve());
|
231
|
-
|
232
|
-
// 执行测试
|
233
|
-
// 运行你的测试函数,确保它会在条件满足时调用 debugStream
|
234
|
-
// 假设的测试函数调用,你可能需要根据实际情况调整
|
235
|
-
await instance.chat({
|
236
|
-
messages: [{ content: 'Hello', role: 'user' }],
|
237
|
-
model: 'text-davinci-003',
|
238
|
-
temperature: 0,
|
239
|
-
});
|
240
|
-
|
241
|
-
// 验证 debugStream 被调用
|
242
|
-
expect(debugStreamModule.debugStream).toHaveBeenCalled();
|
243
|
-
|
244
|
-
// 恢复原始环境变量值
|
245
|
-
process.env.DEBUG_PERPLEXITY_CHAT_COMPLETION = originalDebugValue;
|
246
|
-
});
|
247
|
-
});
|
248
|
-
|
249
37
|
it('should call chat method with temperature', async () => {
|
250
38
|
vi.spyOn(instance['client'].chat.completions, 'create').mockResolvedValue(
|
251
39
|
new ReadableStream() as any,
|
@@ -121,7 +121,7 @@ export default {
|
|
121
121
|
// cloud
|
122
122
|
FreePlanLimit: '当前为免费用户,无法使用该功能,请升级到付费计划后继续使用',
|
123
123
|
SubscriptionPlanLimit:
|
124
|
-
'
|
124
|
+
'您的订阅积分已用尽,无法使用该功能,请升级到更高计划,或配置自定义模型 API 后继续使用',
|
125
125
|
|
126
126
|
// Github Token
|
127
127
|
InvalidGithubToken: 'Github PAT 不正确或为空,请检查 Github PAT 后重试',
|