一、基于hutool
Hutool 是一个小而全的 Java 工具类库,通过封装 JDK 中现有的工具方法,提供了更加简洁、易用、功能强大的工具方法。Hutool 旨在通过提供一套简单、快速的 Java 工具类,帮助开发者提高开发效率,减少代码冗余。
二、服务使用接口设置
由于我们的公网ip绑定了对应的域名,因此我们直接接入域名:
三、函数实现
代码的具体分析见代码中具体注释:
public String chat(String content){
// 创建一个 Map 对象来存放请求体数据
Map<String,Object> body = new HashMap<>();
// 向请求体中添加系统消息和用户输入的提示信息
body.put("system_message", SYS_MSG);
body.put("prompt", content);
String res = ""; // 用于存放请求的响应结果
try{
// 发送 HTTP POST 请求
res = HttpRequest.post(chatEndpoint)
.header("Content-Type", "application/json") // 设置请求头,指定内容类型为 JSON
.body(JSONUtil.toJsonStr(body)) // 将请求体转换为 JSON 字符串
.execute() // 执行请求
.body(); // 获取响应体内容
}catch (Exception e){
// 捕获异常并记录警告日志
log.warn("请求出错");
e.printStackTrace(); // 打印异常堆栈信息
}
// 解析响应结果为 JSON 对象
JSONObject jsonObject = JSONUtil.parseObj(res);
// 从 JSON 对象中提取响应内容
String data = jsonObject.getStr("response");
// 返回响应内容的子字符串,去掉最后 10 个字符
return data.substring(0, data.length() - 10);
}
四、修改控制类ChatController
只需要注意将对应的content传入chat函数即可
@PostMapping("/chat")
public Result chat(@RequestBody SessionVO sessionVO){
String content = sessionVO.getContent();
Long sessionId = sessionVO.getSessionId();
String result = ChatUtil.chat2(content);
JSONObject resultJson = JSONUtil.parseObj(result);
if(result.length()>0){
if((sessionId = cgipSessionService.insertItemPair(sessionId,content,result))>0){
resultJson.append("sessionId",sessionId);
return Result.success(resultJson);
}
}
throw new CGIPException("会话建立失败",this.getClass().getName()+"/chat");
}
五、前端测试
如图显示,我们给出我们需要提取的文档:
已经能够呈现正确的结果输出: