@lobehub/lobehub 2.0.0-next.82 → 2.0.0-next.84

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 (78) hide show
  1. package/CHANGELOG.md +58 -0
  2. package/changelog/v1.json +21 -0
  3. package/docs/usage/providers/comfyui.mdx +1 -1
  4. package/docs/usage/providers/comfyui.zh-CN.mdx +1 -1
  5. package/locales/ar/error.json +2 -2
  6. package/locales/ar/modelProvider.json +1 -1
  7. package/locales/ar/models.json +7 -1
  8. package/locales/bg-BG/error.json +2 -2
  9. package/locales/bg-BG/modelProvider.json +1 -1
  10. package/locales/bg-BG/models.json +7 -1
  11. package/locales/de-DE/error.json +2 -2
  12. package/locales/de-DE/modelProvider.json +1 -1
  13. package/locales/de-DE/models.json +7 -1
  14. package/locales/en-US/error.json +2 -2
  15. package/locales/en-US/modelProvider.json +1 -1
  16. package/locales/en-US/models.json +7 -1
  17. package/locales/es-ES/error.json +2 -2
  18. package/locales/es-ES/modelProvider.json +1 -1
  19. package/locales/es-ES/models.json +7 -1
  20. package/locales/fa-IR/error.json +2 -2
  21. package/locales/fa-IR/modelProvider.json +1 -1
  22. package/locales/fa-IR/models.json +7 -1
  23. package/locales/fr-FR/error.json +2 -2
  24. package/locales/fr-FR/modelProvider.json +1 -1
  25. package/locales/fr-FR/models.json +7 -1
  26. package/locales/it-IT/error.json +2 -2
  27. package/locales/it-IT/modelProvider.json +1 -1
  28. package/locales/it-IT/models.json +7 -1
  29. package/locales/ja-JP/error.json +2 -2
  30. package/locales/ja-JP/modelProvider.json +1 -1
  31. package/locales/ja-JP/models.json +7 -1
  32. package/locales/ko-KR/error.json +2 -2
  33. package/locales/ko-KR/modelProvider.json +1 -1
  34. package/locales/ko-KR/models.json +7 -1
  35. package/locales/nl-NL/error.json +2 -2
  36. package/locales/nl-NL/modelProvider.json +1 -1
  37. package/locales/nl-NL/models.json +7 -1
  38. package/locales/pl-PL/error.json +2 -2
  39. package/locales/pl-PL/modelProvider.json +1 -1
  40. package/locales/pl-PL/models.json +7 -1
  41. package/locales/pt-BR/error.json +2 -2
  42. package/locales/pt-BR/modelProvider.json +1 -1
  43. package/locales/pt-BR/models.json +7 -1
  44. package/locales/ru-RU/error.json +2 -2
  45. package/locales/ru-RU/modelProvider.json +1 -1
  46. package/locales/ru-RU/models.json +7 -1
  47. package/locales/tr-TR/error.json +2 -2
  48. package/locales/tr-TR/modelProvider.json +1 -1
  49. package/locales/tr-TR/models.json +7 -1
  50. package/locales/vi-VN/error.json +2 -2
  51. package/locales/vi-VN/modelProvider.json +1 -1
  52. package/locales/vi-VN/models.json +7 -1
  53. package/locales/zh-CN/error.json +2 -2
  54. package/locales/zh-CN/modelProvider.json +1 -1
  55. package/locales/zh-CN/models.json +7 -1
  56. package/locales/zh-TW/error.json +2 -2
  57. package/locales/zh-TW/modelProvider.json +1 -1
  58. package/locales/zh-TW/models.json +7 -1
  59. package/package.json +1 -1
  60. package/packages/model-bank/src/aiModels/google.ts +54 -0
  61. package/packages/model-bank/src/aiModels/novita.ts +3 -2
  62. package/packages/model-bank/src/aiModels/nvidia.ts +14 -0
  63. package/packages/model-bank/src/aiModels/ollamacloud.ts +23 -2
  64. package/packages/model-bank/src/aiModels/qwen.ts +88 -0
  65. package/packages/model-bank/src/aiModels/siliconcloud.ts +20 -0
  66. package/packages/model-bank/src/aiModels/vercelaigateway.ts +0 -17
  67. package/packages/model-bank/src/aiModels/volcengine.ts +1 -1
  68. package/packages/model-runtime/src/core/openaiCompatibleFactory/index.test.ts +108 -64
  69. package/packages/model-runtime/src/core/openaiCompatibleFactory/index.ts +150 -125
  70. package/packages/model-runtime/src/providers/newapi/index.test.ts +3 -75
  71. package/packages/model-runtime/src/providers/newapi/index.ts +1 -14
  72. package/packages/model-runtime/src/providers/openrouter/index.test.ts +3 -2
  73. package/packages/model-runtime/src/providers/openrouter/index.ts +1 -1
  74. package/src/app/[variants]/(main)/settings/provider/features/CreateNewProvider/index.tsx +19 -6
  75. package/src/app/[variants]/(main)/settings/provider/features/customProviderSdkOptions.ts +1 -0
  76. package/src/config/modelProviders/aihubmix.ts +1 -0
  77. package/src/config/modelProviders/newapi.ts +1 -0
  78. package/src/locales/default/modelProvider.ts +1 -1
