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