From ea1b994ba52fd14635888224624b37934afedcf2 Mon Sep 17 00:00:00 2001
From: Administrator <15274802129@163.com>
Date: Fri, 24 Oct 2025 14:59:19 +0800
Subject: [PATCH] feat(ai): 新增AI产品依赖管理功能
---
src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java | 76 +++++++++++++++++++++----------------
1 files changed, 43 insertions(+), 33 deletions(-)
diff --git a/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java b/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java
index f89d249..3b6013e 100644
--- a/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java
+++ b/src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java
@@ -1,10 +1,22 @@
package cc.mrbird.febs.ai.service.impl;
+import cc.mrbird.febs.ai.entity.AiCompanyWorkflow;
+import cc.mrbird.febs.ai.enums.LlmApplicationAppIdEnum;
+import cc.mrbird.febs.ai.mapper.AiCompanyWorkflowMapper;
import cc.mrbird.febs.ai.req.AiProductQuestionAiDto;
+import cc.mrbird.febs.ai.service.AiCompanyService;
import cc.mrbird.febs.ai.service.AiService;
import cc.mrbird.febs.common.exception.FebsException;
import cn.hutool.core.collection.CollUtil;
import cn.hutool.core.util.ObjectUtil;
+import cn.hutool.core.util.StrUtil;
+import com.alibaba.dashscope.app.Application;
+import com.alibaba.dashscope.app.ApplicationParam;
+import com.alibaba.dashscope.app.ApplicationResult;
+import com.alibaba.dashscope.app.FlowStreamMode;
+import com.alibaba.dashscope.exception.InputRequiredException;
+import com.alibaba.dashscope.exception.NoApiKeyException;
+import com.alibaba.dashscope.utils.JsonUtils;
import lombok.RequiredArgsConstructor;
import lombok.extern.slf4j.Slf4j;
import org.springframework.stereotype.Service;
@@ -15,6 +27,8 @@
@Service
@RequiredArgsConstructor
public class AiServiceImpl implements AiService {
+
+ private final AiCompanyService aiCompanyService;
private static final String apiKey = "sk-babdcf8799144134915cee2683794b2f";
private static final String appId = "963b854d994a4f578d8207cd477a2464";
@@ -29,44 +43,40 @@
throw new FebsException("百炼工作流初始化异常");
}
+ String companyAppId = appId;
+ String companyId = dto.getCompanyId();
+ if (StrUtil.isNotEmpty(companyId)){
+ AiCompanyWorkflow workflowByTypeAndCompanyId =
+ aiCompanyService.getWorkflowByTypeAndCompanyId(LlmApplicationAppIdEnum.ADMIN_QUESTION.getCode(), companyId);
+ companyAppId = workflowByTypeAndCompanyId.getCode();
+ }
+
+
+
HashMap<String, Object> bizParams = new HashMap<>();
bizParams.put(bizParam_1,dto.getQuestionCnt());
bizParams.put(bizParam_2,dto.getPromptAiSystem());
bizParams.put(bizParam_3,dto.getJsonFormat());
String query = dto.getQuery();
long startTime = System.currentTimeMillis();
-// ApplicationParam param = ApplicationParam.builder()
-// // 若没有配置环境变量,可用百炼API Key将下行替换为:.apiKey("sk-xxx")。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。
-// .apiKey(apiKey)
-// .appId(appId) //替换为实际的应用 ID
-// .flowStreamMode(FlowStreamMode.MESSAGE_FORMAT)
-// .prompt(query)
-// .bizParams(JsonUtils.toJsonObject( bizParams))
-// .build();
-//
-// Application application = new Application();
-// Flowable<ApplicationResult> result;
-// try {
-// result = application.streamCall(param);
-// } catch (NoApiKeyException | InputRequiredException e) {
-// throw new FebsException(StrUtil.format("百炼工作流输出失败:{}",e.getMessage()));
-// }
-//
-// return Flux.from(result)
-// .map(message -> {
-// HashMap<String, String> stringStringHashMap = new HashMap<>();
-// if (!message.getOutput().getFinishReason().equals("stop")){
-// stringStringHashMap.put(LlmStrategyContextEnum.CONTENT.name(),message.getOutput().getWorkflowMessage().getMessage().getContent());
-// }
-// return new FebsResponse().success().data(stringStringHashMap);
-// })
-// .doOnComplete(() -> {
-// long endTime = System.currentTimeMillis();
-// System.out.println("百炼工作流输出:" + (endTime - startTime) + "毫秒");
-// })
-// .doOnError(error -> {
-// throw new FebsException(StrUtil.format("百炼工作流输出失败:{}",error));
-// });
- return null;
+ ApplicationParam param = ApplicationParam.builder()
+ // 若没有配置环境变量,可用百炼API Key将下行替换为:.apiKey("sk-xxx")。但不建议在生产环境中直接将API Key硬编码到代码中,以减少API Key泄露风险。
+ .apiKey(apiKey)
+ .appId(companyAppId) //替换为实际的应用 ID
+ .flowStreamMode(FlowStreamMode.MESSAGE_FORMAT)
+ .prompt(query)
+ .bizParams(JsonUtils.toJsonObject( bizParams))
+ .build();
+
+ Application application = new Application();
+ ApplicationResult result = null;
+ try {
+ result = application.call(param);
+ } catch (NoApiKeyException e) {
+ throw new FebsException("百炼工作流调用异常");
+ } catch (InputRequiredException e) {
+ throw new FebsException("百炼工作流调用异常");
+ }
+ return result.getOutput().getText();
}
}
--
Gitblit v1.9.1