@@ -15,12 +15,12 @@ import { AI_SERVICE_VARIABLES_TABLE_COLUMNS } from '@core/const/ai-service/const
15
15
import { VariableItems } from '@core/const/ai-service/type.ts'
16
16
import { API_PATH_MATCH_RULES } from '@core/const/system/const'
17
17
import { useAiServiceContext } from '@core/contexts/AiServiceContext.tsx'
18
- import { AiProviderDefaultConfig , AiProviderLlmsItems } from '@core/pages/aiSetting/AiSettingList'
19
18
import { Icon } from '@iconify/react/dist/iconify.js'
20
19
import { App , Button , Form , Input , InputNumber , Row , Space , Spin , Switch , Tag } from 'antd'
21
20
import { MutableRefObject , useEffect , useMemo , useRef , useState } from 'react'
22
21
import { useNavigate , useParams } from 'react-router-dom'
23
22
import AiServiceRouterModelConfig , { AiServiceRouterModelConfigHandle } from './AiServiceInsideRouterModelConfig'
23
+ import { AiProviderDefaultConfig , AiProviderLlmsItems } from '@core/pages/aiSetting/types'
24
24
25
25
type AiServiceRouterField = {
26
26
name : string
@@ -151,7 +151,13 @@ const AiServiceInsideRouterCreate = () => {
151
151
type : aiModel ?. type
152
152
} ) as AiProviderDefaultConfig & { config : string }
153
153
)
154
- aiModel ?. type !== 'local' && getDefaultModelConfig ( aiModel ?. provider , false )
154
+ getDefaultModelConfig ( {
155
+ provider : aiModel ?. provider ,
156
+ id : aiModel ?. id ,
157
+ replaceDefaultLlm : false ,
158
+ setIcon : true ,
159
+ type : aiModel ?. type
160
+ } )
155
161
} else {
156
162
message . error ( msg || $t ( RESPONSE_TIPS . error ) )
157
163
}
@@ -160,36 +166,109 @@ const AiServiceInsideRouterCreate = () => {
160
166
. finally ( ( ) => setLoading ( false ) )
161
167
}
162
168
163
- const getDefaultModelConfig = ( provider ?: string , resetDefaultLlm = true ) => {
164
- fetchData < BasicResponse < { llms : AiProviderLlmsItems [ ] ; provider : AiProviderDefaultConfig } > > ( 'ai/provider/llms' , {
165
- method : 'GET' ,
166
- eoParams : { provider : provider ?? aiServiceInfo ?. provider ?. id } ,
167
- eoTransformKeys : [ 'default_llm' ]
168
- } )
169
- . then ( ( response ) => {
170
- const { code, data, msg } = response
171
- if ( code === STATUS_CODE . SUCCESS ) {
172
- setLlmList ( data . llms )
173
- if ( resetDefaultLlm ) {
174
- setDefaultLlm ( ( prev ) => {
175
- const llmSetting = data . llms ?. find (
176
- ( x : AiProviderLlmsItems ) => x . id === ( prev ?. id ?? data . provider . defaultLlm )
177
- )
178
- return {
179
- ...prev ,
180
- defaultLlm : data . provider . defaultLlm ,
181
- provider : data . provider . id ,
182
- name : data . provider . name ,
183
- config : llmSetting ?. config || '' ,
184
- ...( llmSetting ?? { } )
185
- } as AiProviderDefaultConfig & { config : string }
186
- } )
169
+ const getDefaultModelConfig = ( {
170
+ provider,
171
+ id,
172
+ replaceDefaultLlm = true ,
173
+ setIcon = true ,
174
+ type
175
+ } : {
176
+ provider ?: string
177
+ id ?: string
178
+ replaceDefaultLlm ?: boolean
179
+ setIcon ?: boolean
180
+ type ?: string
181
+ } = { } ) => {
182
+ // 如果编辑状态下 是本地 或者,新增状态下是本地
183
+ if ( type === 'local' || ( ! type && aiServiceInfo ?. providerType === 'local' ) ) {
184
+ fetchData < BasicResponse < { llms : AiProviderLlmsItems [ ] ; provider : AiProviderDefaultConfig } > > ( 'simple/ai/models/local/configured' , {
185
+ method : 'GET' ,
186
+ eoTransformKeys : [ 'default_config' ]
187
+ } )
188
+ . then ( ( response ) => {
189
+ const { code, data, msg } = response
190
+ if ( code === STATUS_CODE . SUCCESS ) {
191
+ setLlmList ( data . models )
192
+ const localId = id || aiServiceInfo ?. id
193
+
194
+ if ( replaceDefaultLlm ) {
195
+ setDefaultLlm ( ( prev ) => {
196
+ const llmSetting = data . models ?. find (
197
+ ( x : AiProviderLlmsItems ) => x . id === ( prev ?. id ?? localId )
198
+ )
199
+ return {
200
+ ...prev ,
201
+ defaultLlm : localId ,
202
+ provider : localId ,
203
+ name : aiServiceInfo ?. name ,
204
+ config : llmSetting ?. defaultConfig || '' ,
205
+ type : 'local' ,
206
+ ...( llmSetting ?? { } )
207
+ } as AiProviderDefaultConfig & { config : string }
208
+ } )
209
+ }
210
+ if ( setIcon ) {
211
+ setDefaultLlm ( ( prev ) => {
212
+ const llmSetting = data . models ?. find (
213
+ ( x : AiProviderLlmsItems ) => x . id === ( prev ?. id ?? localId )
214
+ )
215
+ return {
216
+ ...prev ,
217
+ logo : llmSetting ?. logo ,
218
+ scopes : llmSetting ?. scopes
219
+ } as AiProviderDefaultConfig & { config : string }
220
+ } )
221
+ }
222
+ } else {
223
+ message . error ( msg || $t ( RESPONSE_TIPS . error ) )
187
224
}
188
- } else {
189
- message . error ( msg || $t ( RESPONSE_TIPS . error ) )
190
- }
225
+ } )
226
+ . catch ( ( errorInfo ) => console . error ( errorInfo ) )
227
+ } else {
228
+ fetchData < BasicResponse < { llms : AiProviderLlmsItems [ ] ; provider : AiProviderDefaultConfig } > > ( 'ai/provider/llms' , {
229
+ method : 'GET' ,
230
+ eoParams : { provider : provider ?? aiServiceInfo ?. provider ?. id } ,
231
+ eoTransformKeys : [ 'default_llm' ]
191
232
} )
192
- . catch ( ( errorInfo ) => console . error ( errorInfo ) )
233
+ . then ( ( response ) => {
234
+ const { code, data, msg } = response
235
+ if ( code === STATUS_CODE . SUCCESS ) {
236
+ setLlmList ( data . llms )
237
+ if ( replaceDefaultLlm ) {
238
+ setDefaultLlm ( ( prev ) => {
239
+ const llmSetting = data . llms ?. find (
240
+ ( x : AiProviderLlmsItems ) => x . id === ( prev ?. id ?? data . provider . defaultLlm )
241
+ )
242
+ return {
243
+ ...prev ,
244
+ defaultLlm : data . provider . defaultLlm ,
245
+ provider : data . provider . id ,
246
+ name : data . provider . name ,
247
+ config : llmSetting ?. config || '' ,
248
+ type : 'online' ,
249
+ ...( llmSetting ?? { } )
250
+ } as AiProviderDefaultConfig & { config : string }
251
+ } )
252
+ }
253
+ if ( setIcon ) {
254
+ setDefaultLlm ( ( prev ) => {
255
+ const llmSetting = data . llms ?. find (
256
+ ( x : AiProviderLlmsItems ) => x . id === ( prev ?. id ?? data . provider . defaultLlm )
257
+ )
258
+ return {
259
+ ...prev ,
260
+ logo : llmSetting ?. logo ,
261
+ scopes : llmSetting ?. scopes
262
+ } as AiProviderDefaultConfig & { config : string }
263
+ } )
264
+ }
265
+ } else {
266
+ message . error ( msg || $t ( RESPONSE_TIPS . error ) )
267
+ }
268
+ } )
269
+ . catch ( ( errorInfo ) => console . error ( errorInfo ) )
270
+ }
271
+
193
272
}
194
273
195
274
useEffect ( ( ) => {
@@ -241,6 +320,13 @@ const AiServiceInsideRouterCreate = () => {
241
320
242
321
const handlerSubmit : ( ) => Promise < boolean > | undefined = ( ) => {
243
322
return drawerAddFormRef . current ?. save ( ) ?. then ( ( res : { id : string ; config : string , type : string , provider : string } ) => {
323
+ getDefaultModelConfig ( {
324
+ provider : res . provider ,
325
+ id : res . id ,
326
+ type : res . type ,
327
+ replaceDefaultLlm : false ,
328
+ setIcon : true
329
+ } )
244
330
setDefaultLlm (
245
331
( prev ) =>
246
332
( {
0 commit comments