From 6fb9052c35348987cb4876cfab65f59d0558ab1b Mon Sep 17 00:00:00 2001 From: Administrator <15274802129@163.com> Date: Fri, 05 Sep 2025 16:17:04 +0800 Subject: [PATCH] feat(ai): 添加 AI 生成题目的功能 --- src/main/java/cc/mrbird/febs/ai/service/impl/AiServiceImpl.java | 59 ++++++++++++++++++++++++++--------------------------------- 1 files changed, 26 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..75d87dd 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 @@ -5,6 +5,13 @@ import cc.mrbird.febs.common.exception.FebsException; import cn.hutool.core.collection.CollUtil; import cn.hutool.core.util.ObjectUtil; +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; @@ -35,38 +42,24 @@ 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(appId) //替换为实际的应用 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