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

相关推荐
星辰_mya11 小时前
openfeign之在回首
java·架构·dubbo·springcloud·openfeign
青山木11 小时前
Hot 100 --- 滑动窗口最大值
java·数据结构·算法·leetcode·动态规划
青山木11 小时前
Hot 100 --- 除自身以外数组的乘积
java·数据结构·算法
闵孚龙11 小时前
Tensor:PyTorch 世界里的一切都是张量
人工智能·pytorch·python
GPT-Image211 小时前
AI把世界杯“提前踢开幕”了
人工智能·chatgpt·ai作画·aigc
Sam092711 小时前
Java 转 AI Agent 开发:Java 和 Python 的区别与快速学习指南
java·人工智能·python·ai
从负无穷开始的三次元代码生活11 小时前
AI基座知识点——了解AI核心组件内容部分
人工智能·ai
林间码客11 小时前
人工智能知识点复习汇总
人工智能
wilbertzhou11 小时前
大语言模型时代的语义元数据:从静态资产目录到智能治理
人工智能·llm·大语言模型·数据治理·元数据管理·语义元数据
heimeiyingwang11 小时前
【架构实战】数据脱敏与隐私保护:合规是底线
java·开发语言·架构