From 9bad721754fe8bbe2e5f459d0706e0fefac569f3 Mon Sep 17 00:00:00 2001
From: 云 <2163098428@qq.com>
Date: 星期日, 20 九月 2026 09:05:41 +0800
Subject: [PATCH] feat(mes): 添加智能质检报告功能与AI导入能力

---
 yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/AiModelFactoryImpl.java |   34 ++++++++++++++++++----------------
 1 files changed, 18 insertions(+), 16 deletions(-)

diff --git a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/AiModelFactoryImpl.java b/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/AiModelFactoryImpl.java
index 86b307a..d004349 100644
--- a/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/AiModelFactoryImpl.java
+++ b/yudao-module-ai/src/main/java/cn/iocoder/yudao/module/ai/framework/ai/core/model/AiModelFactoryImpl.java
@@ -7,32 +7,35 @@
 import cn.hutool.extra.spring.SpringUtil;
 import cn.iocoder.yudao.module.ai.enums.model.AiPlatformEnum;
 import cn.iocoder.yudao.module.ai.framework.ai.config.AiAutoConfiguration;
+import cn.iocoder.yudao.module.ai.framework.ai.config.YudaoAiProperties;
 import lombok.extern.slf4j.Slf4j;
 import org.springframework.ai.chat.model.ChatModel;
-import org.springframework.ai.embedding.BatchingStrategy;
 import org.springframework.ai.embedding.EmbeddingModel;
 import org.springframework.ai.embedding.TokenCountBatchingStrategy;
 import org.springframework.ai.openai.OpenAiChatModel;
 import org.springframework.ai.vectorstore.VectorStore;
 import org.springframework.ai.vectorstore.milvus.MilvusVectorStore;
-import org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusServiceClientProperties;
-import org.springframework.ai.vectorstore.milvus.autoconfigure.MilvusVectorStoreProperties;
+import java.time.Duration;
 import java.util.Map;
 
 /**
  * AI Model 妯″瀷宸ュ巶瀹炵幇绫�
  *
- * 浣跨敤 OpenAI 鍏煎鎺ュ彛瀵规帴閫氫箟鍗冮棶 + Milvus 鍚戦噺瀛樺偍
+ * 浣跨敤 OpenAI 鍏煎鎺ュ彛瀵规帴閫氫箟鍗冮棶 + 鍙厤缃悜閲忓瓨鍌紙Milvus锛�
  */
 @Slf4j
 public class AiModelFactoryImpl implements AiModelFactory {
 
     @Override
-    public ChatModel getOrCreateChatModel(AiPlatformEnum platform, String apiKey, String url, String model) {
-        String cacheKey = buildCacheKey(ChatModel.class, platform, apiKey, url, model);
+    public ChatModel getOrCreateChatModel(AiPlatformEnum platform, String apiKey, String url, String model,
+                                          Double temperature, Integer maxTokens, Duration timeout) {
+        // 娓╁害 / maxTokens / 瓒呮椂蹇呴』涓�璧疯繘 cacheKey锛氬惁鍒欏湪搴撻噷鏀逛簡杩欎簺鍙傛暟鍚庯紝
+        // 缂撳瓨浠嶇劧杩斿洖绗竴娆℃瀯寤虹殑妯″瀷锛屾敼浜嗙瓑浜庢病鏀癸紙涓斿畬鍏ㄩ潤榛橈級
+        String cacheKey = buildCacheKey(ChatModel.class, platform, apiKey, url, model,
+                temperature, maxTokens, timeout);
         return Singleton.get(cacheKey, (Func0<ChatModel>) () -> {
             if (platform == AiPlatformEnum.TONG_YI) {
-                return AiAutoConfiguration.buildTongYiChatModel(apiKey, model);
+                return AiAutoConfiguration.buildTongYiChatModel(apiKey, model, temperature, maxTokens, timeout);
             }
             throw new IllegalArgumentException(StrUtil.format("涓嶆敮鎸佺殑骞冲彴({})", platform));
         });
@@ -61,7 +64,6 @@
     public VectorStore getOrCreateVectorStore(Class<? extends VectorStore> type,
                                               EmbeddingModel embeddingModel,
                                               Map<String, Class<?>> metadataFields) {
-        // metadataFields 鍙備笌缂撳瓨 key锛岀‘淇濅笉鍚岀煡璇嗗簱浣跨敤涓嶅悓閰嶇疆鏃朵笉浼氬鐢�
         String cacheKey = buildCacheKey(VectorStore.class, embeddingModel, type, metadataFields.hashCode());
         return Singleton.get(cacheKey, (Func0<VectorStore>) () -> {
             if (type == MilvusVectorStore.class) {
@@ -72,20 +74,20 @@
     }
 
     private MilvusVectorStore buildMilvusVectorStore(EmbeddingModel embeddingModel) {
-        MilvusVectorStoreProperties serverProperties = SpringUtil.getBean(MilvusVectorStoreProperties.class);
-        MilvusServiceClientProperties clientProperties = SpringUtil.getBean(MilvusServiceClientProperties.class);
+        YudaoAiProperties aiProperties = SpringUtil.getBean(YudaoAiProperties.class);
+        YudaoAiProperties.VectorStore.Milvus milvusConfig = aiProperties.getVectorStore().getMilvus();
 
         var connectParam = io.milvus.param.ConnectParam.newBuilder()
-                .withHost(clientProperties.getHost())
-                .withPort(clientProperties.getPort())
-                .withDatabaseName(serverProperties.getDatabaseName())
+                .withHost(milvusConfig.getHost())
+                .withPort(milvusConfig.getPort())
+                .withDatabaseName(milvusConfig.getDatabaseName())
                 .build();
         var milvusClient = new io.milvus.client.MilvusServiceClient(connectParam);
 
         MilvusVectorStore vectorStore = MilvusVectorStore.builder(milvusClient, embeddingModel)
-                .databaseName(serverProperties.getDatabaseName())
-                .collectionName(serverProperties.getCollectionName())
-                .initializeSchema(serverProperties.isInitializeSchema())
+                .databaseName(milvusConfig.getDatabaseName())
+                .collectionName(milvusConfig.getCollectionName())
+                .initializeSchema(milvusConfig.isInitializeSchema())
                 .batchingStrategy(new TokenCountBatchingStrategy())
                 .build();
         try {

--
Gitblit v1.9.3