java sse agent对接大模型
目录
- 需求背景
- 代码实现
1.需求背景
web项目中想要使用大模型的能力,前端不能直接调用,需要java应用层做一层包装增强。大模型是流式输出,所以采用sse服务端主动推流到客户端方式。发起请求使用原生的http
2.代码实现
public static void sseQuery(String aiUrl, QaRequest qaRequest, HttpServletResponse response) {
response.setContentType("text/event-stream");
response.setCharacterEncoding("UTF-8");
HttpURLConnection urlConnection = (HttpURLConnection) new URL(aiUrl).openConnection();
urlConnection.setDoOutput(true);
urlConnection.setDoInput(true);
urlConnection.setUseCaches(false);
urlConnection.setRequestMethod("POST");
urlConnection.setRequestProperty("Content-Type", "application/json;charset=UTF-8");
urlConnection.setRequestProperty("Connection", "Keep-Alive");
urlConnection.setRequestProperty("Accept", "text/event-stream");
urlConnection.getOutputStream().write(JSON.toJSONString(qaRequest).getBytes(StandardCharsets.UTF_8));
InputStream inputStream = urlConnection.getInputStream();
InputStreamReader inputStreamReader = new InputStreamReader(inputStream);
BufferedReader bufferedReader = new BufferedReader(inputStreamReader);
String line;
while ((line = bufferedReader.readLine()) != null) {
if (StrUtil.isNotEmpty(line) && line.length() > 0) {
response.getWriter().write(line + StrUtil.C_LF + StrUtil.C_LF);
response.getWriter().flush();
//add break code
}
}
}
touch fish

浙公网安备 33010602011771号