一起学springAI系列一:流式返回
上一篇:一起学springAI系列一:初体验-CSDN博客
生成式大模型
生成式大模型是当前人工智能领域的核心技术之一,其本质是基于大规模数据训练的深度学习模型,具备自主生成全新内容(如文本、图像、音频、视频等)的能力。
生成式模型的核心能力是 “创造新内容”,是一个一个字推导出来的,像我们在使用豆包,千问等提问问题的时候可以看出来,字是一个或多个逐步显示出来的,我们在技术上是通过流式(SSE)返回来接收的。
今天我们就通过SpringAI来实现接收流式返回
/*** 一次性返回* @param message* @return*/@GetMapping("/hi")public String sayHi(@RequestParam(required = false, defaultValue = "讲个笑话") String message) {return chatClient.prompt().user(message) // 用户的输入,可以理解为用户提示词.call() // 调用大模型.content(); // 获取大模型的回复, string类型的}/*** 流式返回* @param message* @return*/@GetMapping(value = "/hi-stream", produces = MediaType.TEXT_EVENT_STREAM_VALUE)public Flux<String> hiStream(@RequestParam(required = false, defaultValue = "讲个笑话") String message) {return chatClient.prompt().user(message) // 用户的输入,可以理解为用户提示词.stream() // 调用大模型流式返回.content(); // 获取大模型的回复, string类型的}
要点:
一、@GetMapping增加参数:produces = MediaType.TEXT_EVENT_STREAM_VALUE,其值就是“text/event-stream”,加了这个,接口在返回的responseheader里面其实就有一个accept=text/event-stream
二、返回类型是 Flux<String>, 流式的字符串,springAI还支持Flux<ChatResponse>、Flux<ChatClientResponse> 这俩后面在说,先搞明白简单的。
三、.stream() 这个就是告诉大模型要流式返回,后面.content()返回的是string类型。
返回: