首页>代码>IDEA + maven + SpringAI + 讯飞星火大模型实现简单智能对话>/studyAI/src/main/java/cn/temptation/web/ChatWithController.java
package cn.temptation.web;
import cn.temptation.config.EnumReflectionUtil;
import io.github.briqt.spark4j.SparkClient;
import io.github.briqt.spark4j.constant.SparkApiVersion;
import io.github.briqt.spark4j.model.SparkMessage;
import io.github.briqt.spark4j.model.SparkSyncChatResponse;
import io.github.briqt.spark4j.model.request.SparkRequest;
import jakarta.annotation.PostConstruct;
import jakarta.annotation.Resource;
import org.springframework.http.ResponseEntity;
import org.springframework.stereotype.Controller;
import org.springframework.web.bind.annotation.RequestBody;
import org.springframework.web.bind.annotation.RequestMapping;
import java.util.ArrayList;
import java.util.HashMap;
import java.util.List;
import java.util.Map;
@Controller
public class ChatWithController {
// 初始化客户端
@Resource
private SparkClient sparkClient;
// 通过反射类,在使用大模型时,指定使用免费的Spark Lite大模型
@PostConstruct
public void init() throws Exception {
// 修改 V1_5 的版本信息
EnumReflectionUtil.setEnumField(SparkApiVersion.V1_5, "version", "v1.1");
EnumReflectionUtil.setEnumField(SparkApiVersion.V1_5, "url", "https://spark-api.xf-yun.com/v1.1/chat");
EnumReflectionUtil.setEnumField(SparkApiVersion.V1_5, "domain", "lite");
}
// AI预设System角色的条件
public static final String PRECONDITION = "你是 iflytek";
// 跳转前端页面
@RequestMapping("/")
public String index() {
return "index";
}
// 和讯飞星火大模型Spark Lite对话
@RequestMapping(value = "/chat", produces = "application/json")
public ResponseEntity<?> sendHttpToSpark(@RequestBody Map<String, String> map) {
// 消息列表
List<SparkMessage> messages = new ArrayList<>();
// 设置System角色,则使用下句
// messages.add(SparkMessage.systemContent(PRECONDITION));
// 获取前端输入的对话内容,设置User角色
messages.add(SparkMessage.userContent(map.get("message")));
// 构造请求
SparkRequest sparkRequest = SparkRequest.builder()
.messages(messages)
.apiVersion(SparkApiVersion.V1_5)
.build();
SparkSyncChatResponse chatResponse = sparkClient.chatSync(sparkRequest);
String responseContent = chatResponse.getContent();
Map<String, Object> response = new HashMap<>();
response.put("response", responseContent);
return ResponseEntity.ok(response);
}
}

最近下载
最近浏览
