|
|
|
|
package com.dsideal.Res.Test;
|
|
|
|
|
|
|
|
|
|
import cn.hutool.core.io.FileUtil;
|
|
|
|
|
import cn.hutool.http.HttpRequest;
|
|
|
|
|
import cn.hutool.http.HttpResponse;
|
|
|
|
|
import cn.hutool.json.JSONObject;
|
|
|
|
|
import cn.hutool.json.JSONUtil;
|
|
|
|
|
import com.alibaba.fastjson.JSONArray;
|
|
|
|
|
import com.jfinal.kit.PathKit;
|
|
|
|
|
|
|
|
|
|
import java.io.File;
|
|
|
|
|
|
|
|
|
|
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(() -> {
|
|
|
|
|
StringBuilder fullResponse = new StringBuilder();
|
|
|
|
|
try {
|
|
|
|
|
// 修改提示词确保只返回HTML
|
|
|
|
|
String htmlPrompt = prompt + "请只返回HTML代码,不要包含任何解释或Markdown格式。" +
|
|
|
|
|
"确保HTML是完整的,包含<!DOCTYPE html>和<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("<!DOCTYPE html>") && htmlContent.contains("</html>")) {
|
|
|
|
|
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);
|
|
|
|
|
}
|
|
|
|
|
}
|
|
|
|
|
|