@lobehub/chat 1.40.1 → 1.40.3

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 (118) hide show
  1. package/CHANGELOG.md +50 -0
  2. package/changelog/v1.json +18 -0
  3. package/package.json +1 -1
  4. package/src/app/(main)/changelog/page.tsx +3 -1
  5. package/src/app/(main)/chat/(workspace)/features/ChangelogModal.tsx +11 -0
  6. package/src/app/(main)/chat/(workspace)/page.tsx +8 -5
  7. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/Actions.tsx +1 -1
  8. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/Header.tsx +1 -1
  9. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/InfoSidebar/SuggestionItem.tsx +2 -2
  10. package/src/app/(main)/discover/(detail)/model/[...slugs]/features/ProviderList/ProviderItem.tsx +1 -1
  11. package/src/app/(main)/discover/(detail)/provider/[slug]/features/ModelList/ModelItem.tsx +3 -3
  12. package/src/app/(main)/discover/(list)/models/features/Card.tsx +6 -2
  13. package/src/app/(main)/settings/llm/ProviderList/Cloudflare/index.tsx +1 -5
  14. package/src/app/(main)/settings/llm/components/ProviderModelList/ModelFetcher.tsx +2 -2
  15. package/src/app/@modal/(.)changelog/modal/page.tsx +3 -1
  16. package/src/components/Loading/BrandTextLoading/index.tsx +5 -0
  17. package/src/components/ModelSelect/index.tsx +7 -4
  18. package/src/config/__tests__/app.test.ts +6 -2
  19. package/src/config/app.ts +1 -2
  20. package/src/config/featureFlags/schema.ts +3 -0
  21. package/src/config/modelProviders/ai21.ts +2 -2
  22. package/src/config/modelProviders/ai360.ts +4 -4
  23. package/src/config/modelProviders/anthropic.ts +8 -8
  24. package/src/config/modelProviders/azure.ts +5 -5
  25. package/src/config/modelProviders/baichuan.ts +6 -6
  26. package/src/config/modelProviders/bedrock.ts +14 -14
  27. package/src/config/modelProviders/cloudflare.ts +12 -11
  28. package/src/config/modelProviders/deepseek.ts +1 -1
  29. package/src/config/modelProviders/fireworksai.ts +29 -27
  30. package/src/config/modelProviders/giteeai.ts +7 -7
  31. package/src/config/modelProviders/github.ts +29 -28
  32. package/src/config/modelProviders/google.ts +18 -19
  33. package/src/config/modelProviders/groq.ts +13 -13
  34. package/src/config/modelProviders/higress.ts +195 -194
  35. package/src/config/modelProviders/huggingface.ts +7 -7
  36. package/src/config/modelProviders/hunyuan.ts +25 -17
  37. package/src/config/modelProviders/internlm.ts +6 -4
  38. package/src/config/modelProviders/minimax.ts +5 -5
  39. package/src/config/modelProviders/mistral.ts +14 -16
  40. package/src/config/modelProviders/moonshot.ts +3 -3
  41. package/src/config/modelProviders/novita.ts +15 -15
  42. package/src/config/modelProviders/ollama.ts +46 -46
  43. package/src/config/modelProviders/openai.ts +23 -22
  44. package/src/config/modelProviders/openrouter.ts +20 -18
  45. package/src/config/modelProviders/perplexity.ts +7 -7
  46. package/src/config/modelProviders/qwen.ts +23 -25
  47. package/src/config/modelProviders/sensenova.ts +8 -8
  48. package/src/config/modelProviders/siliconcloud.ts +138 -92
  49. package/src/config/modelProviders/spark.ts +6 -6
  50. package/src/config/modelProviders/stepfun.ts +9 -9
  51. package/src/config/modelProviders/taichu.ts +2 -3
  52. package/src/config/modelProviders/togetherai.ts +57 -48
  53. package/src/config/modelProviders/upstage.ts +3 -3
  54. package/src/config/modelProviders/wenxin.ts +12 -12
  55. package/src/config/modelProviders/xai.ts +4 -4
  56. package/src/config/modelProviders/zeroone.ts +11 -11
  57. package/src/config/modelProviders/zhipu.ts +17 -16
  58. package/src/database/_deprecated/core/model.ts +1 -1
  59. package/src/database/_deprecated/models/sessionGroup.ts +4 -1
  60. package/src/database/client/migrations.json +2 -5
  61. package/src/database/migrations/meta/0012_snapshot.json +176 -518
  62. package/src/database/schemas/agent.ts +1 -1
  63. package/src/database/schemas/message.ts +1 -0
  64. package/src/database/schemas/session.ts +1 -0
  65. package/src/database/server/models/topic.ts +19 -17
  66. package/src/features/ChangelogModal/index.tsx +8 -2
  67. package/src/features/DebugUI/Content.tsx +0 -1
  68. package/src/features/PluginStore/index.tsx +2 -2
  69. package/src/features/User/UserPanel/useMenu.tsx +1 -1
  70. package/src/layout/GlobalProvider/AntdV5MonkeyPatch.tsx +4 -4
  71. package/src/libs/agent-runtime/google/index.ts +4 -3
  72. package/src/libs/agent-runtime/higress/index.ts +1 -1
  73. package/src/libs/agent-runtime/huggingface/index.ts +2 -4
  74. package/src/libs/agent-runtime/minimax/index.ts +5 -10
  75. package/src/libs/agent-runtime/mistral/index.ts +3 -6
  76. package/src/libs/agent-runtime/moonshot/index.ts +3 -6
  77. package/src/libs/agent-runtime/novita/__snapshots__/index.test.ts.snap +18 -18
  78. package/src/libs/agent-runtime/novita/index.ts +1 -1
  79. package/src/libs/agent-runtime/openai/__snapshots__/index.test.ts.snap +10 -10
  80. package/src/libs/agent-runtime/openrouter/__snapshots__/index.test.ts.snap +168 -168
  81. package/src/libs/agent-runtime/openrouter/index.ts +1 -1
  82. package/src/libs/agent-runtime/perplexity/index.ts +4 -4
  83. package/src/libs/agent-runtime/sensenova/index.ts +9 -3
  84. package/src/libs/agent-runtime/taichu/index.ts +4 -10
  85. package/src/libs/agent-runtime/utils/streams/minimax.test.ts +5 -2
  86. package/src/libs/agent-runtime/utils/streams/minimax.ts +4 -1
  87. package/src/libs/agent-runtime/zhipu/index.ts +12 -13
  88. package/src/libs/langchain/loaders/index.ts +2 -2
  89. package/src/libs/langchain/types.ts +9 -1
  90. package/src/locales/default/modelProvider.ts +1 -1
  91. package/src/migrations/FromV3ToV4/fixtures/ollama-output-v4.json +1 -1
  92. package/src/migrations/FromV6ToV7/types/v7.ts +0 -2
  93. package/src/server/globalConfig/genServerLLMConfig.test.ts +4 -4
  94. package/src/server/globalConfig/genServerLLMConfig.ts +29 -24
  95. package/src/server/globalConfig/index.ts +1 -2
  96. package/src/server/routers/edge/config/__snapshots__/index.test.ts.snap +9 -9
  97. package/src/server/routers/lambda/_template.ts +1 -1
  98. package/src/server/routers/lambda/knowledgeBase.ts +1 -1
  99. package/src/server/routers/lambda/session.ts +1 -1
  100. package/src/server/routers/lambda/sessionGroup.ts +1 -1
  101. package/src/server/routers/lambda/thread.ts +1 -1
  102. package/src/server/services/changelog/index.test.ts +4 -2
  103. package/src/server/services/changelog/index.ts +10 -2
  104. package/src/server/services/nextAuthUser/index.ts +1 -1
  105. package/src/store/serverConfig/selectors.test.ts +1 -0
  106. package/src/store/user/slices/modelList/__snapshots__/action.test.ts.snap +1 -1
  107. package/src/store/user/slices/modelList/action.test.ts +4 -4
  108. package/src/store/user/slices/modelList/reducers/customModelCard.test.ts +6 -6
  109. package/src/store/user/slices/modelList/selectors/modelProvider.ts +3 -2
  110. package/src/tools/dalle/Render/Item/index.tsx +1 -1
  111. package/src/types/files/index.ts +0 -1
  112. package/src/types/llm.ts +4 -5
  113. package/src/utils/__snapshots__/parseModels.test.ts.snap +2 -2
  114. package/src/utils/genUserLLMConfig.test.ts +4 -4
  115. package/src/utils/genUserLLMConfig.ts +6 -4
  116. package/src/utils/parseModels.test.ts +16 -16
  117. package/src/utils/parseModels.ts +1 -1
  118. package/src/utils/server/jwt.ts +2 -6
