|
|
@@ -7,6 +7,7 @@ import cn.iocoder.yudao.module.ai.framework.ai.core.model.AiModelFactoryImpl;
|
|
|
import cn.iocoder.yudao.module.ai.framework.ai.core.model.baichuan.BaiChuanChatModel;
|
|
|
import cn.iocoder.yudao.module.ai.framework.ai.core.model.doubao.DouBaoChatModel;
|
|
|
import cn.iocoder.yudao.module.ai.framework.ai.core.model.gemini.GeminiChatModel;
|
|
|
+import cn.iocoder.yudao.module.ai.framework.ai.core.model.grok.GrokChatModel;
|
|
|
import cn.iocoder.yudao.module.ai.framework.ai.core.model.hunyuan.HunYuanChatModel;
|
|
|
import cn.iocoder.yudao.module.ai.framework.ai.core.model.midjourney.api.MidjourneyApi;
|
|
|
import cn.iocoder.yudao.module.ai.framework.ai.core.model.siliconflow.SiliconFlowApiConstants;
|
|
|
@@ -17,6 +18,7 @@ import cn.iocoder.yudao.module.ai.framework.ai.core.webserch.AiWebSearchClient;
|
|
|
import cn.iocoder.yudao.module.ai.framework.ai.core.webserch.bocha.AiBoChaWebSearchClient;
|
|
|
import cn.iocoder.yudao.module.ai.tool.method.PersonService;
|
|
|
import lombok.extern.slf4j.Slf4j;
|
|
|
+import org.springframework.ai.chat.model.ChatModel;
|
|
|
import org.springframework.ai.deepseek.DeepSeekChatModel;
|
|
|
import org.springframework.ai.deepseek.DeepSeekChatOptions;
|
|
|
import org.springframework.ai.deepseek.api.DeepSeekApi;
|
|
|
@@ -40,6 +42,7 @@ import org.springframework.context.annotation.Bean;
|
|
|
import org.springframework.context.annotation.Configuration;
|
|
|
|
|
|
import java.util.List;
|
|
|
+import java.util.Optional;
|
|
|
|
|
|
/**
|
|
|
* 芋道 AI 自动配置
|
|
|
@@ -286,4 +289,25 @@ public class AiAutoConfiguration {
|
|
|
return List.of(ToolCallbacks.from(personService));
|
|
|
}
|
|
|
|
|
|
+ public ChatModel buildGrokChatClient(YudaoAiProperties.Grok properties) {
|
|
|
+ if (StrUtil.isEmpty(properties.getModel())) {
|
|
|
+ properties.setModel(GrokChatModel.MODEL_DEFAULT);
|
|
|
+ }
|
|
|
+ OpenAiChatModel openAiChatModel = OpenAiChatModel.builder()
|
|
|
+ .openAiApi(OpenAiApi.builder()
|
|
|
+ .baseUrl(Optional.ofNullable(properties.getBaseUrl())
|
|
|
+ .orElse(GrokChatModel.BASE_URL))
|
|
|
+ .completionsPath(GrokChatModel.COMPLETE_PATH)
|
|
|
+ .apiKey(properties.getApiKey())
|
|
|
+ .build())
|
|
|
+ .defaultOptions(OpenAiChatOptions.builder()
|
|
|
+ .model(properties.getModel())
|
|
|
+ .temperature(properties.getTemperature())
|
|
|
+ .maxTokens(properties.getMaxTokens())
|
|
|
+ .topP(properties.getTopP())
|
|
|
+ .build())
|
|
|
+ .toolCallingManager(getToolCallingManager())
|
|
|
+ .build();
|
|
|
+ return new DouBaoChatModel(openAiChatModel);
|
|
|
+ }
|
|
|
}
|