parent
7f53a798cc
commit
d7425679a2
@ -0,0 +1,81 @@
|
|||||||
|
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);
|
||||||
|
}
|
||||||
|
}
|
Loading…
Reference in new issue