Skip to content
Merged
Show file tree
Hide file tree
Changes from all commits
Commits
File filter

Filter by extension

Filter by extension

Conversations
Failed to load comments.
Loading
Jump to
Jump to file
Failed to load files.
Loading
Diff view
Diff view
88 changes: 83 additions & 5 deletions ui/ModelModal/src/ModelModal.tsx
Original file line number Diff line number Diff line change
Expand Up @@ -115,6 +115,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
api_version: '',
api_header_key: '',
api_header_value: '',
resource_name: '',
// 重置高级设置
context_window_size: 64000,
max_output_tokens: 8192,
Expand Down Expand Up @@ -157,6 +158,14 @@ export const ModelModal: React.FC<ModelModalProps> = ({
return forceUseOriginalHost() ? baseUrl : `${baseUrl}/v1`;
};

// 从Azure OpenAI base_url中提取resource_name
const extractResourceNameFromUrl = (baseUrl: string): string => {
if (!baseUrl) return '';
// 匹配 https://<resource_name>.openai.azure.com 格式
const match = baseUrl.match(/https:\/\/([^.]+)\.openai\.azure\.com/);
return match ? match[1] : '';
};

const getModel = (value: AddModelForm) => {
let header = '';
if (value.api_header_key && value.api_header_value) {
Expand Down Expand Up @@ -337,6 +346,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
api_header_value: value.api_header?.split('=')[1] || '',
model_type,
show_name: value.show_name || '',
resource_name: value.provider === 'AzureOpenAI' ? extractResourceNameFromUrl(value.base_url || '') : '',
context_window_size: 64000,
max_output_tokens: 8192,
enable_r1_params: false,
Expand All @@ -355,6 +365,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
api_header_key: value.api_header?.split('=')[0] || '',
api_header_value: value.api_header?.split('=')[1] || '',
show_name: value.show_name || '',
resource_name: value.provider === 'AzureOpenAI' ? extractResourceNameFromUrl(value.base_url || '') : '',
context_window_size: value.param?.context_window || 64000,
max_output_tokens: value.param?.max_tokens || 8192,
enable_r1_params: value.param?.r1_enabled || false,
Expand All @@ -379,6 +390,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
api_header_key: '',
api_header_value: '',
show_name: '',
resource_name: '',
// 高级设置默认值
context_window_size: 64000,
max_output_tokens: 8192,
Expand Down Expand Up @@ -533,6 +545,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
api_header_key: '',
api_header_value: '',
show_name: '',
resource_name: '',
// 重置高级设置
context_window_size: 64000,
max_output_tokens: 8192,
Expand Down Expand Up @@ -571,12 +584,38 @@ export const ModelModal: React.FC<ModelModalProps> = ({
},
}}
>
<Box sx={{ fontSize: 14, lineHeight: '32px' }}>
API 地址{' '}
<Box component={'span'} sx={{ color: 'red' }}>
*
<Stack
direction={'row'}
alignItems={'center'}
justifyContent={'space-between'}
sx={{ fontSize: 14, lineHeight: '32px' }}
>
<Box>
API 地址{' '}
<Box component={'span'} sx={{ color: 'red' }}>
*
</Box>
</Box>
</Box>
{providers[providerBrand].addingModelTutorial && (
<Box
component={'span'}
sx={{
color: 'info.main',
cursor: 'pointer',
ml: 1,
textAlign: 'right',
}}
onClick={() =>
window.open(
providers[providerBrand].addingModelTutorial,
'_blank'
)
}
>
添加模型教程
</Box>
)}
</Stack>
<Controller
control={control}
name='base_url'
Expand Down Expand Up @@ -765,6 +804,45 @@ export const ModelModal: React.FC<ModelModalProps> = ({
)}
{providerBrand === 'AzureOpenAI' && (
<>
<Box sx={{ fontSize: 14, lineHeight: '32px', mt: 2 }}>
Resource Name
<Box component={'span'} sx={{ color: 'red' }}>
*
</Box>
</Box>
<Controller
control={control}
name='resource_name'
rules={{
required: {
value: true,
message: 'Resource Name 不能为空',
},
}}
render={({ field }) => (
<TextField
{...field}
fullWidth
size='small'
error={!!errors.resource_name}
helperText={errors.resource_name?.message}
onChange={(e) => {
field.onChange(e.target.value);
// 动态更新base_url
const resourceName = e.target.value;
if (resourceName) {
setValue('base_url', `https://${resourceName}.openai.azure.com`);
} else {
setValue('base_url', '');
}
setModelUserList([]);
setValue('model_name', '');
setSuccess(false);
setAddModelError('');
}}
/>
)}
/>
<Box sx={{ fontSize: 14, lineHeight: '32px', mt: 2 }}>
API Version
</Box>
Expand Down
6 changes: 5 additions & 1 deletion ui/ModelModal/src/constants/providers.ts
Original file line number Diff line number Diff line change
Expand Up @@ -128,6 +128,7 @@ export const DEFAULT_MODEL_PROVIDERS: ModelProviderMap = {
analysis: true,
analysis_vl: true,
modelDocumentUrl: 'https://github.com/ollama/ollama/tree/main/docs',
addingModelTutorial: 'https://pandawiki.docs.baizhi.cloud/node/019a160d-0528-736a-b88e-32a2d1207f3e',
defaultBaseUrl: 'http://172.17.0.1:11434',
},
SiliconFlow: {
Expand Down Expand Up @@ -166,7 +167,7 @@ export const DEFAULT_MODEL_PROVIDERS: ModelProviderMap = {
label: 'AzureOpenAI',
cn: 'Azure OpenAI',
icon: 'ikun-azure',
urlWrite: true,
urlWrite: false,
secretRequired: true,
customHeader: false,
chat: true,
Expand Down Expand Up @@ -264,6 +265,7 @@ export const DEFAULT_MODEL_PROVIDERS: ModelProviderMap = {
analysis: true,
analysis_vl: true,
modelDocumentUrl: 'https://inference.readthedocs.io/zh-cn/v1.2.0/getting_started/installation.html#installation',
addingModelTutorial: 'https://pandawiki.docs.baizhi.cloud/node/019a160d-0528-736a-b88e-32a2d1207f3e',
defaultBaseUrl: 'http://172.17.0.1:9997',
},
gpustack: {
Expand All @@ -280,6 +282,7 @@ export const DEFAULT_MODEL_PROVIDERS: ModelProviderMap = {
analysis: true,
analysis_vl: true,
modelDocumentUrl: 'https://docs.gpustack.ai/latest/quickstart/',
addingModelTutorial: 'https://pandawiki.docs.baizhi.cloud/node/019a160d-0528-736a-b88e-32a2d1207f3e',
defaultBaseUrl: 'http://172.17.0.1',
},
Yi: {
Expand Down Expand Up @@ -755,6 +758,7 @@ export const DEFAULT_MODEL_PROVIDERS: ModelProviderMap = {
analysis: true,
analysis_vl: true,
modelDocumentUrl: '',
addingModelTutorial: 'https://pandawiki.docs.baizhi.cloud/node/019a160d-0528-736a-b88e-32a2d1207f3e',
defaultBaseUrl: '',
},
};
2 changes: 2 additions & 0 deletions ui/ModelModal/src/types/types.ts
Original file line number Diff line number Diff line change
Expand Up @@ -60,6 +60,7 @@ export interface ModelProviderConfig {
analysis: boolean;
analysis_vl: boolean;
modelDocumentUrl?: string;
addingModelTutorial?: string;
defaultBaseUrl: string;
}

Expand Down Expand Up @@ -147,6 +148,7 @@ export interface AddModelForm {
model_type: string;
show_name: string;
api_header: string;
resource_name: string; // Azure OpenAI resource name
// 高级设置字段
context_window_size: number;
max_output_tokens: number;
Expand Down