java sse agent对接大模型

目录

  1. 需求背景
  2. 代码实现

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
		}
	}
}
posted @ 2024-09-05 10:22  meow_world  阅读(136)  评论(0)    收藏  举报