Skip to content

Commit

Permalink
✨ feat: Add XVERSE (元象大模型) model provider
Browse files Browse the repository at this point in the history
  • Loading branch information
hezhijie0327 authored Jul 10, 2024
1 parent 6e6ad3e commit a18f66a
Show file tree
Hide file tree
Showing 16 changed files with 349 additions and 0 deletions.
7 changes: 7 additions & 0 deletions src/app/(main)/settings/llm/ProviderList/providers.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -15,6 +15,7 @@ import {
Stepfun,
Together,
Tongyi,
// Xverse, // TODO: Change to xverse
ZeroOne,
Zhipu,
} from '@lobehub/icons';
Expand All @@ -39,6 +40,7 @@ import {
StepfunProviderCard,
TaichuProviderCard,
TogetherAIProviderCard,
XverseProviderCard,
ZeroOneProviderCard,
ZhiPuProviderCard,
} from '@/config/modelProviders';
Expand Down Expand Up @@ -184,6 +186,11 @@ export const useProviderList = (): ProviderItem[] => {
docUrl: urlJoin(BASE_DOC_URL, 'taichu'),
title: <AiMass.Combine size={ 28 } type={ 'color' } />,
},
{
...XverseProviderCard,
docUrl: urlJoin(BASE_DOC_URL, 'xverse'),
title: <Baichuan.Combine size={ 28 } type={ 'color' } />, // TODO: change icon to xverse
},
],
[azureProvider, ollamaProvider, ollamaProvider, bedrockProvider],
);
Expand Down
7 changes: 7 additions & 0 deletions src/app/api/chat/agentRuntime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -184,6 +184,13 @@ const getLlmOptionsFromPayload = (provider: string, payload: JWTPayload) => {

const apiKey = apiKeyManager.pick(payload?.apiKey || TAICHU_API_KEY);

return { apiKey };
}
case ModelProvider.Xverse: {
const { XVERSE_API_KEY } = getLLMConfig();

const apiKey = apiKeyManager.pick(payload?.apiKey || XVERSE_API_KEY);

return { apiKey };
}
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/ModelIcon/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -30,6 +30,7 @@ import {
Stepfun,
Tongyi,
Wenxin,
// Xverse, // TODO: change icon to xverse
Yi,
} from '@lobehub/icons';
import { memo } from 'react';
Expand Down Expand Up @@ -68,6 +69,7 @@ const ModelIcon = memo<ModelProviderIconProps>(({ model: originModel, size = 12
if (model.includes('dbrx')) return <Dbrx.Avatar size={size} />;
if (model.includes('step')) return <Stepfun.Avatar size={size} />;
if (model.includes('taichu')) return <AiMass.Avatar size={size} />;
if (model.includes('xverse')) return <Baichuan.Avatar size={size} />; // TODO: change icon to xverse

// below: To be supported in providers, move up if supported
if (model.includes('baichuan'))
Expand Down
5 changes: 5 additions & 0 deletions src/components/ModelProviderIcon/index.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import {
Stepfun,
Together,
Tongyi,
// Xverse, // TODO: change the icon to xverse
ZeroOne,
Zhipu,
} from '@lobehub/icons';
Expand Down Expand Up @@ -124,6 +125,10 @@ const ModelProviderIcon = memo<ModelProviderIconProps>(({ provider }) => {
return <AiMass size={20} />;
}

case ModelProvider.Xverse: {
return <Baichuan size={20} />; // TODO: change icon to xverse
}

default: {
return null;
}
Expand Down
2 changes: 2 additions & 0 deletions src/components/ModelTag/ModelIcon.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -29,6 +29,7 @@ import {
Stability,
Tongyi,
Wenxin,
// Xverse, // TODO: change icon to xverse
Yi,
} from '@lobehub/icons';
import { memo } from 'react';
Expand Down Expand Up @@ -63,6 +64,7 @@ const ModelIcon = memo<ModelIconProps>(({ model, size = 12 }) => {
if (model.includes('command')) return <Cohere size={size} />;
if (model.includes('dbrx')) return <Dbrx size={size} />;
if (model.includes('taichu')) return <AiMass size={size} />;
if (model.includes('xverse')) return <Baichuan size={size} />; // TODO: change icon to xverse

// below: To be supported in providers, move up if supported
if (model.includes('baichuan')) return <Baichuan size={size} />;
Expand Down
6 changes: 6 additions & 0 deletions src/config/llm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -88,6 +88,9 @@ export const getLLMConfig = () => {

ENABLED_TAICHU: z.boolean(),
TAICHU_API_KEY: z.string().optional(),

ENABLED_XVERSE: z.boolean(),
XVERSE_API_KEY: z.string().optional(),
},
runtimeEnv: {
API_KEY_SELECT_MODE: process.env.API_KEY_SELECT_MODE,
Expand Down Expand Up @@ -167,6 +170,9 @@ export const getLLMConfig = () => {

ENABLED_TAICHU: !!process.env.TAICHU_API_KEY,
TAICHU_API_KEY: process.env.TAICHU_API_KEY,

ENABLED_XVERSE: !!process.env.XVERSE_API_KEY,
XVERSE_API_KEY: process.env.XVERSE_API_KEY,
},
});
};
Expand Down
4 changes: 4 additions & 0 deletions src/config/modelProviders/index.ts
Original file line number Diff line number Diff line change
Expand Up @@ -18,6 +18,7 @@ import QwenProvider from './qwen';
import StepfunProvider from './stepfun';
import TaichuProvider from './taichu';
import TogetherAIProvider from './togetherai';
import XverseProvider from './xverse';
import ZeroOneProvider from './zeroone';
import ZhiPuProvider from './zhipu';

Expand All @@ -41,6 +42,7 @@ export const LOBE_DEFAULT_MODEL_LIST: ChatModelCard[] = [
StepfunProvider.chatModels,
BaichuanProvider.chatModels,
TaichuProvider.chatModels,
XverseProvider.chatModels,
].flat();

export const DEFAULT_MODEL_PROVIDER_LIST = [
Expand All @@ -64,6 +66,7 @@ export const DEFAULT_MODEL_PROVIDER_LIST = [
StepfunProvider,
BaichuanProvider,
TaichuProvider,
XverseProvider,
];

export const filterEnabledModels = (provider: ModelProviderCard) => {
Expand Down Expand Up @@ -93,5 +96,6 @@ export { default as QwenProviderCard } from './qwen';
export { default as StepfunProviderCard } from './stepfun';
export { default as TaichuProviderCard } from './taichu';
export { default as TogetherAIProviderCard } from './togetherai';
export { default as XverseProviderCard } from './xverse';
export { default as ZeroOneProviderCard } from './zeroone';
export { default as ZhiPuProviderCard } from './zhipu';
30 changes: 30 additions & 0 deletions src/config/modelProviders/xverse.ts
Original file line number Diff line number Diff line change
@@ -0,0 +1,30 @@
import { ModelProviderCard } from '@/types/llm';

// ref https://chat.xverse.cn/home/index.html
// ref https://chat.xverse.cn/docs/api-reference
const Xverse: ModelProviderCard = {
chatModels: [
{
displayName: 'XVERSE-13B-2',
enabled: true,
functionCall: false,
id: 'XVERSE-13B-2',
maxOutput: 2048,
tokens: 16_384,
},
{
displayName: 'XVERSE-65B-2',
enabled: true,
functionCall: false,
id: 'XVERSE-65B-2',
maxOutput: 2048,
tokens: 8192,
},
],
checkModel: 'XVERSE-13B-2',
id: 'xverse',
modelList: { showModelFetcher: true },
name: 'Xverse',
};

export default Xverse;
5 changes: 5 additions & 0 deletions src/const/settings/llm.ts
Original file line number Diff line number Diff line change
Expand Up @@ -16,6 +16,7 @@ import {
StepfunProviderCard,
TaichuProviderCard,
TogetherAIProviderCard,
XverseProviderCard,
ZeroOneProviderCard,
ZhiPuProviderCard,
filterEnabledModels,
Expand Down Expand Up @@ -96,6 +97,10 @@ export const DEFAULT_LLM_CONFIG: UserModelProviderConfig = {
enabled: false,
enabledModels: filterEnabledModels(TogetherAIProviderCard),
},
xverse: {
enabled: false,
enabledModels: filterEnabledModels(XverseProviderCard),
},
zeroone: {
enabled: false,
enabledModels: filterEnabledModels(ZeroOneProviderCard),
Expand Down
5 changes: 5 additions & 0 deletions src/features/Conversation/Error/APIKeyForm/ProviderAvatar.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -14,6 +14,7 @@ import {
Stepfun,
Together,
Tongyi,
// Xverse, // TODO: change icon to xverse
ZeroOne,
Zhipu,
} from '@lobehub/icons';
Expand Down Expand Up @@ -90,6 +91,10 @@ const ProviderAvatar = memo<ProviderAvatarProps>(({ provider }) => {
return <Together color={Together.colorPrimary} size={56} />;
}

case ModelProvider.Xverse: {
return <Baichuan color={Baichuan.colorPrimary} size={56} />; // TODO: Change icon to xverse
}

case ModelProvider.ZeroOne: {
return <ZeroOne color={ZeroOne.colorPrimary} size={56} />;
}
Expand Down
7 changes: 7 additions & 0 deletions src/libs/agent-runtime/AgentRuntime.ts
Original file line number Diff line number Diff line change
Expand Up @@ -27,6 +27,7 @@ import {
ModelProvider,
TextToImagePayload,
} from './types';
import { LobeXverseAI } from './xverse';
import { LobeZeroOneAI } from './zeroone';
import { LobeZhipuAI } from './zhipu';

Expand Down Expand Up @@ -121,6 +122,7 @@ class AgentRuntime {
stepfun: Partial<ClientOptions>;
taichu: Partial<ClientOptions>;
togetherai: Partial<ClientOptions>;
xverse: Partial<ClientOptions>;
zeroone: Partial<ClientOptions>;
zhipu: Partial<ClientOptions>;
}>,
Expand Down Expand Up @@ -233,6 +235,11 @@ class AgentRuntime {
runtimeModel = new LobeTaichuAI(params.taichu ?? {});
break
}

case ModelProvider.Xverse: {
runtimeModel = new LobeXverseAI(params.xverse ?? {});
break
}
}

return new AgentRuntime(runtimeModel);
Expand Down
1 change: 1 addition & 0 deletions src/libs/agent-runtime/types/type.ts
Original file line number Diff line number Diff line change
Expand Up @@ -40,6 +40,7 @@ export enum ModelProvider {
Stepfun = 'stepfun',
Taichu = 'taichu',
TogetherAI = 'togetherai',
Xverse = 'xverse',
ZeroOne = 'zeroone',
ZhiPu = 'zhipu',
}
Expand Down
Loading

0 comments on commit a18f66a

Please sign in to comment.