Skip to content

Commit ea8731e

Browse files
committed
feat(模型模态框): 添加关闭模型备注功能并优化错误处理
添加is_close_model_remark属性控制是否显示模型备注 简化错误消息处理,移除冗余的错误包装 优化模型名称提示文本和高级设置显示逻辑
1 parent e1ffd47 commit ea8731e

File tree

6 files changed

+23
-20
lines changed

6 files changed

+23
-20
lines changed

test/ui_example/src/App.tsx

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -173,6 +173,7 @@ function App() {
173173
modelService={localModelService}
174174
language="zh-CN"
175175
messageComponent={messageComponent}
176+
is_close_model_remark={true}
176177
/>
177178

178179

ui/ModelModal/src/ModelModal.tsx

Lines changed: 6 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -45,6 +45,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
4545
modelService,
4646
language = 'zh-CN',
4747
messageComponent,
48+
is_close_model_remark = false,
4849
}: ModelModalProps) => {
4950
const theme = useTheme();
5051

@@ -578,7 +579,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
578579
/>
579580
)}
580581
/>
581-
{(modelUserList.length !== 0 || providerBrand === 'Other') && (
582+
{(modelUserList.length !== 0 || providerBrand === 'Other') && !is_close_model_remark && (
582583
<>
583584
<Box sx={{ fontSize: 14, lineHeight: '32px', mt: 2 }}>
584585
模型备注
@@ -591,7 +592,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
591592
name='show_name'
592593
rules={{
593594
required: {
594-
value: true,
595+
value: !is_close_model_remark,
595596
message: '模型备注不能为空',
596597
},
597598
}}
@@ -661,7 +662,7 @@ export const ModelModal: React.FC<ModelModalProps> = ({
661662
)}
662663
/>
663664
<Box sx={{ fontSize: 12, color: 'error.main', mt: 1 }}>
664-
需要与模型供应商提供的名称完全一致,不要随便填写
665+
需要与模型供应商提供的名称完全一致
665666
</Box>
666667
</>
667668
) : modelUserList.length === 0 ? (
@@ -751,8 +752,8 @@ export const ModelModal: React.FC<ModelModalProps> = ({
751752

752753
</>
753754
)}
754-
{/* 高级设置部分 - 在选择了模型或者是其它供应商时显示 */}
755-
{(modelUserList.length !== 0 || providerBrand === 'Other') && (
755+
{/* 高级设置部分 - 在选择了模型或者是其它供应商时显示,但不包括embedding、rerank、reranker类型 */}
756+
{(modelUserList.length !== 0 || providerBrand === 'Other') && !['embedding', 'rerank', 'reranker'].includes(model_type) && (
756757
<Box sx={{ mt: 2 }}>
757758
<Accordion
758759
sx={{

ui/ModelModal/src/constants/locale.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -25,7 +25,7 @@ export const LOCALE_MESSAGES: Record<'zh-CN' | 'en-US', Record<string, string>>
2525
'urlRequired': 'URL 不能为空',
2626
'secretRequired': 'API Secret 不能为空',
2727
'modelNameRequired': '模型名称不能为空',
28-
'modelNameHint': '需要与模型供应商提供的名称完全一致,不要随便填写',
28+
'modelNameHint': '需要与模型供应商提供的名称完全一致',
2929

3030
// 成功/错误消息
3131
'addSuccess': '添加成功',

ui/ModelModal/src/constants/providers.ts

Lines changed: 1 addition & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -418,7 +418,7 @@ export const DEFAULT_MODEL_PROVIDERS: ModelProviderMap = {
418418
urlWrite: false,
419419
secretRequired: true,
420420
customHeader: false,
421-
chat: true,
421+
chat: false,
422422
code: true,
423423
embedding: false,
424424
rerank: false,

ui/ModelModal/src/types/types.ts

Lines changed: 1 addition & 0 deletions
Original file line numberDiff line numberDiff line change
@@ -179,4 +179,5 @@ export interface ModelModalProps {
179179
modelService: ModelService;
180180
language?: 'zh-CN' | 'en-US';
181181
messageComponent?: MessageComponent;
182+
is_close_model_remark?: boolean;
182183
}

usecase/modelkit.go

Lines changed: 13 additions & 13 deletions
Original file line numberDiff line numberDiff line change
@@ -36,14 +36,14 @@ import (
3636
func reqModelListApi[T domain.ModelResponseParser](req *domain.ModelListReq, httpClient *http.Client, responseType T) ([]domain.ModelListItem, error) {
3737
u, err := url.Parse(req.BaseURL)
3838
if err != nil {
39-
return nil, fmt.Errorf("解析BaseURL失败: %w", err)
39+
return nil, err
4040
}
4141
u.Path = path.Join(u.Path, "/models")
4242

4343
client := request.NewClient(u.Scheme, u.Host, httpClient.Timeout, request.WithClient(httpClient))
4444
query, err := utils.GetQuery(req)
4545
if err != nil {
46-
return nil, fmt.Errorf("获取查询参数失败: %w", err)
46+
return nil, err
4747
}
4848
resp, err := request.Get[T](
4949
client, u.Path,
@@ -55,7 +55,7 @@ func reqModelListApi[T domain.ModelResponseParser](req *domain.ModelListReq, htt
5555
request.WithQuery(query),
5656
)
5757
if err != nil {
58-
return nil, fmt.Errorf("请求模型列表API失败: %w", err)
58+
return nil, err
5959
}
6060

6161
return (*resp).ParseModels(), nil
@@ -87,7 +87,7 @@ func ModelList(ctx context.Context, req *domain.ModelListReq) (*domain.ModelList
8787
u, err := url.Parse(req.BaseURL)
8888
if err != nil {
8989
return &domain.ModelListResp{
90-
Error: fmt.Errorf("Ollama解析BaseURL失败: %w", err).Error(),
90+
Error: err.Error(),
9191
}, nil
9292
}
9393
u.Path = "/api/tags"
@@ -104,7 +104,7 @@ func ModelList(ctx context.Context, req *domain.ModelListReq) (*domain.ModelList
104104
client, err := generativeGenai.NewClient(ctx, option.WithAPIKey(req.APIKey))
105105
if err != nil {
106106
return &domain.ModelListResp{
107-
Error: fmt.Errorf("创建Gemini客户端失败: %w", err).Error(),
107+
Error: err.Error(),
108108
}, nil
109109
}
110110
defer func() {
@@ -148,7 +148,7 @@ func ModelList(ctx context.Context, req *domain.ModelListReq) (*domain.ModelList
148148
models, err := reqModelListApi(req, httpClient, &domain.GithubResp{})
149149
if err != nil {
150150
return &domain.ModelListResp{
151-
Error: fmt.Errorf("获取Github模型列表失败: %w", err).Error(),
151+
Error: err.Error(),
152152
}, nil
153153
}
154154
return &domain.ModelListResp{
@@ -160,7 +160,7 @@ func ModelList(ctx context.Context, req *domain.ModelListReq) (*domain.ModelList
160160

161161
if err != nil {
162162
return &domain.ModelListResp{
163-
Error: fmt.Errorf("获取OpenAI兼容模型列表失败: %w", err).Error(),
163+
Error: err.Error(),
164164
}, nil
165165
}
166166
return &domain.ModelListResp{
@@ -288,15 +288,15 @@ func GetChatModel(ctx context.Context, model *domain.ModelMetadata) (model.BaseC
288288
Temperature: temperature,
289289
})
290290
if err != nil {
291-
return nil, fmt.Errorf("创建DeepSeek聊天模型失败: %w", err)
291+
return nil, err
292292
}
293293
return chatModel, nil
294294
case consts.ModelProviderGemini:
295295
client, err := genai.NewClient(ctx, &genai.ClientConfig{
296296
APIKey: model.APIKey,
297297
})
298298
if err != nil {
299-
return nil, fmt.Errorf("创建Genai客户端失败: %w", err)
299+
return nil, err
300300
}
301301

302302
chatModel, err := gemini.NewChatModel(ctx, &gemini.Config{
@@ -308,13 +308,13 @@ func GetChatModel(ctx context.Context, model *domain.ModelMetadata) (model.BaseC
308308
},
309309
})
310310
if err != nil {
311-
return nil, fmt.Errorf("创建Gemini聊天模型失败: %w", err)
311+
return nil, err
312312
}
313313
return chatModel, nil
314314
case consts.ModelProviderOllama:
315315
baseUrl, err := utils.URLRemovePath(config.BaseURL)
316316
if err != nil {
317-
return nil, fmt.Errorf("解析Ollama URL失败: %w", err)
317+
return nil, err
318318
}
319319

320320
chatModel, err := ollama.NewChatModel(ctx, &ollama.ChatModelConfig{
@@ -326,14 +326,14 @@ func GetChatModel(ctx context.Context, model *domain.ModelMetadata) (model.BaseC
326326
},
327327
})
328328
if err != nil {
329-
return nil, fmt.Errorf("创建Ollama聊天模型失败: %w", err)
329+
return nil, err
330330
}
331331
return chatModel, nil
332332
// 兼容 openai api
333333
default:
334334
chatModel, err := openai.NewChatModel(ctx, config)
335335
if err != nil {
336-
return nil, fmt.Errorf("创建OpenAI兼容聊天模型失败: %w", err)
336+
return nil, err
337337
}
338338
return chatModel, nil
339339
}

0 commit comments

Comments
 (0)