使用Spring-ai实现同步响应和流式响应

文章目录


application.yaml配置文件

yml 复制代码
server:
  port: 8080
  servlet:
    encoding:
      charset: utf-8  # 解决流式响应的乱码问题
      force: true
      enabled: true

spring:
  ai:
    zhipuai:
      api-key: ${ZHIPU_KEY} # 配置 API Key
      base-url: "https://open.bigmodel.cn/api/paas"  # 配置模型地址
      chat:
        options:
          model: glm-4-flash

ZhipuChatController.java

java 复制代码
package org.example.controller;

import org.springframework.ai.chat.messages.SystemMessage;
import org.springframework.ai.chat.messages.UserMessage;
import org.springframework.ai.chat.model.ChatModel;
import org.springframework.ai.chat.model.ChatResponse;
import org.springframework.ai.chat.prompt.Prompt;
import org.springframework.ai.zhipuai.ZhiPuAiChatOptions;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RequestParam;
import org.springframework.web.bind.annotation.RestController;
import reactor.core.publisher.Flux;

import java.util.List;

@RestController
@RequestMapping("/zhipuai")
public class ZhipuChatController {

    private final ChatModel chatModel;

    // 通过构造器注入ChatModel
    public ZhipuChatController(ChatModel chatModel) {
        this.chatModel = chatModel;
    }

    // 同步响应
    @GetMapping("/simple")
    public String simpleChat(@RequestParam(name = "query") String query) {
        // 调用模型
        return chatModel.call(query);
    }

    // 流式响应
    @GetMapping("/stream/chat")
    public Flux<String> streamChat(@RequestParam(name = "query") String query) {
        // 调用模型
        return chatModel.stream(query);
    }
}

使用浏览器访问接口才能看到效果

访问:127.0.0.1:8080/zhipuai/stream/chat?query=请自我介绍

相关推荐
苏渡苇几秒前
Spring Insight 里上报 Span 为什么用 JDK HttpClient 而不是 RestTemplate
java·后端·spring·spring cloud·springboot·性能监控
龙亘川3 分钟前
数智防控 全域闭环:智慧安防如何筑牢城市公共安全新底座?
人工智能·信息可视化·开源·智慧城市
裕晟资质规划4 分钟前
军工保密资质二级申报的四个可量化硬条件:条文位置、数值口径与西安配套企业实务要点
java·服务器·网络·数据库·算法
武子康4 分钟前
第一次用 SGLang:把本地模型接进聊天应用
人工智能·llm·agent
初願致夕霞6 分钟前
C/C++传统程序内存分布(代码实测)
java·c语言·c++
掉鱼的猫6 分钟前
不只是 Token 流:Solon AI 4.1 的语义化聊天事件
java·openai
玩美数据-8 分钟前
企业级在线调研与数据分析解决方案
大数据·人工智能·数据分析
用户5274675614219 分钟前
Agent 跑满一天不等于多一个人:用四个指标算真实产能
人工智能
天远Date Lab11 分钟前
零信任架构实战:基于天远行驶OCR证识别构建自动化高并发物流车队准入网关
人工智能·架构·自动化·ocr
厚皮龙11 分钟前
CoT Monitoring 与 Activation Monitoring 总结
人工智能