Skip to content

Commit 718f477

Browse files
authored
🐛 fix: fix ai model abilities issue (#6060)
1 parent 10c2af1 commit 718f477

File tree

7 files changed

+111
-31
lines changed

7 files changed

+111
-31
lines changed

src/database/repositories/aiInfra/index.ts

+16-5
Original file line numberDiff line numberDiff line change
@@ -1,3 +1,4 @@
1+
import { isEmpty } from 'lodash-es';
12
import pMap from 'p-map';
23

34
import { DEFAULT_MODEL_PROVIDER_LIST } from '@/config/modelProviders';
@@ -88,15 +89,25 @@ export class AiInfraRepos {
8889
.map<EnabledAiModel & { enabled?: boolean | null }>((item) => {
8990
const user = allModels.find((m) => m.id === item.id && m.providerId === provider.id);
9091

92+
if (!user)
93+
return {
94+
...item,
95+
abilities: item.abilities || {},
96+
providerId: provider.id,
97+
};
98+
9199
return {
92-
abilities: !!user ? user.abilities : item.abilities || {},
93-
config: !!user ? user.config : item.config,
94-
contextWindowTokens: !!user ? user.contextWindowTokens : item.contextWindowTokens,
100+
abilities: !isEmpty(user.abilities) ? user.abilities : item.abilities || {},
101+
config: !isEmpty(user.config) ? user.config : item.config,
102+
contextWindowTokens:
103+
typeof user.contextWindowTokens === 'number'
104+
? user.contextWindowTokens
105+
: item.contextWindowTokens,
95106
displayName: user?.displayName || item.displayName,
96-
enabled: !!user ? user.enabled : item.enabled,
107+
enabled: user.enabled || item.enabled,
97108
id: item.id,
98109
providerId: provider.id,
99-
sort: !!user ? user.sort : undefined,
110+
sort: user.sort || undefined,
100111
type: item.type,
101112
};
102113
})
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { useAiInfraStore } from '@/store/aiInfra';
2+
3+
import JsonViewer from './JsonViewer';
4+
5+
const AiProviderRuntimeConfig = () => {
6+
const aiProviderRuntimeConfig = useAiInfraStore((s) => s.aiProviderRuntimeConfig);
7+
8+
return <JsonViewer data={aiProviderRuntimeConfig} />;
9+
};
10+
11+
export default AiProviderRuntimeConfig;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,17 @@
1+
import { Highlighter } from '@lobehub/ui';
2+
import { memo } from 'react';
3+
import { Flexbox } from 'react-layout-kit';
4+
5+
interface JsonViewerProps {
6+
data: object;
7+
}
8+
9+
const JsonViewer = memo<JsonViewerProps>(({ data }) => {
10+
return (
11+
<Flexbox style={{ overflow: 'scroll' }}>
12+
<Highlighter language={'json'}>{JSON.stringify(data, null, 2)}</Highlighter>
13+
</Flexbox>
14+
);
15+
});
16+
17+
export default JsonViewer;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,11 @@
1+
import { useServerConfigStore } from '@/store/serverConfig';
2+
3+
import JsonViewer from './JsonViewer';
4+
5+
const ServerConfig = () => {
6+
const serverConfig = useServerConfigStore((s) => s.serverConfig);
7+
8+
return <JsonViewer data={serverConfig} />;
9+
};
10+
11+
export default ServerConfig;
Original file line numberDiff line numberDiff line change
@@ -0,0 +1,42 @@
1+
'use client';
2+
3+
import { TabsNav } from '@lobehub/ui';
4+
import { useState } from 'react';
5+
import { Flexbox } from 'react-layout-kit';
6+
7+
import AiProviderRuntimeConfig from './AiProviderRuntimeConfig';
8+
import ServerConfig from './ServerConfig';
9+
10+
enum TabKey {
11+
AiProviderRuntimeConfig = 'aiProviderRuntimeConfig',
12+
ServerConfig = 'serverConfig',
13+
}
14+
15+
const SystemInspector = () => {
16+
const [activeTab, setActiveTab] = useState<TabKey>(TabKey.ServerConfig);
17+
18+
return (
19+
<Flexbox gap={4} height={'100%'}>
20+
<TabsNav
21+
activeKey={activeTab}
22+
items={[
23+
{
24+
key: TabKey.ServerConfig,
25+
label: 'Server Config',
26+
},
27+
{
28+
key: TabKey.AiProviderRuntimeConfig,
29+
label: 'Ai Provider Runtime Config',
30+
},
31+
]}
32+
onChange={(activeTab) => setActiveTab(activeTab as TabKey)}
33+
variant={'compact'}
34+
/>
35+
36+
{activeTab === TabKey.ServerConfig && <ServerConfig />}
37+
{activeTab === TabKey.AiProviderRuntimeConfig && <AiProviderRuntimeConfig />}
38+
</Flexbox>
39+
);
40+
};
41+
42+
export default SystemInspector;

src/features/DevPanel/features/FloatPanel.tsx

+7-25
Original file line numberDiff line numberDiff line change
@@ -1,7 +1,7 @@
11
'use client';
22

33
import { ActionIcon, FluentEmoji, Icon, SideNav } from '@lobehub/ui';
4-
import { Dropdown, FloatButton } from 'antd';
4+
import { FloatButton } from 'antd';
55
import { createStyles } from 'antd-style';
66
import { BugIcon, BugOff, XIcon } from 'lucide-react';
77
import { ReactNode, memo, useEffect, useState } from 'react';
@@ -81,7 +81,7 @@ interface CollapsibleFloatPanelProps {
8181
const CollapsibleFloatPanel = memo<CollapsibleFloatPanelProps>(({ items }) => {
8282
const { styles, theme } = useStyles();
8383
const [tab, setTab] = useState<string>(items[0].key);
84-
const [isHide, setIsHide] = useState(false);
84+
8585
const [isExpanded, setIsExpanded] = useState(false);
8686
const [position, setPosition] = useState({ x: 100, y: 100 });
8787
const [size, setSize] = useState({ height: minHeight, width: minWidth });
@@ -108,29 +108,11 @@ const CollapsibleFloatPanel = memo<CollapsibleFloatPanelProps>(({ items }) => {
108108

109109
return (
110110
<>
111-
{!isHide && (
112-
<Dropdown
113-
menu={{
114-
items: [
115-
{
116-
icon: (
117-
<Icon color={theme.colorTextSecondary} icon={BugOff} size={{ fontSize: 16 }} />
118-
),
119-
key: 'hide',
120-
label: 'Hide Toolbar',
121-
onClick: () => setIsHide(true),
122-
},
123-
],
124-
}}
125-
trigger={['hover']}
126-
>
127-
<FloatButton
128-
className={styles.floatButton}
129-
icon={<Icon icon={isExpanded ? BugOff : BugIcon} />}
130-
onClick={() => setIsExpanded(!isExpanded)}
131-
/>
132-
</Dropdown>
133-
)}
111+
<FloatButton
112+
className={styles.floatButton}
113+
icon={<Icon icon={isExpanded ? BugOff : BugIcon} />}
114+
onClick={() => setIsExpanded(!isExpanded)}
115+
/>
134116
{isExpanded && (
135117
<Rnd
136118
bounds="window"

src/features/DevPanel/index.tsx

+7-1
Original file line numberDiff line numberDiff line change
@@ -1,9 +1,10 @@
1-
import { BookText, DatabaseIcon, FlagIcon, GlobeLockIcon } from 'lucide-react';
1+
import { BookText, Cog, DatabaseIcon, FlagIcon, GlobeLockIcon } from 'lucide-react';
22

33
import CacheViewer from './CacheViewer';
44
import FeatureFlagViewer from './FeatureFlagViewer';
55
import MetadataViewer from './MetadataViewer';
66
import PostgresViewer from './PostgresViewer';
7+
import SystemInspector from './SystemInspector';
78
import FloatPanel from './features/FloatPanel';
89

910
const DevPanel = () => (
@@ -29,6 +30,11 @@ const DevPanel = () => (
2930
icon: <FlagIcon size={16} />,
3031
key: 'Feature Flags',
3132
},
33+
{
34+
children: <SystemInspector />,
35+
icon: <Cog size={16} />,
36+
key: 'System Status',
37+
},
3238
]}
3339
/>
3440
);

0 commit comments

Comments
 (0)