update: 添加MuMuのAPI,提供更方便的api接入

This commit is contained in:
xiamuceer
2026-03-14 19:07:33 +08:00
parent d69f717e05
commit 187fa420b9
3 changed files with 104 additions and 4 deletions
+5
View File
@@ -33,3 +33,8 @@ transformers==4.57.1
# Sentence Transformers(更新到最新稳定版本以修复 FutureWarning
sentence-transformers==5.1.2
# PyTorch 版本锁定(用于打包环境)
torch==2.8.0
torchvision==0.23.0
torchaudio==2.8.0
+19
View File
@@ -412,6 +412,11 @@ export default function ProjectList() {
icon: <SettingOutlined />,
label: 'API 设置',
},
{
key: 'mumu-api',
icon: <ApiOutlined />,
label: 'MuMuのAPI',
},
],
},
];
@@ -442,6 +447,11 @@ export default function ProjectList() {
icon: <SettingOutlined />,
label: 'API 设置',
},
{
key: 'mumu-api',
icon: <ApiOutlined />,
label: 'MuMuのAPI',
},
];
return (
@@ -550,6 +560,10 @@ export default function ProjectList() {
selectedKeys={[activeView]}
style={{ borderRight: 0, paddingTop: 12, width: '100%' }}
onClick={({ key }) => {
if (key === 'mumu-api') {
window.open('https://api.mumuverse.space', '_blank', 'noopener,noreferrer');
return;
}
changeView(key as ProjectListView);
}}
items={collapsed ? sideMenuItemsCollapsed : sideMenuItems}
@@ -751,6 +765,11 @@ export default function ProjectList() {
selectedKeys={[activeView]}
style={{ borderRight: 0, paddingTop: 8 }}
onClick={({ key }) => {
if (key === 'mumu-api') {
window.open('https://api.mumuverse.space', '_blank', 'noopener,noreferrer');
setDrawerVisible(false);
return;
}
changeView(key as ProjectListView);
setDrawerVisible(false);
}}
+80 -4
View File
@@ -280,12 +280,29 @@ export default function SettingsPage() {
{ value: 'openai', label: 'OpenAI Compatible', defaultUrl: 'https://api.openai.com/v1' },
// { value: 'anthropic', label: 'Anthropic (Claude)', defaultUrl: 'https://api.anthropic.com' },
{ value: 'gemini', label: 'Google Gemini', defaultUrl: 'https://generativelanguage.googleapis.com/v1beta' },
{
value: 'mumu',
label: 'MuMuのAPI',
defaultUrl: 'https://api.mumuverse.space/v1',
defaultModel: 'gemini-3-flash-preview'
},
];
const selectedProvider = Form.useWatch('api_provider', form);
const selectedPresetProvider = Form.useWatch('api_provider', presetForm);
const handleProviderChange = (value: string) => {
const provider = apiProviders.find(p => p.value === value);
if (provider && provider.defaultUrl) {
form.setFieldValue('api_base_url', provider.defaultUrl);
if (provider) {
const nextValues: Record<string, string> = {};
if (provider.defaultUrl) {
nextValues.api_base_url = provider.defaultUrl;
}
if (provider.value === 'mumu') {
nextValues.api_key = '';
nextValues.llm_model = provider.defaultModel || 'gemini-3-flash-preview';
}
form.setFieldsValue(nextValues);
}
// 清空模型列表,需要重新获取
setModelOptions([]);
@@ -488,8 +505,16 @@ export default function SettingsPage() {
// 预设编辑窗口:提供商变更时更新默认URL并清空模型列表
const handlePresetProviderChange = (value: string) => {
const provider = apiProviders.find(p => p.value === value);
if (provider && provider.defaultUrl) {
presetForm.setFieldValue('api_base_url', provider.defaultUrl);
if (provider) {
const nextValues: Record<string, string> = {};
if (provider.defaultUrl) {
nextValues.api_base_url = provider.defaultUrl;
}
if (provider.value === 'mumu') {
nextValues.api_key = '';
nextValues.llm_model = provider.defaultModel || 'gemini-3-flash-preview';
}
presetForm.setFieldsValue(nextValues);
}
// 清空模型列表,需要重新获取
setPresetModelOptions([]);
@@ -780,6 +805,8 @@ export default function SettingsPage() {
// return 'purple';
case 'gemini':
return 'green';
case 'mumu':
return 'magenta';
default:
return 'default';
}
@@ -1050,6 +1077,30 @@ export default function SettingsPage() {
</Select>
</Form.Item>
{selectedProvider === 'mumu' && (
<Alert
type="info"
showIcon
message="MuMuのAPI 专属供应商"
description={
<Space direction="vertical" size={8} style={{ width: '100%' }}>
<Text>
API Key Key
</Text>
<div>
<Button
type="primary"
onClick={() => window.open('https://api.mumuverse.space', '_blank', 'noopener,noreferrer')}
>
MuMuのAPI
</Button>
</div>
</Space>
}
style={{ marginBottom: 16 }}
/>
)}
<Form.Item
label={
<Space size={4}>
@@ -1568,8 +1619,33 @@ export default function SettingsPage() {
<Select placeholder="选择提供商" onChange={handlePresetProviderChange}>
<Select.Option value="openai">OpenAI</Select.Option>
<Select.Option value="gemini">Google Gemini</Select.Option>
<Select.Option value="mumu">MuMuのAPI</Select.Option>
</Select>
</Form.Item>
{selectedPresetProvider === 'mumu' && (
<Alert
type="info"
showIcon
message="MuMuのAPI 专属供应商"
description={
<Space direction="vertical" size={8} style={{ width: '100%' }}>
<Text>
API Key Key
</Text>
<div>
<Button
type="primary"
onClick={() => window.open('https://api.mumuverse.space', '_blank', 'noopener,noreferrer')}
>
MuMuのAPI
</Button>
</div>
</Space>
}
style={{ marginBottom: 16 }}
/>
)}
</Col>
</Row>