@lobehub/chat 1.122.7 → 1.123.1
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/modelProvider.json +26 -0
- package/locales/ar/providers.json +3 -0
- package/locales/bg-BG/modelProvider.json +26 -0
- package/locales/bg-BG/providers.json +3 -0
- package/locales/de-DE/modelProvider.json +26 -0
- package/locales/de-DE/providers.json +3 -0
- package/locales/en-US/modelProvider.json +26 -0
- package/locales/en-US/providers.json +3 -0
- package/locales/es-ES/modelProvider.json +26 -0
- package/locales/es-ES/providers.json +3 -0
- package/locales/fa-IR/modelProvider.json +26 -0
- package/locales/fa-IR/providers.json +3 -0
- package/locales/fr-FR/modelProvider.json +26 -0
- package/locales/fr-FR/providers.json +3 -0
- package/locales/it-IT/modelProvider.json +26 -0
- package/locales/it-IT/providers.json +3 -0
- package/locales/ja-JP/modelProvider.json +26 -0
- package/locales/ja-JP/providers.json +3 -0
- package/locales/ko-KR/modelProvider.json +26 -0
- package/locales/ko-KR/providers.json +3 -0
- package/locales/nl-NL/modelProvider.json +26 -0
- package/locales/nl-NL/providers.json +3 -0
- package/locales/pl-PL/modelProvider.json +26 -0
- package/locales/pl-PL/providers.json +3 -0
- package/locales/pt-BR/modelProvider.json +26 -0
- package/locales/pt-BR/providers.json +3 -0
- package/locales/ru-RU/modelProvider.json +26 -0
- package/locales/ru-RU/providers.json +3 -0
- package/locales/tr-TR/modelProvider.json +26 -0
- package/locales/tr-TR/providers.json +3 -0
- package/locales/vi-VN/modelProvider.json +26 -0
- package/locales/vi-VN/providers.json +3 -0
- package/locales/zh-CN/modelProvider.json +26 -0
- package/locales/zh-CN/providers.json +3 -0
- package/locales/zh-TW/modelProvider.json +26 -0
- package/locales/zh-TW/providers.json +3 -0
- package/package.json +2 -2
- package/packages/model-bank/package.json +1 -0
- package/packages/model-bank/src/aiModels/index.ts +3 -1
- package/packages/model-bank/src/aiModels/newapi.ts +11 -0
- package/packages/model-runtime/src/RouterRuntime/createRuntime.test.ts +60 -0
- package/packages/model-runtime/src/RouterRuntime/createRuntime.ts +6 -3
- package/packages/model-runtime/src/index.ts +1 -0
- package/packages/model-runtime/src/newapi/index.test.ts +618 -0
- package/packages/model-runtime/src/newapi/index.ts +245 -0
- package/packages/model-runtime/src/runtimeMap.ts +2 -0
- package/packages/model-runtime/src/types/type.ts +1 -0
- package/packages/types/src/user/settings/keyVaults.ts +1 -0
- package/src/app/[variants]/(main)/settings/provider/(detail)/newapi/page.tsx +27 -0
- package/src/config/modelProviders/index.ts +3 -0
- package/src/config/modelProviders/newapi.ts +17 -0
- package/src/locales/default/modelProvider.ts +26 -0
@@ -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
|
},
|
@@ -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
|
},
|
@@ -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
|
},
|
@@ -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
|
},
|
@@ -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.
|
3
|
+
"version": "1.123.1",
|
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",
|
@@ -154,7 +154,7 @@
|
|
154
154
|
"@lobehub/charts": "^2.0.0",
|
155
155
|
"@lobehub/chat-plugin-sdk": "^1.32.4",
|
156
156
|
"@lobehub/chat-plugins-gateway": "^1.9.0",
|
157
|
-
"@lobehub/icons": "^2.
|
157
|
+
"@lobehub/icons": "^2.31.0",
|
158
158
|
"@lobehub/market-sdk": "^0.22.7",
|
159
159
|
"@lobehub/tts": "^2.0.1",
|
160
160
|
"@lobehub/ui": "^2.8.3",
|
@@ -37,6 +37,7 @@
|
|
37
37
|
"./modelscope": "./src/aiModels/modelscope.ts",
|
38
38
|
"./moonshot": "./src/aiModels/moonshot.ts",
|
39
39
|
"./nebius": "./src/aiModels/nebius.ts",
|
40
|
+
"./newapi": "./src/aiModels/newapi.ts",
|
40
41
|
"./novita": "./src/aiModels/novita.ts",
|
41
42
|
"./nvidia": "./src/aiModels/nvidia.ts",
|
42
43
|
"./ollama": "./src/aiModels/ollama.ts",
|
@@ -1,5 +1,4 @@
|
|
1
1
|
import { AiFullModelCard, LobeDefaultAiModelListItem } from '../types/aiModel';
|
2
|
-
|
3
2
|
import { default as ai21 } from './ai21';
|
4
3
|
import { default as ai302 } from './ai302';
|
5
4
|
import { default as ai360 } from './ai360';
|
@@ -32,6 +31,7 @@ import { default as mistral } from './mistral';
|
|
32
31
|
import { default as modelscope } from './modelscope';
|
33
32
|
import { default as moonshot } from './moonshot';
|
34
33
|
import { default as nebius } from './nebius';
|
34
|
+
import { default as newapi } from './newapi';
|
35
35
|
import { default as novita } from './novita';
|
36
36
|
import { default as nvidia } from './nvidia';
|
37
37
|
import { default as ollama } from './ollama';
|
@@ -113,6 +113,7 @@ export const LOBE_DEFAULT_MODEL_LIST = buildDefaultModelList({
|
|
113
113
|
modelscope,
|
114
114
|
moonshot,
|
115
115
|
nebius,
|
116
|
+
newapi,
|
116
117
|
novita,
|
117
118
|
nvidia,
|
118
119
|
ollama,
|
@@ -176,6 +177,7 @@ export { default as mistral } from './mistral';
|
|
176
177
|
export { default as modelscope } from './modelscope';
|
177
178
|
export { default as moonshot } from './moonshot';
|
178
179
|
export { default as nebius } from './nebius';
|
180
|
+
export { default as newapi } from './newapi';
|
179
181
|
export { default as novita } from './novita';
|
180
182
|
export { default as nvidia } from './nvidia';
|
181
183
|
export { default as ollama } from './ollama';
|
@@ -0,0 +1,11 @@
|
|
1
|
+
import { AIChatModelCard } from '../types/aiModel';
|
2
|
+
|
3
|
+
// NewAPI Router Provider - 聚合多个 AI 服务
|
4
|
+
// 模型通过动态获取,不预定义具体模型
|
5
|
+
const newapiChatModels: AIChatModelCard[] = [
|
6
|
+
// NewAPI 作为路由提供商,模型列表通过 API 动态获取
|
7
|
+
];
|
8
|
+
|
9
|
+
export const allModels = [...newapiChatModels];
|
10
|
+
|
11
|
+
export default allModels;
|
@@ -450,4 +450,64 @@ describe('createRouterRuntime', () => {
|
|
450
450
|
expect(mockTextToSpeech).toHaveBeenCalledWith(payload, options);
|
451
451
|
});
|
452
452
|
});
|
453
|
+
|
454
|
+
describe('dynamic routers configuration', () => {
|
455
|
+
it('should support function-based routers configuration', () => {
|
456
|
+
class MockRuntime implements LobeRuntimeAI {
|
457
|
+
chat = vi.fn();
|
458
|
+
textToImage = vi.fn();
|
459
|
+
models = vi.fn();
|
460
|
+
embeddings = vi.fn();
|
461
|
+
textToSpeech = vi.fn();
|
462
|
+
}
|
463
|
+
|
464
|
+
const dynamicRoutersFunction = (options: any) => [
|
465
|
+
{
|
466
|
+
apiType: 'openai' as const,
|
467
|
+
options: {
|
468
|
+
baseURL: `${options.baseURL || 'https://api.openai.com'}/v1`,
|
469
|
+
},
|
470
|
+
runtime: MockRuntime as any,
|
471
|
+
models: ['gpt-4'],
|
472
|
+
},
|
473
|
+
{
|
474
|
+
apiType: 'anthropic' as const,
|
475
|
+
options: {
|
476
|
+
baseURL: `${options.baseURL || 'https://api.anthropic.com'}/v1`,
|
477
|
+
},
|
478
|
+
runtime: MockRuntime as any,
|
479
|
+
models: ['claude-3'],
|
480
|
+
},
|
481
|
+
];
|
482
|
+
|
483
|
+
const Runtime = createRouterRuntime({
|
484
|
+
id: 'test-runtime',
|
485
|
+
routers: dynamicRoutersFunction,
|
486
|
+
});
|
487
|
+
|
488
|
+
const userOptions = {
|
489
|
+
apiKey: 'test-key',
|
490
|
+
baseURL: 'https://yourapi.cn',
|
491
|
+
};
|
492
|
+
|
493
|
+
const runtime = new Runtime(userOptions);
|
494
|
+
|
495
|
+
expect(runtime).toBeDefined();
|
496
|
+
expect(runtime['_runtimes']).toHaveLength(2);
|
497
|
+
expect(runtime['_runtimes'][0].id).toBe('openai');
|
498
|
+
expect(runtime['_runtimes'][1].id).toBe('anthropic');
|
499
|
+
});
|
500
|
+
|
501
|
+
it('should throw error when dynamic routers function returns empty array', () => {
|
502
|
+
const emptyRoutersFunction = () => [];
|
503
|
+
|
504
|
+
expect(() => {
|
505
|
+
const Runtime = createRouterRuntime({
|
506
|
+
id: 'test-runtime',
|
507
|
+
routers: emptyRoutersFunction,
|
508
|
+
});
|
509
|
+
new Runtime();
|
510
|
+
}).toThrow('empty providers');
|
511
|
+
});
|
512
|
+
});
|
453
513
|
});
|
@@ -104,7 +104,7 @@ interface CreateRouterRuntimeOptions<T extends Record<string, any> = any> {
|
|
104
104
|
options: ConstructorOptions<T>,
|
105
105
|
) => ChatStreamPayload;
|
106
106
|
};
|
107
|
-
routers: RouterInstance[];
|
107
|
+
routers: RouterInstance[] | ((options: ClientOptions & Record<string, any>) => RouterInstance[]);
|
108
108
|
}
|
109
109
|
|
110
110
|
export const createRouterRuntime = ({
|
@@ -125,11 +125,14 @@ export const createRouterRuntime = ({
|
|
125
125
|
baseURL: options.baseURL?.trim(),
|
126
126
|
};
|
127
127
|
|
128
|
-
|
128
|
+
// 支持动态 routers 配置
|
129
|
+
const resolvedRouters = typeof routers === 'function' ? routers(_options) : routers;
|
130
|
+
|
131
|
+
if (resolvedRouters.length === 0) {
|
129
132
|
throw new Error('empty providers');
|
130
133
|
}
|
131
134
|
|
132
|
-
this._runtimes =
|
135
|
+
this._runtimes = resolvedRouters.map((router) => {
|
133
136
|
const providerAI = router.runtime ?? baseRuntimeMap[router.apiType] ?? LobeOpenAI;
|
134
137
|
|
135
138
|
const finalOptions = { ...params, ...options, ...router.options };
|
@@ -14,6 +14,7 @@ export { LobeMistralAI } from './mistral';
|
|
14
14
|
export { ModelRuntime } from './ModelRuntime';
|
15
15
|
export { LobeMoonshotAI } from './moonshot';
|
16
16
|
export { LobeNebiusAI } from './nebius';
|
17
|
+
export { LobeNewAPIAI } from './newapi';
|
17
18
|
export { LobeOllamaAI } from './ollama';
|
18
19
|
export { LobeOpenAI } from './openai';
|
19
20
|
export { LobeOpenRouterAI } from './openrouter';
|