@lobehub/chat 1.123.0 → 1.123.2
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/common.json +1 -0
- package/locales/ar/modelProvider.json +26 -0
- package/locales/ar/providers.json +3 -0
- package/locales/bg-BG/common.json +1 -0
- package/locales/bg-BG/modelProvider.json +26 -0
- package/locales/bg-BG/providers.json +3 -0
- package/locales/de-DE/common.json +1 -0
- package/locales/de-DE/modelProvider.json +26 -0
- package/locales/de-DE/providers.json +3 -0
- package/locales/en-US/common.json +1 -0
- package/locales/en-US/modelProvider.json +26 -0
- package/locales/en-US/providers.json +3 -0
- package/locales/es-ES/common.json +1 -0
- package/locales/es-ES/modelProvider.json +26 -0
- package/locales/es-ES/providers.json +3 -0
- package/locales/fa-IR/common.json +1 -0
- package/locales/fa-IR/modelProvider.json +26 -0
- package/locales/fa-IR/providers.json +3 -0
- package/locales/fr-FR/common.json +1 -0
- package/locales/fr-FR/modelProvider.json +26 -0
- package/locales/fr-FR/providers.json +3 -0
- package/locales/it-IT/common.json +1 -0
- package/locales/it-IT/modelProvider.json +26 -0
- package/locales/it-IT/providers.json +3 -0
- package/locales/ja-JP/common.json +1 -0
- package/locales/ja-JP/modelProvider.json +26 -0
- package/locales/ja-JP/providers.json +3 -0
- package/locales/ko-KR/common.json +1 -0
- package/locales/ko-KR/modelProvider.json +26 -0
- package/locales/ko-KR/providers.json +3 -0
- package/locales/nl-NL/common.json +1 -0
- package/locales/nl-NL/modelProvider.json +26 -0
- package/locales/nl-NL/providers.json +3 -0
- package/locales/pl-PL/common.json +1 -0
- package/locales/pl-PL/modelProvider.json +26 -0
- package/locales/pl-PL/providers.json +3 -0
- package/locales/pt-BR/common.json +1 -0
- package/locales/pt-BR/modelProvider.json +26 -0
- package/locales/pt-BR/providers.json +3 -0
- package/locales/ru-RU/common.json +1 -0
- package/locales/ru-RU/modelProvider.json +26 -0
- package/locales/ru-RU/providers.json +3 -0
- package/locales/tr-TR/common.json +1 -0
- package/locales/tr-TR/modelProvider.json +26 -0
- package/locales/tr-TR/providers.json +3 -0
- package/locales/vi-VN/common.json +1 -0
- package/locales/vi-VN/modelProvider.json +26 -0
- package/locales/vi-VN/providers.json +3 -0
- package/locales/zh-CN/common.json +1 -0
- package/locales/zh-CN/modelProvider.json +26 -0
- package/locales/zh-CN/providers.json +3 -0
- package/locales/zh-TW/common.json +1 -0
- package/locales/zh-TW/modelProvider.json +26 -0
- package/locales/zh-TW/providers.json +3 -0
- package/package.json +1 -1
- package/packages/database/src/models/__tests__/file.test.ts +4 -4
- package/packages/database/src/models/__tests__/session.test.ts +3 -3
- package/src/features/Conversation/components/ChatItem/ActionsBar.tsx +7 -0
- package/src/libs/next-auth/auth.config.ts +1 -0
- package/src/locales/default/common.ts +1 -0
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "서비스 제공자 검색...",
|
154
154
|
"sort": "사용자 정의 정렬"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "New API 플랫폼에서 제공하는 API 키",
|
159
|
+
"placeholder": "New API API 키",
|
160
|
+
"required": "API 키는 필수입니다",
|
161
|
+
"title": "API 키"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "New API 서비스의 API 주소, 대부분 /v1을 포함해야 합니다",
|
165
|
+
"title": "API 주소"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "New API 활성화"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "모델 일괄 선택 ({{count}}개)",
|
172
|
+
"fetch": "모델 목록 가져오기",
|
173
|
+
"selected": "선택된 모델",
|
174
|
+
"title": "사용 가능한 모델"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "프록시 주소가 올바르게 입력되었는지 테스트합니다",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "{{count}}개 모델 선택됨",
|
212
|
+
"title": "일괄 선택"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "귀하의 비밀 키와 프록시 주소 등은 <1>AES-GCM</1> 암호화 알고리즘을 사용하여 암호화됩니다",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius는 대규모 GPU 클러스터와 수직 통합 클라우드 플랫폼을 구축하여 전 세계 AI 혁신가들에게 고성능 인프라를 제공합니다."
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "오픈 소스 다중 AI 서비스 통합 전달 플랫폼"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI는 다양한 대형 언어 모델과 AI 이미지 생성을 제공하는 API 서비스 플랫폼으로, 유연하고 신뢰할 수 있으며 비용 효율적입니다. Llama3, Mistral 등 최신 오픈 소스 모델을 지원하며, 생성적 AI 응용 프로그램 개발을 위한 포괄적이고 사용자 친화적이며 자동 확장 가능한 API 솔루션을 제공하여 AI 스타트업의 빠른 발전에 적합합니다."
|
100
103
|
},
|
@@ -32,6 +32,7 @@
|
|
32
32
|
"blog": "Product Blog",
|
33
33
|
"branching": "Subonderwerp aanmaken",
|
34
34
|
"branchingDisable": "De functie 'Subonderwerp' is alleen beschikbaar in de serverversie. Als je deze functie wilt gebruiken, schakel dan over naar de serverimplementatiemodus of gebruik LobeChat Cloud.",
|
35
|
+
"branchingRequiresSavedTopic": "Het huidige onderwerp is niet opgeslagen. Sla het op om de subonderwerpfunctie te kunnen gebruiken.",
|
35
36
|
"cancel": "Annuleren",
|
36
37
|
"changelog": "Wijzigingslogboek",
|
37
38
|
"clientDB": {
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "Zoek providers...",
|
154
154
|
"sort": "Aangepaste sortering"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "API-sleutel geleverd door het New API-platform",
|
159
|
+
"placeholder": "New API API-sleutel",
|
160
|
+
"required": "API-sleutel is verplicht",
|
161
|
+
"title": "API-sleutel"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "API-adres van de New API-service, meestal met /v1",
|
165
|
+
"title": "API-adres"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "New API inschakelen"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "Modellen in batch selecteren ({{count}})",
|
172
|
+
"fetch": "Modelijst ophalen",
|
173
|
+
"selected": "Geselecteerde modellen",
|
174
|
+
"title": "Beschikbare modellen"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "Test of het proxyadres correct is ingevuld",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "{{count}} modellen geselecteerd",
|
212
|
+
"title": "Batchselectie"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "Je sleutel en proxy-adres worden versleuteld met <1>AES-GCM</1> encryptie-algoritme",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius biedt wereldwijde AI-innovators hoogwaardige infrastructuur door het bouwen van grootschalige GPU-clusters en een verticaal geïntegreerd cloudplatform."
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "Open source platform voor het samenvoegen en uniform doorsturen van meerdere AI-diensten"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI is een platform dat API-diensten biedt voor verschillende grote taalmodellen en AI-beeldgeneratie, flexibel, betrouwbaar en kosteneffectief. Het ondersteunt de nieuwste open-source modellen zoals Llama3 en Mistral, en biedt een uitgebreide, gebruiksvriendelijke en automatisch schaalbare API-oplossing voor de ontwikkeling van generatieve AI-toepassingen, geschikt voor de snelle groei van AI-startups."
|
100
103
|
},
|
@@ -32,6 +32,7 @@
|
|
32
32
|
"blog": "Blog produktowy",
|
33
33
|
"branching": "Utwórz podtemat",
|
34
34
|
"branchingDisable": "Funkcja „podtemat” jest dostępna tylko w wersji serwerowej. Aby skorzystać z tej funkcji, przełącz się na tryb wdrożenia serwera lub użyj LobeChat Cloud.",
|
35
|
+
"branchingRequiresSavedTopic": "Aktualny temat nie został zapisany, zapisz go, aby móc korzystać z funkcji podtematów",
|
35
36
|
"cancel": "Anuluj",
|
36
37
|
"changelog": "Dziennik zmian",
|
37
38
|
"clientDB": {
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "Szukaj dostawców...",
|
154
154
|
"sort": "Niestandardowe sortowanie"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "Klucz API dostarczany przez platformę New API",
|
159
|
+
"placeholder": "Klucz API New API",
|
160
|
+
"required": "Klucz API jest wymagany",
|
161
|
+
"title": "Klucz API"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "Adres API usługi New API, zazwyczaj wymaga dodania /v1",
|
165
|
+
"title": "Adres API"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "Włącz New API"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "Wybierz modele zbiorczo ({{count}} szt.)",
|
172
|
+
"fetch": "Pobierz listę modeli",
|
173
|
+
"selected": "Wybrane modele",
|
174
|
+
"title": "Dostępne modele"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "Test czy adres proxy jest poprawnie wypełniony",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "Wybrano {{count}} modeli",
|
212
|
+
"title": "Wybór zbiorczy"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "Twój klucz oraz adres proxy będą szyfrowane za pomocą <1>AES-GCM</1>",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius zapewnia wysokowydajną infrastrukturę dla globalnych innowatorów AI poprzez budowę dużych klastrów GPU i pionową integrację platformy chmurowej."
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "Otwarta platforma agregująca i jednolicie przekazująca wiele usług AI"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI to platforma oferująca API do różnych dużych modeli językowych i generacji obrazów AI, elastyczna, niezawodna i opłacalna. Wspiera najnowsze modele open-source, takie jak Llama3, Mistral, i oferuje kompleksowe, przyjazne dla użytkownika oraz automatycznie skalowalne rozwiązania API dla rozwoju aplikacji generatywnej AI, odpowiednie dla szybkiego rozwoju startupów AI."
|
100
103
|
},
|
@@ -32,6 +32,7 @@
|
|
32
32
|
"blog": "Blog de Produtos",
|
33
33
|
"branching": "Criar subtópico",
|
34
34
|
"branchingDisable": "A funcionalidade de \"subtópico\" está disponível apenas na versão do servidor. Se precisar dessa funcionalidade, mude para o modo de implantação no servidor ou use o LobeChat Cloud.",
|
35
|
+
"branchingRequiresSavedTopic": "O tópico atual não foi salvo. Salve-o para poder usar a funcionalidade de subtópicos.",
|
35
36
|
"cancel": "Cancelar",
|
36
37
|
"changelog": "Registro de alterações",
|
37
38
|
"clientDB": {
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "Pesquisar Provedores...",
|
154
154
|
"sort": "Ordenação Personalizada"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "Chave API fornecida pela plataforma New API",
|
159
|
+
"placeholder": "Chave API do New API",
|
160
|
+
"required": "A chave API é obrigatória",
|
161
|
+
"title": "Chave API"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "Endereço da API do serviço New API, geralmente precisa incluir /v1",
|
165
|
+
"title": "Endereço da API"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "Ativar New API"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "Selecionar modelos em lote ({{count}} itens)",
|
172
|
+
"fetch": "Obter lista de modelos",
|
173
|
+
"selected": "Modelos selecionados",
|
174
|
+
"title": "Modelos disponíveis"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "Teste se o endereço do proxy está corretamente preenchido",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "{{count}} modelos selecionados",
|
212
|
+
"title": "Seleção em lote"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "Sua chave e o endereço do proxy serão criptografados usando o algoritmo de criptografia <1>AES-GCM</1>",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius oferece infraestrutura de alto desempenho para inovadores em IA ao redor do mundo, construindo grandes clusters de GPU e uma plataforma de nuvem verticalmente integrada."
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "Plataforma de agregação e encaminhamento unificado de múltiplos serviços de IA de código aberto"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI é uma plataforma que oferece uma variedade de modelos de linguagem de grande escala e serviços de geração de imagens de IA, sendo flexível, confiável e econômica. Suporta os mais recentes modelos de código aberto, como Llama3 e Mistral, e fornece soluções de API abrangentes, amigáveis ao usuário e escaláveis para o desenvolvimento de aplicações de IA, adequadas para o rápido crescimento de startups de IA."
|
100
103
|
},
|
@@ -32,6 +32,7 @@
|
|
32
32
|
"blog": "Блог о продуктах",
|
33
33
|
"branching": "Создать подтему",
|
34
34
|
"branchingDisable": "Функция «Подтема» доступна только в серверной версии. Если вам нужна эта функция, переключитесь на серверный режим развертывания или используйте LobeChat Cloud.",
|
35
|
+
"branchingRequiresSavedTopic": "Текущая тема не сохранена, сохраните её, чтобы использовать функцию подтем.",
|
35
36
|
"cancel": "Отмена",
|
36
37
|
"changelog": "История изменений",
|
37
38
|
"clientDB": {
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "Поиск провайдеров...",
|
154
154
|
"sort": "Пользовательская сортировка"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "API-ключ, предоставляемый платформой New API",
|
159
|
+
"placeholder": "API-ключ New API",
|
160
|
+
"required": "API-ключ обязателен",
|
161
|
+
"title": "API-ключ"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "API-адрес сервиса New API, чаще всего требуется с /v1",
|
165
|
+
"title": "API-адрес"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "Включить New API"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "Выбрать модели пакетно ({{count}} шт.)",
|
172
|
+
"fetch": "Получить список моделей",
|
173
|
+
"selected": "Выбранные модели",
|
174
|
+
"title": "Доступные модели"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "Проверить правильность адреса прокси",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "Выбрано {{count}} моделей",
|
212
|
+
"title": "Пакетный выбор"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "Ваши ключи и адрес прокси будут зашифрованы с использованием <1>AES-GCM</1>",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius создает масштабируемые GPU-кластеры и вертикально интегрированную облачную платформу, предоставляя высокопроизводительную инфраструктуру для мировых инноваторов в области ИИ."
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "Открытая платформа для объединённой маршрутизации нескольких AI-сервисов"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI — это платформа, предлагающая API-сервисы для различных больших языковых моделей и генерации изображений AI, гибкая, надежная и экономически эффективная. Она поддерживает новейшие открытые модели, такие как Llama3, Mistral и предоставляет комплексные, удобные для пользователя и автоматически масштабируемые API-решения для разработки генеративных AI-приложений, подходящие для быстрого роста AI-стартапов."
|
100
103
|
},
|
@@ -32,6 +32,7 @@
|
|
32
32
|
"blog": "Ürün Blogu",
|
33
33
|
"branching": "Alt konu oluştur",
|
34
34
|
"branchingDisable": "«Alt konu» özelliği yalnızca sunucu sürümünde mevcuttur. Bu özelliği kullanmak için lütfen sunucu dağıtım moduna geçin veya LobeChat Cloud'u kullanın.",
|
35
|
+
"branchingRequiresSavedTopic": "Geçerli konu kaydedilmedi, alt konu özelliğini kullanmak için önce kaydedilmelidir",
|
35
36
|
"cancel": "İptal",
|
36
37
|
"changelog": "Changelog",
|
37
38
|
"clientDB": {
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "Hizmet sağlayıcıları ara...",
|
154
154
|
"sort": "Özel Sıralama"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "New API platformu tarafından sağlanan API anahtarı",
|
159
|
+
"placeholder": "New API API anahtarı",
|
160
|
+
"required": "API anahtarı gereklidir",
|
161
|
+
"title": "API Anahtarı"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "New API servisinin API adresi, çoğu zaman /v1 ile başlamalıdır",
|
165
|
+
"title": "API Adresi"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "New API'yi Etkinleştir"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "Toplu model seçimi ({{count}} adet)",
|
172
|
+
"fetch": "Model listesi alınıyor",
|
173
|
+
"selected": "Seçilen modeller",
|
174
|
+
"title": "Kullanılabilir Modeller"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "Proxy adresinin doğru girilip girilmediğini test edin",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "{{count}} model seçildi",
|
212
|
+
"title": "Toplu Seçim"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "Anahtarınız ve proxy adresi gibi bilgiler <1>AES-GCM</1> şifreleme algoritması ile şifrelenecektir",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius, büyük ölçekli GPU kümeleri ve dikey entegre bulut platformları oluşturarak, dünya çapındaki yapay zeka yenilikçilerine yüksek performanslı altyapı sağlar."
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "Açık kaynaklı çoklu AI hizmetlerini birleştiren ve yönlendiren platform"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI, çeşitli büyük dil modelleri ve yapay zeka görüntü üretimi API hizmetleri sunan bir platformdur. Esnek, güvenilir ve maliyet etkin bir yapıya sahiptir. Llama3, Mistral gibi en son açık kaynak modelleri desteklemekte ve üretken yapay zeka uygulama geliştirme için kapsamlı, kullanıcı dostu ve otomatik ölçeklenebilir API çözümleri sunmaktadır. Bu, yapay zeka girişimlerinin hızlı gelişimi için uygundur."
|
100
103
|
},
|
@@ -32,6 +32,7 @@
|
|
32
32
|
"blog": "Blog sản phẩm",
|
33
33
|
"branching": "Tạo chủ đề con",
|
34
34
|
"branchingDisable": "Chức năng «Chủ đề con» chỉ có sẵn trong phiên bản máy chủ. Nếu bạn cần chức năng này, hãy chuyển sang chế độ triển khai máy chủ hoặc sử dụng LobeChat Cloud.",
|
35
|
+
"branchingRequiresSavedTopic": "Chủ đề hiện tại chưa được lưu, vui lòng lưu trước khi sử dụng chức năng chủ đề con",
|
35
36
|
"cancel": "Hủy",
|
36
37
|
"changelog": "Nhật ký cập nhật",
|
37
38
|
"clientDB": {
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "Tìm kiếm nhà cung cấp...",
|
154
154
|
"sort": "Sắp xếp tùy chỉnh"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "Khóa API do nền tảng New API cung cấp",
|
159
|
+
"placeholder": "Khóa API New API",
|
160
|
+
"required": "Khóa API là bắt buộc",
|
161
|
+
"title": "Khóa API"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "Địa chỉ API của dịch vụ New API, thường cần kèm theo /v1",
|
165
|
+
"title": "Địa chỉ API"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "Kích hoạt New API"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "Chọn nhiều mô hình ({{count}} cái)",
|
172
|
+
"fetch": "Lấy danh sách mô hình",
|
173
|
+
"selected": "Mô hình đã chọn",
|
174
|
+
"title": "Mô hình khả dụng"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "Kiểm tra địa chỉ proxy có được nhập chính xác không",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "Đã chọn {{count}} mô hình",
|
212
|
+
"title": "Chọn nhiều"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "Khóa của bạn và địa chỉ proxy sẽ được mã hóa bằng thuật toán <1>AES-GCM</1>",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius cung cấp cơ sở hạ tầng hiệu suất cao cho các nhà đổi mới AI toàn cầu thông qua việc xây dựng cụm GPU quy mô lớn và nền tảng đám mây tích hợp dọc."
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "Nền tảng tổng hợp và chuyển tiếp nhiều dịch vụ AI mã nguồn mở"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI là một nền tảng cung cấp dịch vụ API cho nhiều mô hình ngôn ngữ lớn và tạo hình ảnh AI, linh hoạt, đáng tin cậy và hiệu quả về chi phí. Nó hỗ trợ các mô hình mã nguồn mở mới nhất như Llama3, Mistral, và cung cấp giải pháp API toàn diện, thân thiện với người dùng và tự động mở rộng cho phát triển ứng dụng AI, phù hợp cho sự phát triển nhanh chóng của các công ty khởi nghiệp AI."
|
100
103
|
},
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "搜索服务商...",
|
154
154
|
"sort": "自定义排序"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "New API 平台提供的 API 密钥",
|
159
|
+
"placeholder": "New API API 密钥",
|
160
|
+
"required": "API 密钥是必需的",
|
161
|
+
"title": "API 密钥"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "New API 服务的 API 地址,大部分时候需要带 /v1",
|
165
|
+
"title": "API 地址"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "启用 New API"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "批量选择模型 ({{count}} 个)",
|
172
|
+
"fetch": "获取模型列表",
|
173
|
+
"selected": "已选择的模型",
|
174
|
+
"title": "可用模型"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "测试代理地址是否正确填写",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "已选择 {{count}} 个模型",
|
212
|
+
"title": "批量选择"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "您的秘钥与代理地址等将使用 <1>AES-GCM</1> 加密算法进行加密",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius 通过构建大规模GPU集群和垂直整合的云平台,为全球AI创新者提供高性能基础设施。"
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "开源的多个 AI 服务聚合统一转发平台"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI 是一个提供多种大语言模型与 AI 图像生成的 API 服务的平台,灵活、可靠且具有成本效益。它支持 Llama3、Mistral 等最新的开源模型,并为生成式 AI 应用开发提供了全面、用户友好且自动扩展的 API 解决方案,适合 AI 初创公司的快速发展。"
|
100
103
|
},
|
@@ -153,6 +153,28 @@
|
|
153
153
|
"searchProviders": "搜索服務商...",
|
154
154
|
"sort": "自定義排序"
|
155
155
|
},
|
156
|
+
"newapi": {
|
157
|
+
"apiKey": {
|
158
|
+
"desc": "New API 平台提供的 API 密鑰",
|
159
|
+
"placeholder": "New API API 密鑰",
|
160
|
+
"required": "API 密鑰是必需的",
|
161
|
+
"title": "API 密鑰"
|
162
|
+
},
|
163
|
+
"apiUrl": {
|
164
|
+
"desc": "New API 服務的 API 位址,大部分時候需要帶 /v1",
|
165
|
+
"title": "API 位址"
|
166
|
+
},
|
167
|
+
"enabled": {
|
168
|
+
"title": "啟用 New API"
|
169
|
+
},
|
170
|
+
"models": {
|
171
|
+
"batchSelect": "批次選擇模型 ({{count}} 個)",
|
172
|
+
"fetch": "取得模型列表",
|
173
|
+
"selected": "已選擇的模型",
|
174
|
+
"title": "可用模型"
|
175
|
+
},
|
176
|
+
"title": "New API"
|
177
|
+
},
|
156
178
|
"ollama": {
|
157
179
|
"checker": {
|
158
180
|
"desc": "測試代理地址是否正確填寫",
|
@@ -185,6 +207,10 @@
|
|
185
207
|
}
|
186
208
|
},
|
187
209
|
"providerModels": {
|
210
|
+
"batchSelect": {
|
211
|
+
"selected": "已選擇 {{count}} 個模型",
|
212
|
+
"title": "批次選擇"
|
213
|
+
},
|
188
214
|
"config": {
|
189
215
|
"aesGcm": "您的秘鑰與代理地址等將使用 <1>AES-GCM</1> 加密算法進行加密",
|
190
216
|
"apiKey": {
|
@@ -95,6 +95,9 @@
|
|
95
95
|
"nebius": {
|
96
96
|
"description": "Nebius 透過構建大規模GPU叢集及垂直整合的雲端平台,為全球AI創新者提供高效能基礎設施。"
|
97
97
|
},
|
98
|
+
"newapi": {
|
99
|
+
"description": "開源的多個 AI 服務聚合統一轉發平台"
|
100
|
+
},
|
98
101
|
"novita": {
|
99
102
|
"description": "Novita AI 是一個提供多種大語言模型與 AI 圖像生成的 API 服務的平台,靈活、可靠且具有成本效益。它支持 Llama3、Mistral 等最新的開源模型,並為生成式 AI 應用開發提供了全面、用戶友好且自動擴展的 API 解決方案,適合 AI 初創公司的快速發展。"
|
100
103
|
},
|
package/package.json
CHANGED
@@ -1,6 +1,6 @@
|
|
1
1
|
{
|
2
2
|
"name": "@lobehub/chat",
|
3
|
-
"version": "1.123.
|
3
|
+
"version": "1.123.2",
|
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",
|
@@ -1025,7 +1025,7 @@ describe('FileModel', () => {
|
|
1025
1025
|
it('should handle unknown file category', async () => {
|
1026
1026
|
// This tests the default case in switch statement (line 312-313)
|
1027
1027
|
const unknownCategory = 'unknown' as FilesTabs;
|
1028
|
-
|
1028
|
+
|
1029
1029
|
// We need to access the private method indirectly by testing the query method
|
1030
1030
|
// that uses getFileTypePrefix internally
|
1031
1031
|
const params = {
|
@@ -1033,7 +1033,7 @@ describe('FileModel', () => {
|
|
1033
1033
|
current: 1,
|
1034
1034
|
pageSize: 10,
|
1035
1035
|
};
|
1036
|
-
|
1036
|
+
|
1037
1037
|
// This should not throw an error and should handle the unknown category gracefully
|
1038
1038
|
const result = await fileModel.query(params);
|
1039
1039
|
expect(result).toBeDefined();
|
@@ -1054,7 +1054,7 @@ describe('FileModel', () => {
|
|
1054
1054
|
};
|
1055
1055
|
|
1056
1056
|
const { id: fileId } = await fileModel.create(testFile, true);
|
1057
|
-
|
1057
|
+
|
1058
1058
|
// Create many chunks for this file to trigger batch processing
|
1059
1059
|
// Note: This is a simplified test since we can't easily create 3000+ chunks
|
1060
1060
|
// But it will still exercise the batch deletion code path
|
@@ -1069,7 +1069,7 @@ describe('FileModel', () => {
|
|
1069
1069
|
// Insert chunks (this might need to be done through proper API)
|
1070
1070
|
// For testing purposes, we'll delete the file which should trigger the batch deletion
|
1071
1071
|
await fileModel.delete(fileId, true);
|
1072
|
-
|
1072
|
+
|
1073
1073
|
// Verify the file is deleted
|
1074
1074
|
const deletedFile = await serverDB.query.files.findFirst({
|
1075
1075
|
where: eq(files.id, fileId),
|
@@ -1152,14 +1152,14 @@ describe('SessionModel', () => {
|
|
1152
1152
|
// 这个测试旨在覆盖 findSessionsByKeywords 中的错误处理逻辑 (lines 484-486)
|
1153
1153
|
// 通过模拟一个可能导致错误的场景来触发 catch 块
|
1154
1154
|
const consoleSpy = vi.spyOn(console, 'error').mockImplementation(() => {});
|
1155
|
-
|
1155
|
+
|
1156
1156
|
// 创建一个会导致错误的场景
|
1157
1157
|
// 我们可以通过传递一个会导致数据库查询问题的关键词来测试错误处理
|
1158
1158
|
const result = await sessionModel.findSessionsByKeywords({ keyword: 'test' });
|
1159
|
-
|
1159
|
+
|
1160
1160
|
// 即使发生错误,方法也应该返回一个空数组
|
1161
1161
|
expect(Array.isArray(result)).toBe(true);
|
1162
|
-
|
1162
|
+
|
1163
1163
|
consoleSpy.mockRestore();
|
1164
1164
|
});
|
1165
1165
|
|
@@ -1,6 +1,7 @@
|
|
1
1
|
import { ActionIconGroup, type ActionIconGroupEvent, type ActionIconGroupProps } from '@lobehub/ui';
|
2
2
|
import { App } from 'antd';
|
3
3
|
import isEqual from 'fast-deep-equal';
|
4
|
+
import { useSearchParams } from 'next/navigation';
|
4
5
|
import { memo, use, useCallback, useState } from 'react';
|
5
6
|
import { useTranslation } from 'react-i18next';
|
6
7
|
|
@@ -38,6 +39,8 @@ interface ActionsProps {
|
|
38
39
|
const Actions = memo<ActionsProps>(({ id, inPortalThread, index }) => {
|
39
40
|
const item = useChatStore(chatSelectors.getMessageById(id), isEqual);
|
40
41
|
const { t } = useTranslation('common');
|
42
|
+
const searchParams = useSearchParams();
|
43
|
+
const topic = searchParams.get('topic');
|
41
44
|
const [
|
42
45
|
deleteMessage,
|
43
46
|
regenerateMessage,
|
@@ -84,6 +87,10 @@ const Actions = memo<ActionsProps>(({ id, inPortalThread, index }) => {
|
|
84
87
|
break;
|
85
88
|
}
|
86
89
|
case 'branching': {
|
90
|
+
if (!topic) {
|
91
|
+
message.warning(t('branchingRequiresSavedTopic'));
|
92
|
+
break;
|
93
|
+
}
|
87
94
|
openThreadCreator(id);
|
88
95
|
break;
|
89
96
|
}
|