diff --git a/Doc/下载IDEA的AI插件.txt b/Doc/下载IDEA的AI插件.txt
new file mode 100644
index 00000000..9ac56640
--- /dev/null
+++ b/Doc/下载IDEA的AI插件.txt
@@ -0,0 +1,4 @@
+https://plugins.jetbrains.com/plugin/21056-proxy-ai/versions
+
+Proxy AI
+https://blog.csdn.net/weixin_43701894/article/details/143585469
\ No newline at end of file
diff --git a/pom.xml b/pom.xml
index 0afe3e74..0451c20e 100644
--- a/pom.xml
+++ b/pom.xml
@@ -407,6 +407,18 @@
hanlp
portable-1.8.4
+
+
+
+
+
+
+
+
+ com.aliyun
+ aliyun-java-sdk-core
+ 4.7.3
+
diff --git a/src/main/java/Tools/TestUnit/FileTransJavaDemo.java b/src/main/java/Tools/TestUnit/FileTransJavaDemo.java
new file mode 100644
index 00000000..ac30be0a
--- /dev/null
+++ b/src/main/java/Tools/TestUnit/FileTransJavaDemo.java
@@ -0,0 +1,177 @@
+package Tools.TestUnit;
+
+import com.alibaba.fastjson.JSONObject;
+import com.aliyuncs.CommonRequest;
+import com.aliyuncs.CommonResponse;
+import com.aliyuncs.DefaultAcsClient;
+import com.aliyuncs.IAcsClient;
+import com.aliyuncs.exceptions.ClientException;
+import com.aliyuncs.http.FormatType;
+import com.aliyuncs.http.MethodType;
+import com.aliyuncs.profile.DefaultProfile;
+
+import java.io.IOException;
+
+public class FileTransJavaDemo {
+ public static String ALY_ACCESS_KEY_ID = "LTAI5tE4tgpGcKWhbZg6C4bh";
+ public static String ALY_ACCESS_KEY_SECRET = "oizcTOZ8izbGUouboC00RcmGE8vBQ1";
+ public static String APP_KEY = "OIpiw501l4o6MYEe";
+
+ // 地域ID,常量,固定值。
+ public static final String REGIONID = "cn-shanghai";
+ public static final String ENDPOINTNAME = "cn-shanghai";
+ public static final String PRODUCT = "nls-filetrans";
+ public static final String DOMAIN = "filetrans.cn-shanghai.aliyuncs.com";
+ public static final String API_VERSION = "2018-08-17"; // 中国站版本
+ // public static final String API_VERSION = "2019-08-23"; // 国际站版本
+ public static final String POST_REQUEST_ACTION = "SubmitTask";
+ public static final String GET_REQUEST_ACTION = "GetTaskResult";
+ // 请求参数
+ public static final String KEY_APP_KEY = "appkey";
+ public static final String KEY_FILE_LINK = "file_link";
+ public static final String KEY_VERSION = "version";
+ public static final String KEY_ENABLE_WORDS = "enable_words";
+ // 响应参数
+ public static final String KEY_TASK = "Task";
+ public static final String KEY_TASK_ID = "TaskId";
+ public static final String KEY_STATUS_TEXT = "StatusText";
+ public static final String KEY_RESULT = "Result";
+ // 状态值
+ public static final String STATUS_SUCCESS = "SUCCESS";
+ private static final String STATUS_RUNNING = "RUNNING";
+ private static final String STATUS_QUEUEING = "QUEUEING";
+ // 阿里云鉴权client
+ IAcsClient client;
+
+ public FileTransJavaDemo(String accessKeyId, String accessKeySecret) {
+ // 设置endpoint
+ DefaultProfile.addEndpoint(ENDPOINTNAME, REGIONID, PRODUCT, DOMAIN);
+ // 创建DefaultAcsClient实例并初始化
+ DefaultProfile profile = DefaultProfile.getProfile(REGIONID, accessKeyId, accessKeySecret);
+ this.client = new DefaultAcsClient(profile);
+ }
+
+ public String submitFileTransRequest(String appKey, String fileLink) {
+ /**
+ * 1. 创建CommonRequest,设置请求参数。
+ */
+ CommonRequest postRequest = new CommonRequest();
+ // 设置域名
+ postRequest.setDomain(DOMAIN);
+ // 设置API的版本号,格式为YYYY-MM-DD。
+ postRequest.setVersion(API_VERSION);
+ // 设置action
+ postRequest.setAction(POST_REQUEST_ACTION);
+ // 设置产品名称
+ postRequest.setProduct(PRODUCT);
+ /**
+ * 2. 设置录音文件识别请求参数,以JSON字符串的格式设置到请求Body中。
+ */
+ JSONObject taskObject = new JSONObject();
+ // 设置appkey
+ taskObject.put(KEY_APP_KEY, appKey);
+ // 设置音频文件访问链接
+ taskObject.put(KEY_FILE_LINK, fileLink);
+ // 新接入请使用4.0版本,已接入(默认2.0)如需维持现状,请注释掉该参数设置。
+ taskObject.put(KEY_VERSION, "4.0");
+ // 设置是否输出词信息,默认为false,开启时需要设置version为4.0及以上。
+ taskObject.put(KEY_ENABLE_WORDS, true);
+ String task = taskObject.toJSONString();
+ System.out.println(task);
+ // 设置以上JSON字符串为Body参数。
+ postRequest.putBodyParameter(KEY_TASK, task);
+ // 设置为POST方式的请求。
+ postRequest.setMethod(MethodType.POST);
+ postRequest.setHttpContentType(FormatType.JSON);
+ /**
+ * 3. 提交录音文件识别请求,获取录音文件识别请求任务的ID,以供识别结果查询使用。
+ */
+ String taskId = null;
+ try {
+ CommonResponse postResponse = client.getCommonResponse(postRequest);
+ System.err.println("提交录音文件识别请求的响应:" + postResponse.getData());
+ if (postResponse.getHttpStatus() == 200) {
+ JSONObject result = JSONObject.parseObject(postResponse.getData());
+ String statusText = result.getString(KEY_STATUS_TEXT);
+ if (STATUS_SUCCESS.equals(statusText)) {
+ taskId = result.getString(KEY_TASK_ID);
+ }
+ }
+ } catch (ClientException e) {
+ e.printStackTrace();
+ }
+ return taskId;
+ }
+
+ public String getFileTransResult(String taskId) {
+ /**
+ * 1. 创建CommonRequest,设置任务ID。
+ */
+ CommonRequest getRequest = new CommonRequest();
+ // 设置域名
+ getRequest.setDomain(DOMAIN);
+ // 设置API版本
+ getRequest.setVersion(API_VERSION);
+ // 设置action
+ getRequest.setAction(GET_REQUEST_ACTION);
+ // 设置产品名称
+ getRequest.setProduct(PRODUCT);
+ // 设置任务ID为查询参数
+ getRequest.putQueryParameter(KEY_TASK_ID, taskId);
+ // 设置为GET方式的请求
+ getRequest.setMethod(MethodType.GET);
+ /**
+ * 2. 提交录音文件识别结果查询请求
+ * 以轮询的方式进行识别结果的查询,直到服务端返回的状态描述为“SUCCESS”或错误描述,则结束轮询。
+ */
+ String result = null;
+ while (true) {
+ try {
+ CommonResponse getResponse = client.getCommonResponse(getRequest);
+ System.err.println("识别查询结果:" + getResponse.getData());
+ if (getResponse.getHttpStatus() != 200) {
+ break;
+ }
+ JSONObject rootObj = JSONObject.parseObject(getResponse.getData());
+ String statusText = rootObj.getString(KEY_STATUS_TEXT);
+ if (STATUS_RUNNING.equals(statusText) || STATUS_QUEUEING.equals(statusText)) {
+ // 继续轮询,注意设置轮询时间间隔。
+ Thread.sleep(10000);
+ } else {
+ // 状态信息为成功,返回识别结果;状态信息为异常,返回空。
+ if (STATUS_SUCCESS.equals(statusText)) {
+ result = rootObj.getString(KEY_RESULT);
+ // 状态信息为成功,但没有识别结果,则可能是由于文件里全是静音、噪音等导致识别为空。
+ if (result == null) {
+ result = "";
+ }
+ }
+ break;
+ }
+ } catch (Exception e) {
+ e.printStackTrace();
+ }
+ }
+ return result;
+ }
+
+ public static void main(String[] args) throws IOException {
+ String fileLink = "https://gw.alipayobjects.com/os/bmw-prod/0574ee2e-f494-45a5-820f-63aee583045a.wav";
+ FileTransJavaDemo demo = new FileTransJavaDemo(ALY_ACCESS_KEY_ID, ALY_ACCESS_KEY_SECRET);
+ // 第一步:提交录音文件识别请求,获取任务ID用于后续的识别结果轮询。
+ String taskId = demo.submitFileTransRequest(APP_KEY, fileLink);
+ if (taskId != null) {
+ System.out.println("录音文件识别请求成功,task_id: " + taskId);
+ } else {
+ System.out.println("录音文件识别请求失败!");
+ return;
+ }
+ // 第二步:根据任务ID轮询识别结果。
+ String result = demo.getFileTransResult(taskId);
+ if (result != null) {
+ System.out.println("录音文件识别结果查询成功:" + result);
+ } else {
+ System.out.println("录音文件识别结果查询失败!");
+ }
+ }
+}
diff --git a/src/main/java/Tools/TestUnit/TestDeepSeek.java b/src/main/java/Tools/TestUnit/TestDeepSeek.java
index b104fcd9..72cb5783 100644
--- a/src/main/java/Tools/TestUnit/TestDeepSeek.java
+++ b/src/main/java/Tools/TestUnit/TestDeepSeek.java
@@ -3,6 +3,7 @@ package Tools.TestUnit;
import java.util.Arrays;
import java.lang.System;
+import cn.hutool.core.io.FileUtil;
import com.alibaba.dashscope.aigc.generation.Generation;
import com.alibaba.dashscope.aigc.generation.GenerationParam;
import com.alibaba.dashscope.aigc.generation.GenerationResult;
@@ -19,21 +20,33 @@ public class TestDeepSeek {
//接入的API KEY
public static final String APIKEY = "sk-01d13a39e09844038322108ecdbd1bbc";
+ /**
+ * 获取系统提示语
+ *
+ * @return
+ */
+ public static String getSystemPrompt() {
+ String md = "D:\\dsWork\\ppt-generator-master\\md-file\\readme\\default.md";
+ return FileUtil.readUtf8String(md);
+ }
+
public static GenerationResult callWithMessage() throws ApiException, NoApiKeyException, InputRequiredException {
Generation gen = new Generation();
+ String systemPrompt ="返回的教案内容请严格按照指定的markdown语法格式返回,用来生成ppt。需要注意:1、最开头的Title:..,Author: ... Date:... 不能省略掉,有用处。2、第一级用#,第二级用##,第二级是独立的PPT一个页,每页中的数据必须有> 开头,如果是页面中的条目,必须用 - 开头,结果不要返回图片!请仔细阅读参考格式:"+getSystemPrompt();
Message systemMsg = Message.builder()
.role(Role.SYSTEM.getValue())
- .content("You are a helpful assistant.")
+ //.content("You are a helpful assistant.")
+ .content(systemPrompt)
.build();
Message userMsg = Message.builder()
.role(Role.USER.getValue())
- .content("你是谁?")
+ .content("请帮我生成一个小学数学内角和的教案,按标准格式输出。")
.build();
GenerationParam param = GenerationParam.builder()
// 若没有配置环境变量,请用百炼API Key将下行替换为:.apiKey("sk-xxx")
.apiKey(APIKEY)
// 模型列表:https://help.aliyun.com/zh/model-studio/getting-started/models
- .model(V3)
+ .model(R1)
.messages(Arrays.asList(systemMsg, userMsg))
.resultFormat(GenerationParam.ResultFormat.MESSAGE)
.build();
@@ -43,7 +56,9 @@ public class TestDeepSeek {
public static void main(String[] args) {
try {
GenerationResult result = callWithMessage();
- System.out.println(result.getOutput().getChoices().get(0).getMessage().getContent());
+ String mdContent=result.getOutput().getChoices().getFirst().getMessage().getContent();
+ System.out.println(mdContent);
+ FileUtil.writeUtf8String(mdContent,"D:\\dsWork\\ppt-generator-master\\md-file\\readme\\4.md");
} catch (ApiException | NoApiKeyException | InputRequiredException e) {
System.err.println("错误信息:" + e.getMessage());
System.out.println("请参考文档:https://help.aliyun.com/zh/model-studio/developer-reference/error-code");