package/CHANGELOG.md CHANGED
@@ -2,6 +2,56 @@
2
2
 
3
3
  # Changelog
4
4
 
5
+ ### [Version 1.40.3](https://github.com/lobehub/lobe-chat/compare/v1.40.2...v1.40.3)
6
+
7
+ <sup>Released on **2024-12-26**</sup>
8
+
9
+ #### 🐛 Bug Fixes
10
+
11
+ - **misc**: Fix fetch error in changelog modal.
12
+
13
+ <br/>
14
+
15
+ <details>
16
+ <summary><kbd>Improvements and Fixes</kbd></summary>
17
+
18
+ #### What's fixed
19
+
20
+ - **misc**: Fix fetch error in changelog modal, closes [#5194](https://github.com/lobehub/lobe-chat/issues/5194) ([e9433be](https://github.com/lobehub/lobe-chat/commit/e9433be))
21
+
22
+ </details>
23
+
24
+ <div align="right">
25
+
26
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
27
+
28
+ </div>
29
+
30
+ ### [Version 1.40.2](https://github.com/lobehub/lobe-chat/compare/v1.40.1...v1.40.2)
31
+
32
+ <sup>Released on **2024-12-26**</sup>
33
+
34
+ #### ♻ Code Refactoring
35
+
36
+ - **misc**: Refactor `tokens` to `contextWindowTokens`.
37
+
38
+ <br/>
39
+
40
+ <details>
41
+ <summary><kbd>Improvements and Fixes</kbd></summary>
42
+
43
+ #### Code refactoring
44
+
45
+ - **misc**: Refactor `tokens` to `contextWindowTokens`, closes [#5185](https://github.com/lobehub/lobe-chat/issues/5185) ([a2aa99a](https://github.com/lobehub/lobe-chat/commit/a2aa99a))
46
+
47
+ </details>
48
+
49
+ <div align="right">
50
+
51
+ [![](https://img.shields.io/badge/-BACK_TO_TOP-151515?style=flat-square)](#readme-top)
52
+
53
+ </div>
54
+
5
55
  ### [Version 1.40.1](https://github.com/lobehub/lobe-chat/compare/v1.40.0...v1.40.1)
6
56
 
7
57
  <sup>Released on **2024-12-26**</sup>
package/changelog/v1.json CHANGED
@@ -1,4 +1,22 @@
1
1
  [
2
+ {
3
+ "children": {
4
+ "fixes": [
5
+ "Fix fetch error in changelog modal."
6
+ ]
7
+ },
8
+ "date": "2024-12-26",
9
+ "version": "1.40.3"
10
+ },
11
+ {
12
+ "children": {
13
+ "improvements": [
14
+ "Refactor tokens to contextWindowTokens."
15
+ ]
16
+ },
17
+ "date": "2024-12-26",
18
+ "version": "1.40.2"
19
+ },
2
20
  {
3
21
  "children": {
4
22
  "fixes": [
package/package.json CHANGED
@@ -1,6 +1,6 @@
1
1
  {
2
2
  "name": "@lobehub/chat",
3
- "version": "1.40.1",
3
+ "version": "1.40.3",
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",
@@ -38,6 +38,8 @@ const Page = async () => {
38
38
  const changelogService = new ChangelogService();
39
39
  const data = await changelogService.getChangelogIndex();
40
40
 
41
+ if (!data) return notFound();
42
+
41
43
  const ld = ldModule.generate({
42
44
  description: t('changelog.description', { appName: BRANDING_NAME }),
43
45
  title: t('changelog.title', { appName: BRANDING_NAME }),
@@ -48,7 +50,7 @@ const Page = async () => {
48
50
  <>
49
51
  <StructuredData ld={ld} />
50
52
  <Flexbox gap={mobile ? 16 : 48}>
51
- {data.map((item) => (
53
+ {data?.map((item) => (
52
54
  <Fragment key={item.id}>
53
55
  <Suspense
54
56
  fallback={
@@ -0,0 +1,11 @@
1
+ import ChangelogModal from '@/features/ChangelogModal';
2
+ import { ChangelogService } from '@/server/services/changelog';
3
+
4
+ const Changelog = async () => {
5
+ const service = new ChangelogService();
6
+ const id = await service.getLatestChangelogId();
7
+
8
+ return <ChangelogModal currentId={id} />;
9
+ };
10
+
11
+ export default Changelog;
@@ -1,14 +1,15 @@
1
+ import { Suspense } from 'react';
2
+
1
3
  import StructuredData from '@/components/StructuredData';
2
4
  import { serverFeatureFlags } from '@/config/featureFlags';
3
5
  import { BRANDING_NAME } from '@/const/branding';
4
- import ChangelogModal from '@/features/ChangelogModal';
5
6
  import { ldModule } from '@/server/ld';
6
7
  import { metadataModule } from '@/server/metadata';
7
- import { ChangelogService } from '@/server/services/changelog';
8
8
  import { translation } from '@/server/translation';
9
9
  import { isMobileDevice } from '@/utils/server/responsive';
10
10
 
11
11
  import PageTitle from '../features/PageTitle';
12
+ import Changelog from './features/ChangelogModal';
12
13
  import TelemetryNotification from './features/TelemetryNotification';
13
14
 
14
15
  export const generateMetadata = async () => {
@@ -21,7 +22,7 @@ export const generateMetadata = async () => {
21
22
  };
22
23
 
23
24
  const Page = async () => {
24
- const hideDocs = serverFeatureFlags().hideDocs;
25
+ const { hideDocs, showChangelog } = serverFeatureFlags();
25
26
  const mobile = await isMobileDevice();
26
27
  const { t } = await translation('metadata');
27
28
  const ld = ldModule.generate({
@@ -35,8 +36,10 @@ const Page = async () => {
35
36
  <StructuredData ld={ld} />
36
37
  <PageTitle />
37
38
  <TelemetryNotification mobile={mobile} />
38
- {!hideDocs && !mobile && (
39
- <ChangelogModal currentId={await new ChangelogService().getLatestChangelogId()} />
39
+ {showChangelog && !hideDocs && !mobile && (
40
+ <Suspense>
41
+ <Changelog />
42
+ </Suspense>
40
43
  )}
41
44
  </>
42
45
  );
@@ -31,7 +31,7 @@ const ModelActions = memo<ModelActionsProps>(({ identifier, providerData, data }
31
31
  tags: (
32
32
  <ModelFeatureTags
33
33
  functionCall={data.meta.functionCall}
34
- tokens={data.meta.tokens}
34
+ tokens={data.meta.contextWindowTokens}
35
35
  vision={data.meta.vision}
36
36
  />
37
37
  ),
@@ -75,7 +75,7 @@ const Header = memo<HeaderProps>(({ identifier, data, mobile }) => {
75
75
  {data.meta.description && <div>{t(`${identifier}.description`, { ns: 'models' })}</div>}
76
76
  <ModelFeatureTags
77
77
  functionCall={data.meta.functionCall}
78
- tokens={data.meta.tokens}
78
+ tokens={data.meta.contextWindowTokens}
79
79
  vision={data.meta.vision}
80
80
  />
81
81
  </Flexbox>
@@ -45,7 +45,7 @@ export interface SuggestionItemProps
45
45
  FlexboxProps {}
46
46
 
47
47
  const SuggestionItem = memo<SuggestionItemProps>(({ className, meta, identifier, ...rest }) => {
48
- const { title, description, tokens, vision, functionCall } = meta;
48
+ const { title, description, contextWindowTokens, vision, functionCall } = meta;
49
49
  const { t } = useTranslation('models');
50
50
  const { cx, styles } = useStyles();
51
51
 
@@ -67,7 +67,7 @@ const SuggestionItem = memo<SuggestionItemProps>(({ className, meta, identifier,
67
67
  {t(`${identifier}.description`)}
68
68
  </Paragraph>
69
69
  )}
70
- <ModelFeatureTags functionCall={functionCall} tokens={tokens} vision={vision} />
70
+ <ModelFeatureTags functionCall={functionCall} tokens={contextWindowTokens} vision={vision} />
71
71
  </Flexbox>
72
72
  );
73
73
  });
@@ -45,7 +45,7 @@ const ProviderItem = memo<ProviderItemProps>(({ mobile, modelId, identifier }) =
45
45
  const items: StatisticProps[] = [
46
46
  {
47
47
  title: t('models.contentLength'),
48
- value: model?.tokens ? formatTokenNumber(model.tokens) : '--',
48
+ value: model?.contextWindowTokens ? formatTokenNumber(model.contextWindowTokens) : '--',
49
49
  },
50
50
  {
51
51
  title: t('models.providerInfo.maxOutput'),
@@ -47,7 +47,7 @@ export interface SuggestionItemProps
47
47
  }
48
48
 
49
49
  const ModelItem = memo<SuggestionItemProps>(({ mobile, meta, identifier }) => {
50
- const { title, tokens, vision, functionCall } = meta;
50
+ const { title, contextWindowTokens, vision, functionCall } = meta;
51
51
  const { xl = true } = useResponsive();
52
52
  const { t } = useTranslation('discover');
53
53
  const { styles, theme } = useStyles();
@@ -57,7 +57,7 @@ const ModelItem = memo<SuggestionItemProps>(({ mobile, meta, identifier }) => {
57
57
  const items: StatisticProps[] = [
58
58
  {
59
59
  title: t('models.contentLength'),
60
- value: meta?.tokens ? formatTokenNumber(meta.tokens) : '--',
60
+ value: meta?.contextWindowTokens ? formatTokenNumber(meta.contextWindowTokens) : '--',
61
61
  },
62
62
  {
63
63
  title: t('models.providerInfo.maxOutput'),
@@ -98,7 +98,7 @@ const ModelItem = memo<SuggestionItemProps>(({ mobile, meta, identifier }) => {
98
98
  </Flexbox>
99
99
  </Flexbox>
100
100
  </Link>
101
- <ModelFeatureTags functionCall={functionCall} tokens={tokens} vision={vision} />
101
+ <ModelFeatureTags functionCall={functionCall} tokens={contextWindowTokens} vision={vision} />
102
102
  </Flexbox>
103
103
  );
104
104
 
@@ -72,7 +72,7 @@ export interface ModelCardProps extends DiscoverModelItem, FlexboxProps {
72
72
  }
73
73
 
74
74
  const ModelCard = memo<ModelCardProps>(({ className, meta, identifier, ...rest }) => {
75
- const { description, title, functionCall, vision, tokens } = meta;
75
+ const { description, title, functionCall, vision, contextWindowTokens } = meta;
76
76
  const { t } = useTranslation('models');
77
77
  const { cx, styles } = useStyles();
78
78
 
@@ -107,7 +107,11 @@ const ModelCard = memo<ModelCardProps>(({ className, meta, identifier, ...rest }
107
107
  </Paragraph>
108
108
  )}
109
109
 
110
- <ModelFeatureTags functionCall={functionCall} tokens={tokens} vision={vision} />
110
+ <ModelFeatureTags
111
+ functionCall={functionCall}
112
+ tokens={contextWindowTokens}
113
+ vision={vision}
114
+ />
111
115
  </Flexbox>
112
116
  </Flexbox>
113
117
  );
@@ -29,11 +29,7 @@ export const useCloudflareProvider = (): ProviderItem => {
29
29
  name: [KeyVaultsConfigKey, providerKey, 'apiKey'],
30
30
  },
31
31
  {
32
- children: (
33
- <Input
34
- placeholder={t(`${providerKey}.baseURLOrAccountID.placeholder`)}
35
- />
36
- ),
32
+ children: <Input placeholder={t(`${providerKey}.baseURLOrAccountID.placeholder`)} />,
37
33
  desc: t(`${providerKey}.baseURLOrAccountID.desc`),
38
34
  label: t(`${providerKey}.baseURLOrAccountID.title`),
39
35
  name: [KeyVaultsConfigKey, providerKey, 'baseURLOrAccountID'],
@@ -80,8 +80,8 @@ const ModelFetcher = memo<ModelFetcherProps>(({ provider }) => {
80
80
  title={
81
81
  latestFetchTime
82
82
  ? t('llm.fetcher.latestTime', {
83
- time: dayjs(latestFetchTime).format('YYYY-MM-DD HH:mm:ss'),
84
- })
83
+ time: dayjs(latestFetchTime).format('YYYY-MM-DD HH:mm:ss'),
84
+ })
85
85
  : t('llm.fetcher.noLatestTime')
86
86
  }
87
87
  >
@@ -20,9 +20,11 @@ const Page = async () => {
20
20
  const changelogService = new ChangelogService();
21
21
  const data = await changelogService.getChangelogIndex();
22
22
 
23
+ if (!data) return notFound();
24
+
23
25
  return (
24
26
  <>
25
- {data.map((item) => (
27
+ {data?.map((item) => (
26
28
  <Suspense fallback={<Loading />} key={item.id}>
27
29
  <Post locale={locale} mobile={mobile} {...item} />
28
30
  </Suspense>
@@ -1,8 +1,13 @@
1
1
  import { Center } from 'react-layout-kit';
2
2
 
3
+ import { isCustomBranding } from '@/const/version';
4
+
5
+ import CircleLoading from '../CircleLoading';
3
6
  import LobeChatText from './LobeChatText';
4
7
 
5
8
  export default () => {
9
+ if (isCustomBranding) return <CircleLoading />;
10
+
6
11
  return (
7
12
  <Center height={'100%'} width={'100%'}>
8
13
  <LobeChatText />
@@ -102,19 +102,22 @@ export const ModelInfoTags = memo<ModelInfoTagsProps>(
102
102
  </div>
103
103
  </Tooltip>
104
104
  )}
105
- {model.tokens !== undefined && (
105
+ {model.contextWindowTokens !== undefined && (
106
106
  <Tooltip
107
107
  overlayStyle={{ maxWidth: 'unset', pointerEvents: 'none' }}
108
108
  placement={placement}
109
109
  title={t('ModelSelect.featureTag.tokens', {
110
- tokens: model.tokens === 0 ? '∞' : numeral(model.tokens).format('0,0'),
110
+ tokens:
111
+ model.contextWindowTokens === 0
112
+ ? '∞'
113
+ : numeral(model.contextWindowTokens).format('0,0'),
111
114
  })}
112
115
  >
113
116
  <Center className={styles.token} title="">
114
- {model.tokens === 0 ? (
117
+ {model.contextWindowTokens === 0 ? (
115
118
  <Infinity size={17} strokeWidth={1.6} />
116
119
  ) : (
117
- formatTokenNumber(model.tokens)
120
+ formatTokenNumber(model.contextWindowTokens)
118
121
  )}
119
122
  </Center>
120
123
  </Tooltip>
@@ -24,7 +24,9 @@ describe('getServerConfig', () => {
24
24
  describe('index url', () => {
25
25
  it('should return default URLs when no environment variables are set', () => {
26
26
  const config = getAppConfig();
27
- expect(config.AGENTS_INDEX_URL).toBe('https://registry.npmmirror.com/@lobehub/agents-index/v1/files/public');
27
+ expect(config.AGENTS_INDEX_URL).toBe(
28
+ 'https://registry.npmmirror.com/@lobehub/agents-index/v1/files/public',
29
+ );
28
30
  expect(config.PLUGINS_INDEX_URL).toBe('https://chat-plugins.lobehub.com');
29
31
  });
30
32
 
@@ -41,7 +43,9 @@ describe('getServerConfig', () => {
41
43
  process.env.PLUGINS_INDEX_URL = '';
42
44
 
43
45
  const config = getAppConfig();
44
- expect(config.AGENTS_INDEX_URL).toBe('https://registry.npmmirror.com/@lobehub/agents-index/v1/files/public');
46
+ expect(config.AGENTS_INDEX_URL).toBe(
47
+ 'https://registry.npmmirror.com/@lobehub/agents-index/v1/files/public',
48
+ );
45
49
  expect(config.PLUGINS_INDEX_URL).toBe('https://chat-plugins.lobehub.com');
46
50
  });
47
51
  });
package/src/config/app.ts CHANGED
@@ -23,8 +23,7 @@ if (typeof window === 'undefined' && isServerMode && !APP_URL) {
23
23
  throw new Error('`APP_URL` is required in server mode');
24
24
  }
25
25
 
26
- const ASSISTANT_INDEX_URL =
27
- 'https://registry.npmmirror.com/@lobehub/agents-index/v1/files/public';
26
+ const ASSISTANT_INDEX_URL = 'https://registry.npmmirror.com/@lobehub/agents-index/v1/files/public';
28
27
 
29
28
  const PLUGINS_INDEX_URL = 'https://chat-plugins.lobehub.com';
30
29
 
@@ -24,6 +24,7 @@ export const FeatureFlagsSchema = z.object({
24
24
  token_counter: z.boolean().optional(),
25
25
 
26
26
  welcome_suggest: z.boolean().optional(),
27
+ changelog: z.boolean().optional(),
27
28
 
28
29
  clerk_sign_up: z.boolean().optional(),
29
30
 
@@ -72,6 +73,7 @@ export const DEFAULT_FEATURE_FLAGS: IFeatureFlags = {
72
73
 
73
74
  market: true,
74
75
  speech_to_text: true,
76
+ changelog: true,
75
77
 
76
78
  // the flags below can only be used with commercial license
77
79
  // if you want to use it in the commercial usage
@@ -94,6 +96,7 @@ export const mapFeatureFlagsEnvToState = (config: IFeatureFlags) => {
94
96
 
95
97
  enablePlugins: config.plugins,
96
98
  showDalle: config.dalle,
99
+ showChangelog: config.changelog,
97
100
 
98
101
  enableCheckUpdates: config.check_updates,
99
102
  showWelcomeSuggest: config.welcome_suggest,
@@ -4,6 +4,7 @@ import { ModelProviderCard } from '@/types/llm';
4
4
  const Ai21: ModelProviderCard = {
5
5
  chatModels: [
6
6
  {
7
+ contextWindowTokens: 256_000,
7
8
  displayName: 'Jamba 1.5 Mini',
8
9
  enabled: true,
9
10
  functionCall: true,
@@ -12,9 +13,9 @@ const Ai21: ModelProviderCard = {
12
13
  input: 0.2,
13
14
  output: 0.4,
14
15
  },
15
- tokens: 256_000,
16
16
  },
17
17
  {
18
+ contextWindowTokens: 256_000,
18
19
  displayName: 'Jamba 1.5 Large',
19
20
  enabled: true,
20
21
  functionCall: true,
@@ -23,7 +24,6 @@ const Ai21: ModelProviderCard = {
23
24
  input: 2,
24
25
  output: 8,
25
26
  },
26
- tokens: 256_000,
27
27
  },
28
28
  ],
29
29
  checkModel: 'jamba-1.5-mini',
@@ -4,6 +4,7 @@ import { ModelProviderCard } from '@/types/llm';
4
4
  const Ai360: ModelProviderCard = {
5
5
  chatModels: [
6
6
  {
7
+ contextWindowTokens: 8192,
7
8
  description:
8
9
  '360GPT2 Pro 是 360 公司推出的高级自然语言处理模型,具备卓越的文本生成和理解能力,尤其在生成与创作领域表现出色,能够处理复杂的语言转换和角色演绎任务。',
9
10
  displayName: '360GPT2 Pro',
@@ -15,9 +16,9 @@ const Ai360: ModelProviderCard = {
15
16
  input: 5,
16
17
  output: 5,
17
18
  },
18
- tokens: 8192,
19
19
  },
20
20
  {
21
+ contextWindowTokens: 8192,
21
22
  description:
22
23
  '360GPT Pro 作为 360 AI 模型系列的重要成员,以高效的文本处理能力满足多样化的自然语言应用场景,支持长文本理解和多轮对话等功能。',
23
24
  displayName: '360GPT Pro',
@@ -30,9 +31,9 @@ const Ai360: ModelProviderCard = {
30
31
  input: 5,
31
32
  output: 5,
32
33
  },
33
- tokens: 8192,
34
34
  },
35
35
  {
36
+ contextWindowTokens: 8192,
36
37
  description:
37
38
  '360GPT Turbo 提供强大的计算和对话能力,具备出色的语义理解和生成效率,是企业和开发者理想的智能助理解决方案。',
38
39
  displayName: '360GPT Turbo',
@@ -44,9 +45,9 @@ const Ai360: ModelProviderCard = {
44
45
  input: 2,
45
46
  output: 2,
46
47
  },
47
- tokens: 8192,
48
48
  },
49
49
  {
50
+ contextWindowTokens: 8192,
50
51
  description:
51
52
  '360GPT Turbo Responsibility 8K 强调语义安全和责任导向,专为对内容安全有高度要求的应用场景设计,确保用户体验的准确性与稳健性。',
52
53
  displayName: '360GPT Turbo Responsibility 8K',
@@ -58,7 +59,6 @@ const Ai360: ModelProviderCard = {
58
59
  input: 2,
59
60
  output: 2,
60
61
  },
61
- tokens: 8192,
62
62
  },
63
63
  ],
64
64
  checkModel: '360gpt-turbo',
@@ -4,6 +4,7 @@ import { ModelProviderCard } from '@/types/llm';
4
4
  const Anthropic: ModelProviderCard = {
5
5
  chatModels: [
6
6
  {
7
+ contextWindowTokens: 200_000,
7
8
  description:
8
9
  'Claude 3.5 Haiku 是 Anthropic 最快的下一代模型。与 Claude 3 Haiku 相比,Claude 3.5 Haiku 在各项技能上都有所提升,并在许多智力基准测试中超越了上一代最大的模型 Claude 3 Opus。',
9
10
  displayName: 'Claude 3.5 Haiku',
@@ -18,9 +19,9 @@ const Anthropic: ModelProviderCard = {
18
19
  writeCacheInput: 1.25,
19
20
  },
20
21
  releasedAt: '2024-11-05',
21
- tokens: 200_000,
22
22
  },
23
23
  {
24
+ contextWindowTokens: 200_000,
24
25
  description:
25
26
  'Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同时保持与 Sonnet 相同的价格。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。',
26
27
  displayName: 'Claude 3.5 Sonnet',
@@ -35,10 +36,10 @@ const Anthropic: ModelProviderCard = {
35
36
  writeCacheInput: 3.75,
36
37
  },
37
38
  releasedAt: '2024-10-22',
38
- tokens: 200_000,
39
39
  vision: true,
40
40
  },
41
41
  {
42
+ contextWindowTokens: 200_000,
42
43
  description:
43
44
  'Claude 3.5 Sonnet 提供了超越 Opus 的能力和比 Sonnet 更快的速度,同时保持与 Sonnet 相同的价格。Sonnet 特别擅长编程、数据科学、视觉处理、代理任务。',
44
45
  displayName: 'Claude 3.5 Sonnet 0620',
@@ -52,10 +53,10 @@ const Anthropic: ModelProviderCard = {
52
53
  writeCacheInput: 3.75,
53
54
  },
54
55
  releasedAt: '2024-06-20',
55
- tokens: 200_000,
56
56
  vision: true,
57
57
  },
58
58
  {
59
+ contextWindowTokens: 200_000,
59
60
  description:
60
61
  'Claude 3 Haiku 是 Anthropic 的最快且最紧凑的模型,旨在实现近乎即时的响应。它具有快速且准确的定向性能。',
61
62
  displayName: 'Claude 3 Haiku',
@@ -67,10 +68,10 @@ const Anthropic: ModelProviderCard = {
67
68
  output: 1.25,
68
69
  },
69
70
  releasedAt: '2024-03-07',
70
- tokens: 200_000,
71
71
  vision: true,
72
72
  },
73
73
  {
74
+ contextWindowTokens: 200_000,
74
75
  description:
75
76
  'Claude 3 Sonnet 在智能和速度方面为企业工作负载提供了理想的平衡。它以更低的价格提供最大效用,可靠且适合大规模部署。',
76
77
  displayName: 'Claude 3 Sonnet',
@@ -82,10 +83,10 @@ const Anthropic: ModelProviderCard = {
82
83
  output: 15,
83
84
  },
84
85
  releasedAt: '2024-02-29',
85
- tokens: 200_000,
86
86
  vision: true,
87
87
  },
88
88
  {
89
+ contextWindowTokens: 200_000,
89
90
  description:
90
91
  'Claude 3 Opus 是 Anthropic 用于处理高度复杂任务的最强大模型。它在性能、智能、流畅性和理解力方面表现卓越。',
91
92
  displayName: 'Claude 3 Opus',
@@ -98,10 +99,10 @@ const Anthropic: ModelProviderCard = {
98
99
  output: 75,
99
100
  },
100
101
  releasedAt: '2024-02-29',
101
- tokens: 200_000,
102
102
  vision: true,
103
103
  },
104
104
  {
105
+ contextWindowTokens: 200_000,
105
106
  description:
106
107
  'Claude 2 为企业提供了关键能力的进步,包括业界领先的 200K token 上下文、大幅降低模型幻觉的发生率、系统提示以及一个新的测试功能:工具调用。',
107
108
  displayName: 'Claude 2.1',
@@ -112,9 +113,9 @@ const Anthropic: ModelProviderCard = {
112
113
  output: 24,
113
114
  },
114
115
  releasedAt: '2023-11-21',
115
- tokens: 200_000,
116
116
  },
117
117
  {
118
+ contextWindowTokens: 100_000,
118
119
  description:
119
120
  'Claude 2 为企业提供了关键能力的进步,包括业界领先的 200K token 上下文、大幅降低模型幻觉的发生率、系统提示以及一个新的测试功能:工具调用。',
120
121
  displayName: 'Claude 2.0',
@@ -125,7 +126,6 @@ const Anthropic: ModelProviderCard = {
125
126
  output: 24,
126
127
  },
127
128
  releasedAt: '2023-07-11',
128
- tokens: 100_000,
129
129
  },
130
130
  ],
131
131
  checkModel: 'claude-3-haiku-20240307',
@@ -4,6 +4,7 @@ import { ModelProviderCard } from '@/types/llm';
4
4
  const Azure: ModelProviderCard = {
5
5
  chatModels: [
6
6
  {
7
+ contextWindowTokens: 16_385,
7
8
  deploymentName: 'gpt-35-turbo',
8
9
  description:
9
10
  'GPT 3.5 Turbo,OpenAI提供的高效模型,适用于聊天和文本生成任务,支持并行函数调用。',
@@ -12,44 +13,43 @@ const Azure: ModelProviderCard = {
12
13
  functionCall: true,
13
14
  id: 'gpt-35-turbo',
14
15
  maxOutput: 4096,
15
- tokens: 16_385,
16
16
  },
17
17
  {
18
+ contextWindowTokens: 16_384,
18
19
  deploymentName: 'gpt-35-turbo-16k',
19
20
  description: 'GPT 3.5 Turbo 16k,高容量文本生成模型,适合复杂任务。',
20
21
  displayName: 'GPT 3.5 Turbo',
21
22
  functionCall: true,
22
23
  id: 'gpt-35-turbo-16k',
23
- tokens: 16_384,
24
24
  },
25
25
  {
26
+ contextWindowTokens: 128_000,
26
27
  deploymentName: 'gpt-4-turbo',
27
28
  description: 'GPT 4 Turbo,多模态模型,提供杰出的语言理解和生成能力,同时支持图像输入。',
28
29
  displayName: 'GPT 4 Turbo',
29
30
  enabled: true,
30
31
  functionCall: true,
31
32
  id: 'gpt-4',
32
- tokens: 128_000,
33
33
  vision: true,
34
34
  },
35
35
  {
36
+ contextWindowTokens: 128_000,
36
37
  deploymentName: 'gpt-4o-mini',
37
38
  description: 'GPT-4o Mini,小型高效模型,具备与GPT-4o相似的卓越性能。',
38
39
  displayName: 'GPT 4o Mini',
39
40
  enabled: true,
40
41
  functionCall: true,
41
42
  id: 'gpt-4o-mini',
42
- tokens: 128_000,
43
43
  vision: true,
44
44
  },
45
45
  {
46
+ contextWindowTokens: 128_000,
46
47
  deploymentName: 'gpt-4o',
47
48
  description: 'GPT-4o 是最新的多模态模型,结合高级文本和图像处理能力。',
48
49
  displayName: 'GPT 4o',
49
50
  enabled: true,
50
51
  functionCall: true,
51
52
  id: 'gpt-4o',
52
- tokens: 128_000,
53
53
  vision: true,
54
54
  },
55
55
  ],