main
HuangHai 1 month ago
parent 8bf60e617d
commit 7add7065cb

@ -7,7 +7,6 @@ import com.dsideal.base.Plugin.YamlProp;
import com.dsideal.base.Tools.Util.CallDeepSeek; import com.dsideal.base.Tools.Util.CallDeepSeek;
import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil; import com.dsideal.base.Tools.Util.LocalMysqlConnectUtil;
import com.dsideal.base.Tools.Util.PptAIKit; import com.dsideal.base.Tools.Util.PptAIKit;
import com.dsideal.base.Tools.Util.HttpUtils;
import com.jfinal.plugin.activerecord.Db; import com.jfinal.plugin.activerecord.Db;
import com.jfinal.plugin.activerecord.Record; import com.jfinal.plugin.activerecord.Record;
import cn.hutool.json.JSONUtil; import cn.hutool.json.JSONUtil;
@ -16,7 +15,6 @@ import org.apache.poi.xwpf.usermodel.XWPFParagraph;
import org.apache.poi.xwpf.usermodel.XWPFRun; import org.apache.poi.xwpf.usermodel.XWPFRun;
import org.apache.poi.xwpf.usermodel.ParagraphAlignment; import org.apache.poi.xwpf.usermodel.ParagraphAlignment;
import java.io.File;
import java.io.FileOutputStream; import java.io.FileOutputStream;
import java.text.SimpleDateFormat; import java.text.SimpleDateFormat;
import java.util.Date; import java.util.Date;
@ -65,8 +63,6 @@ public class AiGenerate extends PptAIKit {
// 构建分析提示词 // 构建分析提示词
String analysisPrompt = createAnalysisPrompt(dataContent.toString()); String analysisPrompt = createAnalysisPrompt(dataContent.toString());
// 构建PPT生成提示词
String pptPrompt = createPptPrompt(dataContent.toString(), biJiao);
// 生成输出文件路径 // 生成输出文件路径
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
@ -97,7 +93,7 @@ public class AiGenerate extends PptAIKit {
// 生成PPT // 生成PPT
// 生成PPT // 生成PPT
System.out.println("\n\n=== 开始生成PPT ==="); System.out.println("\n\n=== 开始生成PPT ===");
generatePptPresentation(biJiao, pptPrompt); generatePptPresentation(analysisPrompt);
} catch (Exception e) { } catch (Exception e) {
System.err.println("保存文件时出错: " + e.getMessage()); System.err.println("保存文件时出错: " + e.getMessage());
@ -133,56 +129,87 @@ public class AiGenerate extends PptAIKit {
/** /**
* PPT稿 * PPT稿
*/ */
private static void generatePptPresentation(String[] cities, String pptPrompt) { private static void generatePptPresentation(String analysisContent) {
try { try {
// 创建主题 String uid = "test";
String subject = String.join("与", cities) + "教育资源配置对比分析"; // 第一步使用DeepSeek生成简化的PPT提示词
String uid = "user123"; String simplifiedPptPrompt = generateSimplifiedPptPrompt(analysisContent);
// 创建 api token // 创建 api token (有效期2小时建议缓存到redis同一个 uid 创建时之前的 token 会在10秒内失效)
String apiToken = PptAIKit.createApiToken(uid, null); String apiToken = PptAIKit.createApiToken(uid, null);
System.out.println("PPT API token: " + apiToken); System.out.println("api token: " + apiToken);
// 生成大纲 - 修正参数顺序 // 生成大纲
System.out.println("\n\n========== 正在生成PPT大纲 ==========\n"); System.out.println("\n\n========== 正在生成大纲 ==========");
String outline = PptAIKit.generateOutline(apiToken, subject, null, pptPrompt); String outline = PptAIKit.generateOutline(apiToken, null, null, simplifiedPptPrompt);
System.out.println("PPT大纲生成完成");
// 生成大纲内容 - 修正参数 // 生成大纲内容
System.out.println("\n\n========== 正在生成PPT内容 ==========\n"); System.out.println("\n\n========== 正在生成大纲内容 ==========");
String markdown = PptAIKit.generateContent(apiToken, outline, null, pptPrompt); String markdown = PptAIKit.generateContent(apiToken, outline, null, simplifiedPptPrompt);
System.out.println("PPT内容生成完成");
// 随机选择一个模板 // 随机一个模板
System.out.println("\n\n========== 选择PPT模板 ==========\n"); System.out.println("\n\n========== 随机选择模板 ==========");
String templateId = PptAIKit.randomOneTemplateId(apiToken); String templateId = PptAIKit.randomOneTemplateId(apiToken);
System.out.println("选择的模板ID: " + templateId); System.out.println(templateId);
// 生成PPT // 生成PPT
System.out.println("\n\n========== 正在生成PPT文件 ==========\n"); System.out.println("\n\n========== 正在生成PPT ==========");
JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false); JSONObject pptInfo = PptAIKit.generatePptx(apiToken, templateId, markdown, false);
String pptId = pptInfo.getString("id"); String pptId = pptInfo.getString("id");
System.out.println("PPT ID: " + pptId); System.out.println("pptId: " + pptId);
System.out.println("PPT主题" + pptInfo.getString("subject")); System.out.println("ppt主题" + pptInfo.getString("subject"));
System.out.println("PPT封面" + pptInfo.getString("coverUrl") + "?token=" + apiToken); System.out.println("ppt封面" + pptInfo.getString("coverUrl") + "?token=" + apiToken);
} catch (Exception e) {
// 下载PPT到当前目录 e.printStackTrace();
System.out.println("\n\n========== 正在下载PPT ==========\n"); }
JSONObject result = PptAIKit.downloadPptx(apiToken, pptId); }
String url = result.getString("fileUrl");
System.out.println("PPT下载链接" + url);
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date()); // 新增方法使用DeepSeek生成简化的PPT提示词
String savePath = System.getProperty("user.dir") + File.separator + "教育资源对比分析PPT_" + timestamp + ".pptx"; private static String generateSimplifiedPptPrompt(String analysisContent) {
HttpUtils.download(url, new File(savePath)); try {
System.out.println("PPT下载完成保存路径" + savePath); // 构建DeepSeek的请求提示词
String deepseekPrompt = "请根据以下教育数据分析内容生成一个简洁的PPT制作提示词。" +
"要求:\n" +
"1. 提取关键数据点和结论\n" +
"2. 突出对比分析结果\n" +
"3. 控制字数在500字以内\n" +
"4. 适合PPT展示的结构化内容\n\n" +
"原始分析内容:\n" + analysisContent;
// 添加PPT结构要求
return "请根据以下内容生成PPT\n\n" +
"PPT结构要求\n" +
"1. 封面 - 标题和概述\n" +
"2. 目录 - 内容导航\n" +
"3. 数据概览 - 整体情况\n" +
"4. 详细分析 - 分项对比\n" +
"5. 问题识别 - 发现的问题\n" +
"6. 建议方案 - 解决措施\n" +
"7. 总结 - 结论和展望\n\n" +
"内容要点:\n" + deepseekPrompt;
} catch (Exception e) { } catch (Exception e) {
System.err.println("生成PPT时出错: " + e.getMessage());
e.printStackTrace(); e.printStackTrace();
// 如果DeepSeek调用失败返回基础的PPT提示词
return createBasicPptPrompt();
} }
} }
// 基础PPT提示词作为备用方案
private static String createBasicPptPrompt() {
return "请根据教育资源配置数据生成PPT\n\n" +
"PPT结构要求\n" +
"1. 封面 - 标题和概述\n" +
"2. 目录 - 内容导航\n" +
"3. 数据概览 - 整体情况\n" +
"4. 详细分析 - 分项对比\n" +
"5. 问题识别 - 发现的问题\n" +
"6. 建议方案 - 解决措施\n" +
"7. 总结 - 结论和展望\n\n" +
"请基于上传的数据生成具体的PPT内容。";
}
/** /**
* *
*/ */

@ -0,0 +1,62 @@
package com.dsideal.base.Tools;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.base.Tools.Util.HttpUtils;
import com.dsideal.base.Tools.Util.PptAIKit;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
import java.util.Map;
/**
* PPT
*
* @author veasion
* @date 2024/7/12
*/
public class AiPptDemo2 extends PptAIKit {
public static void main(String[] args) throws Exception {
// 第三方用户ID数据隔离
String uid = "test";
// 文档文件,支持 word/excel/ppt/md/txt/pdf 等类型
File file = new File("README.md");
// 创建 api token (有效期2小时建议缓存到redis同一个 uid 创建时之前的 token 会在10秒内失效)
String apiToken = PptAIKit.createApiToken(uid, null);
System.out.println("apiToken: " + apiToken);
// 解析文件
String dataUrl = PptAIKit.parseFileData(apiToken, file, null, null);
// 生成大纲
System.out.println("\n\n========== 正在生成大纲 ==========");
String outline = PptAIKit.generateOutline(apiToken, null, dataUrl, null);
// 异步生成大纲内容
System.out.println("\n\n========== 正在异步生成大纲内容 ==========");
Map<String, String> pptInfo = PptAIKit.asyncGenerateContent(apiToken, outline, dataUrl, null, null);
String pptId = pptInfo.get("id");
// 下载PPT到桌面
System.out.println("\n\n========== 正在下载PPT ==========");
System.out.println("pptId: " + pptId);
String url = null;
for (int i = 0; i < 30; i++) {
// 等待PPT文件可下载
JSONObject result = PptAIKit.downloadPptx(apiToken, pptId);
if (result != null) {
url = result.getString("fileUrl");
if (url != null) {
break;
}
}
Thread.sleep(1000);
}
System.out.println("ppt链接" + url);
String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx";
HttpUtils.download(url, new File(savePath));
System.out.println("ppt下载完成保存路径" + savePath);
}
}

@ -0,0 +1,45 @@
package com.dsideal.base.Tools;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.base.Tools.Util.HttpUtils;
import com.dsideal.base.Tools.Util.PptAIKit;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
/**
* PPT
*
* @author veasion
* @date 2024/7/12
*/
public class AiPptDemo3 extends PptAIKit {
public static void main(String[] args) throws Exception {
// 第三方用户ID数据隔离
String uid = "test";
String subject = "AI未来的发展";
// 创建 api token (有效期2小时建议缓存到redis同一个 uid 创建时之前的 token 会在10秒内失效)
String apiToken = PptAIKit.createApiToken(uid, null);
System.out.println("apiToken: " + apiToken);
// 通过主题直接生成PPT
System.out.println("\n正在生成PPT...\n");
JSONObject pptInfo = PptAIKit.directGeneratePptx(apiToken, true, null, subject, null, null, false);
String pptId = pptInfo.getString("id");
String fileUrl = pptInfo.getString("fileUrl");
System.out.println("\n\n===============");
System.out.println("pptId: " + pptId);
System.out.println("ppt主题" + pptInfo.getString("subject"));
System.out.println("ppt封面" + pptInfo.getString("coverUrl"));
System.out.println("ppt链接" + fileUrl);
// 下载PPT到桌面
String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx";
HttpUtils.download(fileUrl, new File(savePath));
System.out.println("ppt下载完成保存路径" + savePath);
}
}

@ -0,0 +1,49 @@
package com.dsideal.base.Tools;
import com.alibaba.fastjson.JSONObject;
import com.dsideal.base.Tools.Util.HttpUtils;
import com.dsideal.base.Tools.Util.PptAIKit;
import javax.swing.filechooser.FileSystemView;
import java.io.File;
/**
* PPT
*
* @author veasion
* @date 2024/7/12
*/
public class AiPptDemo4 {
public static void main(String[] args) throws Exception {
// 第三方用户ID数据隔离
String uid = "test";
// 文档文件,支持 word/excel/ppt/md/txt/pdf 等类型
File file = new File("README.md");
// 创建 api token (有效期2小时建议缓存到redis同一个 uid 创建时之前的 token 会在10秒内失效)
String apiToken = PptAIKit.createApiToken( uid, null);
System.out.println("apiToken: " + apiToken);
// 解析文件
String dataUrl = PptAIKit.parseFileData(apiToken, file, null, null);
// 通过文件直接生成PPT
System.out.println("\n正在生成PPT...\n");
JSONObject pptInfo = PptAIKit.directGeneratePptx(apiToken, true, null, null, dataUrl, null, false);
String pptId = pptInfo.getString("id");
String fileUrl = pptInfo.getString("fileUrl");
System.out.println("\n\n===============");
System.out.println("pptId: " + pptId);
System.out.println("ppt主题" + pptInfo.getString("subject"));
System.out.println("ppt封面" + pptInfo.getString("coverUrl"));
System.out.println("ppt链接" + fileUrl);
// 下载PPT到桌面
String savePath = FileSystemView.getFileSystemView().getHomeDirectory().getAbsolutePath() + File.separator + pptId + ".pptx";
HttpUtils.download(fileUrl, new File(savePath));
System.out.println("ppt下载完成保存路径" + savePath);
}
}
Loading…
Cancel
Save