From 5004788c89c0313af6a90908731942fb515c5076 Mon Sep 17 00:00:00 2001 From: HuangHai <10402852@qq.com> Date: Sun, 1 Jun 2025 15:41:22 +0800 Subject: [PATCH] 'commit' --- .../61B49F1B-DF15-4ed1-9C8C-3CF1E1499748.txt | Bin 12046 -> 0 bytes .../com/dsideal/Res/Test/CallDeepSeek.java | 118 ++++++++++++++++++ .../com/dsideal/Res/Util/CallDeepSeek.java | 81 ------------ dsAi/src/main/resources/XueYuan.sql | 2 + dsAi/target/classes/XueYuan.sql | 2 + 5 files changed, 122 insertions(+), 81 deletions(-) delete mode 100644 dsAi/src/main/java/com/dsideal/Res/Test/61B49F1B-DF15-4ed1-9C8C-3CF1E1499748.txt create mode 100644 dsAi/src/main/java/com/dsideal/Res/Test/CallDeepSeek.java delete mode 100644 dsAi/src/main/java/com/dsideal/Res/Util/CallDeepSeek.java create mode 100644 dsAi/src/main/resources/XueYuan.sql create mode 100644 dsAi/target/classes/XueYuan.sql diff --git a/dsAi/src/main/java/com/dsideal/Res/Test/61B49F1B-DF15-4ed1-9C8C-3CF1E1499748.txt b/dsAi/src/main/java/com/dsideal/Res/Test/61B49F1B-DF15-4ed1-9C8C-3CF1E1499748.txt deleted file mode 100644 index bf7ec7d6ce407bdebd3af4470a8e0fa2d989af48..0000000000000000000000000000000000000000 GIT binary patch literal 0 HcmV?d00001 literal 12046 zcmeI2TW=Fb6vyYamHHhlWQp*=CULGr2#KaiO9h1zDjupn_?9%maj5Me;KR55{bw?n z+1a(dzNJ(`k+ZwAb2-=loO5RX`MY5@OvCJ$hg|i)VYW<-{~PAOY?^KRf7g6xzBN~7 zV9rctn&v&fw)xX^c{(*cb8h}D(LeC3nIrRow|(ZU75ZPY?$G>Y>3nFO*dC7eOV&&2sUbo2dBuud{x`XbZ_oRE z-mO7Vo{JjPwfJqJfjzEz+B3U6ci^O9_Gxc$*X3`Yx7*ye>CvHm$M$%D%%!7mtPExf$wrX{KV)UR7zuY^BmefBh6>5>m(xWpVKA{ zm(QS9QQ5_cMo{D}4gzqP=rFN_O2u7Co-hq_vE-WBE0(#QlZkH$<1-L(6PV7MSJyvRup4xQ~&b z+6=)`w(-BcFNV_$YZ;++Var+t$>ep`Fpn1IBt@{vXt4~ttAo{Di-809jx9cqP|jKg z);Hu)Pw}q~G79oq1~sunWgCtEp+qwY5fC*KctoG(x6bb*{_U!GsGHv=@{qypfc^FuJ|&ykdD<@Qj;rP= zv(_eb%gcXu>b0|P+_6U7?iH+NcB&gT=1#pqn6}Dj&dXZ9Y3r}3~d0zadATtU6!=oY`vJYOSOXKj5(E24DyP)57YS2FX0 z`xBeHXx)5I*K*2SXEVmXZ76A%t}gqC*DpqPeRgoI7}J)L2H4V@gux` zl)G-->au!PbXU9`V=Z21pR6o}&@Lm0HB*J_bgm$SEi8H`!NBQQGOrBE^&=|{yd9xW z*>0S}kK-|pu{McWQw*5SNt)vp?NM{&YX?;_jYZ?{ppy*UXJEiSze{{nl2RUD9es-R zm1oFUzZ6pj2^JMcE{<<)c(^p{5elrM{|j0!kh5wW>ma16JF2*-Li4-zan*bRQrFBq zaKhJ>9@=WjJ0ek`VDKAq{$(@!G>+|l7t5GETbtK|rM-Z@<^CL_leqkf(9`Ag6`{vfjK6$@7M85Op86UzjQ7cx z_@UZns|wCiAyE}y8S*E)*YvnserCTlR}7Zg#NF4L^85QTbQ5Fx-W+l1VltVhN*-4j z=NTWOP@N@h&m4uO91m}H^p4%_6+2`%xt8Dmt5T`lu!Ft3IRc;6#t-om=Vyzp8|1S| zWSiEG=80`x#Irj2JVj=`iYFAym(o0$OcfhCDcIHb#E-(=7zOgZ6!V;62l-anQy3fc ztIFWw_J2Wa)*`MJZ8|rS{kv1J7rC}z&w1)R&1GW(t*V*noJ2dJ zJ4seFx>m|%p!gB-@#5Z7m0nSFg8cp2%VcS8L)qfA4cMnuZ+UI6%Ah;k`I>xYBXDOC zIsxz9?&pdjVp_+I53*FIwD@_Rr&nj(K5Kh*d+(@t3P-MDRkt)=!IAp=lN#}p)*6Fl zyISJ-Ipf`Sm;7&Wo?K>BJZJDVy65OaHAd%UalO=Gkgtil>`C0|JUdhk{doDc>h#m+ z4O&x#%71sFBg=4mkn>;Ji)v=>bSp&evXpWCREr(rWkLjf>rfSm z{u}CwXVQW8Ec%W{+~^!n=M4Uv8uvw#%Vl2TKS%V@{w>YhgNsby(!uTbr-uEAANG`lwA3TN0SB_rXJY`=4J2Hyoa zR7YLo^v&<5d9U9g@~nofu|3UBf$V$|4WZ&ash%>Ph87;J(`-jsywYT;j2{;);{eYu z+VXVlE|=0F`cR&v(?&(IUPtM!5_kwBVw!g5+E1p@r1<0mR`f2hnsGD~zs#5}m$VA6 zvp)BIXN#3T+PzMeEZJzE&A-)YP`-C86@3di`z|}3A{V7iTf6u@#4@CzSWuQSZS|c( zF5zRq@>6h^L&*}$qgS0#53mH~FtUp`$bHDO&Q-41MLkvH`}y@1T@-5={_S$8dj(C3 z&gy($;ON#jkX`%JmoCa6p7Sg`>`kEF&l5+Wn>I)AC;$Gmcs2BUd{$ q=c;J)*@}~}%SNhFS^Nraxm0?+i>mVPI#No { + StringBuilder fullResponse = new StringBuilder(); + try { + // 修改提示词确保只返回HTML + String htmlPrompt = prompt + "请只返回HTML代码,不要包含任何解释或Markdown格式。" + + "确保HTML是完整的,包含和标签。"; + + JSONObject json = new JSONObject(); + json.set("model", "deepseek-chat"); + // 修改为对象形式构建messages + JSONObject message = new JSONObject(); + message.set("role", "user"); + message.set("content", htmlPrompt); + JSONArray messages = new JSONArray(); + messages.add(message); + json.set("messages", messages); + + json.set("stream", true); + System.out.println(json); // 打印最终请求体 + HttpRequest request = HttpRequest.post(API_URL) + .header("Content-Type", "application/json") + .header("Authorization", "Bearer " + API_KEY) + .header("Accept", "text/event-stream") + .body(json.toString()); + + HttpResponse response = request.execute(); + if (response.isOk()) { + String[] lines = response.body().split("\\r?\\n"); + for (String line : lines) { + if (line.startsWith("data:")) { + String data = line.substring(5).trim(); + if (!data.equals("[DONE]")) { + JSONObject jsonData = JSONUtil.parseObj(data); + if (jsonData.containsKey("choices")) { + String content = jsonData.getJSONArray("choices") + .getJSONObject(0) + .getJSONObject("delta") + .getStr("content", ""); + if (content != null && !content.isEmpty()) { + fullResponse.append(content); + listener.onData(content); + } + } + } + } + } + + // 保存HTML到文件 + String htmlContent = fullResponse.toString(); + if (htmlContent.contains("") && htmlContent.contains("")) { + FileUtil.writeString(htmlContent, new File("C:\\1.html"), "UTF-8"); + listener.onComplete("HTML已成功保存到C:\\1.html"); + } else { + listener.onError("返回内容不是有效的HTML"); + } + } else { + listener.onError("API请求失败: " + response.getStatus()); + } + } catch (Exception e) { + listener.onError(e.getMessage()); + } + }).start(); + } + + public static void main(String[] args) { + String sql = FileUtil.readUtf8String(new File(PathKit.getRootClassPath()+"/XueYuan.sql")); + String prompt = "你是一个数据库SQL的血缘关系分析专家,我将提供SQL语句给你,帮我整理数据血缘关系,并且绘制HTML页面,以展示最终的可视化展现。"; + + callDeepSeekStream(prompt + "\n" + sql, new SSEListener() { + @Override + public void onData(String data) { + System.out.print(data); + } + + @Override + public void onComplete(String fullResponse) { + System.out.println("\n\n完整回复: " + fullResponse); + } + + @Override + public void onError(String error) { + System.err.println("错误: " + error); + } + }); + + try { + Thread.sleep(30000); + } catch (InterruptedException e) { + e.printStackTrace(); + } + } + + public interface SSEListener { + void onData(String data); + + void onComplete(String fullResponse); + + void onError(String error); + } +} + diff --git a/dsAi/src/main/java/com/dsideal/Res/Util/CallDeepSeek.java b/dsAi/src/main/java/com/dsideal/Res/Util/CallDeepSeek.java deleted file mode 100644 index 7e5b45d5..00000000 --- a/dsAi/src/main/java/com/dsideal/Res/Util/CallDeepSeek.java +++ /dev/null @@ -1,81 +0,0 @@ -package com.dsideal.Res.Util; - -import cn.hutool.http.HttpRequest; -import cn.hutool.http.HttpResponse; -import cn.hutool.json.JSONObject; -import cn.hutool.json.JSONUtil; - -public class CallDeepSeek { - private static final String API_KEY = "sk-44ae895eeb614aa1a9c6460579e322f1"; // 请替换为您的API KEY - private static final String API_URL = "https://api.deepseek.com/v1/chat/completions"; - - public static void callDeepSeekStream(String prompt, SSEListener listener) { - new Thread(() -> { - try { - JSONObject json = new JSONObject(); - json.set("model", "deepseek-chat"); - json.set("messages", JSONUtil.parseArray( - "[{\"role\":\"user\",\"content\":\"" + prompt + "\"}]" - )); - json.set("stream", true); // 启用流式响应 - - HttpRequest request = HttpRequest.post(API_URL) - .header("Content-Type", "application/json") - .header("Authorization", "Bearer " + API_KEY) - .header("Accept", "text/event-stream") // SSE支持 - .body(json.toString()); - - HttpResponse response = request.execute(); - if (response.isOk()) { - // 处理流式响应 - String[] lines = response.body().split("\\r?\\n"); - for (String line : lines) { - if (line.startsWith("data:")) { - String data = line.substring(5).trim(); - if (!data.equals("[DONE]")) { - listener.onData(data); - } - } - } - listener.onComplete(); - } else { - listener.onError("API请求失败: " + response.getStatus()); - } - } catch (Exception e) { - listener.onError(e.getMessage()); - } - }).start(); - } - - public static void main(String[] args) { - callDeepSeekStream("你好", new SSEListener() { - @Override - public void onData(String data) { - System.out.println("收到数据: " + data); - } - - @Override - public void onComplete() { - System.out.println("流式传输完成"); - } - - @Override - public void onError(String error) { - System.err.println("错误: " + error); - } - }); - - // 保持主线程运行 - try { - Thread.sleep(30000); // 等待30秒 - } catch (InterruptedException e) { - e.printStackTrace(); - } - } - - public interface SSEListener { - void onData(String data); - void onComplete(); - void onError(String error); - } -} diff --git a/dsAi/src/main/resources/XueYuan.sql b/dsAi/src/main/resources/XueYuan.sql new file mode 100644 index 00000000..a2af0cba --- /dev/null +++ b/dsAi/src/main/resources/XueYuan.sql @@ -0,0 +1,2 @@ +select tsl.person_id,tsl.person_name,tsl.mz,tdm.mz_name,tsl.xb,tdx.xb_name from t_sys_loginperson as tsl inner join t_dm_mz as tdm on tsl.mz=tdm.mz_id + inner join t_dm_xb as tdx on tsl.xb=tdx.xb_id \ No newline at end of file diff --git a/dsAi/target/classes/XueYuan.sql b/dsAi/target/classes/XueYuan.sql new file mode 100644 index 00000000..a2af0cba --- /dev/null +++ b/dsAi/target/classes/XueYuan.sql @@ -0,0 +1,2 @@ +select tsl.person_id,tsl.person_name,tsl.mz,tdm.mz_name,tsl.xb,tdx.xb_name from t_sys_loginperson as tsl inner join t_dm_mz as tdm on tsl.mz=tdm.mz_id + inner join t_dm_xb as tdx on tsl.xb=tdx.xb_id \ No newline at end of file