main
HuangHai 1 month ago
parent aba3031fb1
commit c57807a5f2

@ -67,7 +67,6 @@ public class AiGenerate extends PptAIKit {
// 生成输出文件路径
String timestamp = new SimpleDateFormat("yyyyMMdd_HHmmss").format(new Date());
String outputPath = "教育资源对比分析报告_" + timestamp + ".docx";
System.out.println("开始调用DeepSeek进行数据分析...");
// 调用DeepSeek进行分析
@ -93,7 +92,7 @@ public class AiGenerate extends PptAIKit {
// 生成PPT
// 生成PPT
System.out.println("\n\n=== 开始生成PPT ===");
generatePptPresentation(analysisPrompt);
generatePptPresentation(analysisPrompt, biJiao);
} catch (Exception e) {
System.err.println("保存文件时出错: " + e.getMessage());
@ -112,6 +111,7 @@ public class AiGenerate extends PptAIKit {
* PPT
*/
private static String createPptPrompt(String dataContent, String[] cities) {
//todo
return "请基于以下教育资源配置数据,为" + String.join("与", cities) +
"教育资源配置对比分析创建一个专业的PPT大纲。\n\n" +
"PPT应包含以下主要部分\n" +
@ -129,11 +129,11 @@ public class AiGenerate extends PptAIKit {
/**
* PPT稿
*/
private static void generatePptPresentation(String analysisContent) {
private static void generatePptPresentation(String analysisContent, String[] biJiao) {
try {
String uid = "test";
// 第一步使用DeepSeek生成简化的PPT提示词
String simplifiedPptPrompt = generateSimplifiedPptPrompt(analysisContent);
String simplifiedPptPrompt = createPptPrompt(analysisContent, biJiao);
// 创建 api token (有效期2小时建议缓存到redis同一个 uid 创建时之前的 token 会在10秒内失效)
String apiToken = PptAIKit.createApiToken(uid, null);
@ -165,52 +165,6 @@ public class AiGenerate extends PptAIKit {
}
}
// 新增方法使用DeepSeek生成简化的PPT提示词
private static String generateSimplifiedPptPrompt(String analysisContent) {
try {
// 构建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) {
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内容。";
}
/**
*
*/

@ -175,37 +175,5 @@ public class CallDeepSeek {
void onError(String error);
}
/**
*
* @param analysisPrompt
* @param listener
* @param outputPath
*/
public static void callDeepSeekForDocumentAnalysis(String analysisPrompt, SSEListener listener, String outputPath) {
callDeepSeekStream(analysisPrompt, new SSEListener() {
@Override
public void onData(String data) {
listener.onData(data);
}
@Override
public void onComplete(String fullResponse) {
try {
// 保存分析结果到文档
FileUtil.writeString(fullResponse, new File(outputPath), "UTF-8");
listener.onComplete("文档分析报告已保存到: " + outputPath);
} catch (Exception e) {
listener.onError("保存文档时出错: " + e.getMessage());
}
}
@Override
public void onError(String error) {
listener.onError(error);
}
}, outputPath, true);
}
}

Loading…
Cancel
Save