@@ -1548,8 +1548,9 @@ describe('LobeOpenRouterAI - custom features', () => {
1548
1548
  const models = await params.models();
1549
1549
 
1550
1550
  const mixedModel = models.find((m) => m.id === 'mixed-free/model');
1551
- // Input or output is 0, so should be marked as free
1552
- expect(mixedModel?.displayName).toContain('(free)');
1551
+ // Input or output is 0. Current behavior does not append '(free)' for mixed pricing,
1552
+ // so assert the displayName equals the cleaned model name.
1553
+ expect(mixedModel?.displayName).toBe('Mixed Free Model');
1553
1554
  });
1554
1555
 
1555
1556
  it('should handle very large pricing values', async () => {
@@ -99,7 +99,7 @@ export const params = {
99
99
  const cachedInputPrice = formatPrice(pricing.input_cache_read);
100
100
  const writeCacheInputPrice = formatPrice(pricing.input_cache_write);
101
101
 
102
- const isFree = (inputPrice === 0 || outputPrice === 0) && !displayName.endsWith('(free)');
102
+ const isFree = inputPrice === 0 && outputPrice === 0 && !displayName.endsWith('(free)');
103
103
  if (isFree) {
104
104
  displayName += ' (free)';
105
105
  }
@@ -42,6 +42,15 @@ const CreateNewProvider = memo<CreateNewProviderProps>(({ onClose, open }) => {
42
42
  name: values.name || values.id,
43
43
  };
44
44
 
45
+ // 只为 openai 和 router (newapi) 类型的自定义 provider 添加 supportResponsesApi: true
46
+ const sdkType = values.settings?.sdkType;
47
+ if (sdkType === 'openai' || sdkType === 'router') {
48
+ finalValues.settings = {
49
+ ...finalValues.settings,
50
+ supportResponsesApi: true,
51
+ };
52
+ }
53
+
45
54
  await createNewAiProvider(finalValues);
46
55
  setLoading(false);
47
56
  navigate(`/settings?active=provider&provider=${values.id}`);
@@ -102,12 +111,16 @@ const CreateNewProvider = memo<CreateNewProviderProps>(({ onClose, open }) => {
102
111
  {
103
112
  children: (
104
113
  <Select
105
- optionRender={({ label, value }) => (
106
- <Flexbox align={'center'} gap={8} horizontal>
107
- <ProviderIcon provider={value as string} size={18} />
108
- {label}
109
- </Flexbox>
110
- )}
114
+ optionRender={({ label, value }) => {
115
+ // Map 'router' to 'newapi' for displaying the correct icon
116
+ const iconProvider = value === 'router' ? 'newapi' : (value as string);
117
+ return (
118
+ <Flexbox align={'center'} gap={8} horizontal>
119
+ <ProviderIcon provider={iconProvider} size={18} />
120
+ {label}
121
+ </Flexbox>
122
+ );
123
+ }}
111
124
  options={CUSTOM_PROVIDER_SDK_OPTIONS}
112
125
  placeholder={t('createNewAiProvider.sdkType.placeholder')}
113
126
  variant={'filled'}
@@ -9,4 +9,5 @@ export const CUSTOM_PROVIDER_SDK_OPTIONS = [
9
9
  { label: 'Qwen', value: 'qwen' },
10
10
  { label: 'Volcengine', value: 'volcengine' },
11
11
  { label: 'Ollama', value: 'ollama' },
12
+ { label: 'New API', value: 'router' },
12
13
  ] satisfies { label: string; value: AiProviderSDKType }[];
@@ -11,6 +11,7 @@ const AiHubMix: ModelProviderCard = {
11
11
  settings: {
12
12
  sdkType: 'router',
13
13
  showModelFetcher: true,
14
+ supportResponsesApi: true,
14
15
  },
15
16
  url: 'https://aihubmix.com?utm_source=lobehub',
16
17
  };
@@ -13,6 +13,7 @@ const NewAPI: ModelProviderCard = {
13
13
  },
14
14
  sdkType: 'router',
15
15
  showModelFetcher: true,
16
+ supportResponsesApi: true,
16
17
  },
17
18
  url: 'https://github.com/Calcium-Ion/new-api',
18
19
  };
@@ -298,7 +298,7 @@ export default {
298
298
  },
299
299
  helpDoc: '配置教程',
300
300
  responsesApi: {
301
- desc: '采用 OpenAI 新一代请求格式规范,解锁思维链等进阶特性',
301
+ desc: '采用 OpenAI 新一代请求格式规范,解锁思维链等进阶特性 (仅 OpenAI 模型支持)',
302
302
  title: '使用 Responses API 规范',
303
303
  },
304
304
  waitingForMore: '更多模型正在 <1>计划接入</1> 中,敬请期待',