Skip to content

Commit 1696231

Browse files
committed
feat: Integrate ModelConfig retrieval in AI service creation across CrosstabChat, StepFlow, ObjectAIGenerator, and ObjectPage components, ensuring proper configuration before service initialization
1 parent 28ec4d2 commit 1696231

File tree

4 files changed

+95
-18
lines changed

4 files changed

+95
-18
lines changed

src/renderer/src/components/pages/crosstab/CrosstabChat.tsx

Lines changed: 31 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -38,7 +38,7 @@ interface CrosstabChatProps {
3838

3939
export default function CrosstabChat({ chatId }: CrosstabChatProps) {
4040
const { pages, createAndOpenChat } = usePagesStore()
41-
const { settings } = useSettingsStore()
41+
const { settings, getModelConfigForLLM } = useSettingsStore()
4242
const { updateCrosstabData, updateCrosstabStep, completeCrosstabStep } = useCrosstabStore()
4343
const { addTask, updateTask } = useAITasksStore()
4444
const [userInput, setUserInput] = useState('')
@@ -101,7 +101,12 @@ export default function CrosstabChat({ chatId }: CrosstabChatProps) {
101101
const verticalCombinations = generateAxisCombinations(
102102
chat.crosstabData.metadata.verticalDimensions
103103
)
104-
const aiService = createAIService(llmConfig)
104+
const modelConfig = getModelConfigForLLM(llmConfig.id)
105+
if (!modelConfig) {
106+
message.error('请先在设置中配置模型参数')
107+
return
108+
}
109+
const aiService = createAIService(llmConfig, modelConfig)
105110

106111
const updatedTableData = { ...chat.crosstabData.tableData }
107112

@@ -252,7 +257,12 @@ export default function CrosstabChat({ chatId }: CrosstabChatProps) {
252257
const horizontalCombinations = generateAxisCombinations(
253258
chat.crosstabData.metadata.horizontalDimensions
254259
)
255-
const aiService = createAIService(llmConfig)
260+
const modelConfig = getModelConfigForLLM(llmConfig.id)
261+
if (!modelConfig) {
262+
message.error('请先在设置中配置模型参数')
263+
return
264+
}
265+
const aiService = createAIService(llmConfig, modelConfig)
256266

257267
const updatedTableData = { ...chat.crosstabData.tableData }
258268

@@ -382,7 +392,12 @@ export default function CrosstabChat({ chatId }: CrosstabChatProps) {
382392
setIsGeneratingCell(cellKey)
383393

384394
const taskId = uuidv4()
385-
const aiService = createAIService(llmConfig)
395+
const modelConfig = getModelConfigForLLM(llmConfig.id)
396+
if (!modelConfig) {
397+
message.error('请先在设置中配置模型参数')
398+
return
399+
}
400+
const aiService = createAIService(llmConfig, modelConfig)
386401

387402
const task: AITask = {
388403
id: taskId,
@@ -704,7 +719,12 @@ export default function CrosstabChat({ chatId }: CrosstabChatProps) {
704719
setIsGeneratingTopicSuggestions(true)
705720

706721
const taskId = uuidv4()
707-
const aiService = createAIService(llmConfig)
722+
const modelConfig = getModelConfigForLLM(llmConfig.id)
723+
if (!modelConfig) {
724+
message.error('请先在设置中配置模型参数')
725+
return
726+
}
727+
const aiService = createAIService(llmConfig, modelConfig)
708728

709729
const task: AITask = {
710730
id: taskId,
@@ -807,7 +827,12 @@ export default function CrosstabChat({ chatId }: CrosstabChatProps) {
807827
setIsGeneratingDimensionSuggestions((prev) => ({ ...prev, [dimensionId]: true }))
808828

809829
const taskId = uuidv4()
810-
const aiService = createAIService(llmConfig)
830+
const modelConfig = getModelConfigForLLM(llmConfig.id)
831+
if (!modelConfig) {
832+
message.error('请先在设置中配置模型参数')
833+
return
834+
}
835+
const aiService = createAIService(llmConfig, modelConfig)
811836

812837
// 查找维度
813838
const allDimensions = [

src/renderer/src/components/pages/crosstab/StepFlow.tsx

Lines changed: 28 additions & 6 deletions
Original file line numberDiff line numberDiff line change
@@ -149,6 +149,13 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
149149
return
150150
}
151151

152+
// 获取对应的 ModelConfig
153+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
154+
if (!modelConfig) {
155+
message.error('请先在设置中配置模型参数')
156+
return
157+
}
158+
152159
setLoading(true)
153160
setCurrentProcessingStep(stepIndex)
154161

@@ -167,7 +174,7 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
167174

168175
// 创建AI任务
169176
const metadataTaskId = uuidv4()
170-
const aiService = createAIService(llmConfig)
177+
const aiService = createAIService(llmConfig, modelConfig)
171178
setCurrentAIService(aiService) // 保存AI服务实例
172179
setCurrentTaskId(metadataTaskId) // 保存任务ID
173180
const metadataTask: AITask = {
@@ -262,7 +269,8 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
262269
message,
263270
onStepComplete,
264271
stores.crosstab,
265-
stores.aiTasks
272+
stores.aiTasks,
273+
stores.settings
266274
]
267275
)
268276

@@ -279,6 +287,13 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
279287
return
280288
}
281289

290+
// 获取对应的 ModelConfig
291+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
292+
if (!modelConfig) {
293+
message.error('请先在设置中配置模型参数')
294+
return
295+
}
296+
282297
setGenerateDimensionValuesLoading((prev) => ({ ...prev, [dimensionId]: true }))
283298

284299
try {
@@ -299,7 +314,7 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
299314
.replace('[DIMENSION_NAME]', dimension.name)
300315
.replace('[DIMENSION_DESCRIPTION]', dimension.description || '')
301316

302-
const aiService = createAIService(llmConfig)
317+
const aiService = createAIService(llmConfig, modelConfig)
303318
setDimensionAIServices((prev) => ({ ...prev, [dimensionId]: aiService })) // 保存AI服务实例
304319
const taskId = uuidv4()
305320
setDimensionTaskIds((prev) => ({ ...prev, [dimensionId]: taskId })) // 保存任务ID
@@ -368,7 +383,7 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
368383
setGenerateDimensionValuesLoading((prev) => ({ ...prev, [dimensionId]: false }))
369384
}
370385
},
371-
[chat.id, chat.crosstabData.metadata, getLLMConfig, stores.crosstab, message]
386+
[chat.id, chat.crosstabData.metadata, getLLMConfig, stores.crosstab, stores.settings, message]
372387
)
373388

374389
const handleGenerateTableData = useCallback(async () => {
@@ -400,6 +415,13 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
400415
return
401416
}
402417

418+
// 获取对应的 ModelConfig
419+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
420+
if (!modelConfig) {
421+
message.error('请先在设置中配置模型参数')
422+
return
423+
}
424+
403425
setGenerateTableDataLoading(true)
404426

405427
try {
@@ -426,7 +448,7 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
426448
.replace('[VERTICAL_PATH]', vPath)
427449
.replace('[VALUE_DIMENSIONS]', JSON.stringify(valueDimensions, null, 2))
428450

429-
const aiService = createAIService(llmConfig)
451+
const aiService = createAIService(llmConfig, modelConfig)
430452
setTableDataAIService(aiService) // 保存AI服务实例(注意:这里只保存最后一个,实际应用中可能需要保存所有)
431453
const taskId = uuidv4()
432454
setTableDataTaskIds((prev) => [...prev, taskId]) // 保存任务ID
@@ -534,7 +556,7 @@ export default function StepFlow({ chat, userInput, onStepComplete, getLLMConfig
534556
setTableDataTaskIds([]) // 清理任务ID
535557
setGenerateTableDataLoading(false)
536558
}
537-
}, [chat.id, chat.crosstabData.metadata, getLLMConfig, stores.crosstab, message])
559+
}, [chat.id, chat.crosstabData.metadata, getLLMConfig, stores.crosstab, stores.settings, message])
538560

539561
// 检查是否可以生成表格数据
540562
const canGenerateTableData =

src/renderer/src/components/pages/object/ObjectAIGenerator.tsx

Lines changed: 30 additions & 5 deletions
Original file line numberDiff line numberDiff line change
@@ -128,7 +128,12 @@ const ObjectAIGenerator: React.FC<ObjectAIGeneratorProps> = ({
128128

129129
setIsLoadingRecommendations(true)
130130
try {
131-
const aiService = createAIService(llmConfig)
131+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
132+
if (!modelConfig) {
133+
message.error('请先在设置中配置模型参数')
134+
return
135+
}
136+
const aiService = createAIService(llmConfig, modelConfig)
132137
const objectAIService = createObjectAIService(
133138
llmConfig,
134139
aiService,
@@ -359,7 +364,12 @@ const ObjectAIGenerator: React.FC<ObjectAIGeneratorProps> = ({
359364
return
360365
}
361366

362-
const aiService = createAIService(llmConfig)
367+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
368+
if (!modelConfig) {
369+
message.error('请先在设置中配置模型参数')
370+
return
371+
}
372+
const aiService = createAIService(llmConfig, modelConfig)
363373
const objectAIService = createObjectAIService(
364374
llmConfig,
365375
aiService,
@@ -423,7 +433,12 @@ const ObjectAIGenerator: React.FC<ObjectAIGeneratorProps> = ({
423433
return
424434
}
425435

426-
const aiService = createAIService(llmConfig)
436+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
437+
if (!modelConfig) {
438+
message.error('请先在设置中配置模型参数')
439+
return
440+
}
441+
const aiService = createAIService(llmConfig, modelConfig)
427442
const objectAIService = createObjectAIService(
428443
llmConfig,
429444
aiService,
@@ -465,7 +480,12 @@ const ObjectAIGenerator: React.FC<ObjectAIGeneratorProps> = ({
465480
return
466481
}
467482

468-
const aiService = createAIService(llmConfig)
483+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
484+
if (!modelConfig) {
485+
message.error('请先在设置中配置模型参数')
486+
return
487+
}
488+
const aiService = createAIService(llmConfig, modelConfig)
469489
const objectAIService = createObjectAIService(
470490
llmConfig,
471491
aiService,
@@ -510,7 +530,12 @@ const ObjectAIGenerator: React.FC<ObjectAIGeneratorProps> = ({
510530
return
511531
}
512532

513-
const aiService = createAIService(llmConfig)
533+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
534+
if (!modelConfig) {
535+
message.error('请先在设置中配置模型参数')
536+
return
537+
}
538+
const aiService = createAIService(llmConfig, modelConfig)
514539
const objectAIService = createObjectAIService(
515540
llmConfig,
516541
aiService,

src/renderer/src/components/pages/object/ObjectPage.tsx

Lines changed: 6 additions & 1 deletion
Original file line numberDiff line numberDiff line change
@@ -140,7 +140,12 @@ const ObjectPage: React.FC<ObjectPageProps> = ({ chatId }) => {
140140
stores.object.addObjectGenerationRecord(chat.id, generationRecord)
141141

142142
// 创建AI服务
143-
const aiService = createAIService(llmConfig)
143+
const modelConfig = stores.settings.getModelConfigForLLM(llmConfig.id)
144+
if (!modelConfig) {
145+
message.error('请先在设置中配置模型参数')
146+
return
147+
}
148+
const aiService = createAIService(llmConfig, modelConfig)
144149

145150
// 创建 dispatch 适配器以兼容 ObjectAIService
146151
const dispatchAdapter = (action: any) => {

0 commit comments

Comments
 (0)