首页>代码>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 11月15日
最近浏览更多
GakkiMarryMe  LV9 昨天
yunannan  LV2 12月8日
dapeng0011  LV15 12月5日
Rommel  LV27 12月4日
wanglinddad  LV55 12月2日
冰枫xjz8  LV31 12月1日
Empty001 11月30日
暂无贡献等级
zq1685  LV4 11月26日
暂无贡献等级
顶部 客服 微信二维码 底部
>扫描二维码关注最代码为好友扫描二维码关注最代码为好友