首页>代码>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);
    }
}
最近下载更多
最代码官方  LV168 昨天
最近浏览更多
interface  LV22 59分钟前
最代码官方  LV168 昨天
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友