使用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=请自我介绍

相关推荐
德林恩宝几秒前
On-Policy Distillation(OPD)学习文档
人工智能·学习·机器学习·大模型·llm·大模型微调
Highcharts.js1 分钟前
Highcharts 发布16项最新安全公告
人工智能·安全·性能优化·highcharts·可视化图表
光芒Shine2 分钟前
【工具-Claude Code】
人工智能
诸神缄默不语4 分钟前
vibe coding极简八步教程(在vibe出一个自用网站之后的领悟)
人工智能
水如烟7 分钟前
孤能子视角:EIS术语梳理·道层+伦理层——关系场的底色与自处姿态:从场域到续指
人工智能
wuminyu11 分钟前
JMM学习总结:深入理解happens-before关系
java·linux·c语言·jvm·c++
电商API_1800790524712 分钟前
反向海淘多币种结算:汇率该在哪个时点被冻结
java·开发语言·数据库·跨境电商·1688 api
a puppy slide 葱17 分钟前
ENAS | 基于参数共享的高效神经网络架构搜索
论文阅读·人工智能·深度学习·神经网络·机器学习·计算机视觉·神经网络架构搜索
科创致远19 分钟前
中小企业智能体(AI Agent)怎么选?2026年企业级Agent选型指南
大数据·人工智能·深度学习
空堂与归24 分钟前
英伟达开源ASPIRE:机器人自己攒Skill
人工智能·机器人·开源·agent