当前位置: 首页 > wzjs >正文

知名高端网站建设企业亚洲影视传媒有限公司

知名高端网站建设企业,亚洲影视传媒有限公司,郑州商城app制作,品牌网店先看效果 项目搭建 Spring AI 是 Spring 推出的一个项目,目标是提供统一的API抽象层,屏蔽不同AI模型和服务的底层差异,实现跨平台兼容性。 演示使用的模型是阿里的 qwq-32b。 环境要求: JDK :17以上(包括…

先看效果

项目搭建

Spring AI 是 Spring 推出的一个项目,目标是提供统一的API抽象层,屏蔽不同AI模型和服务的底层差异,实现跨平台兼容性。

演示使用的模型是阿里的 qwq-32b。

环境要求:

JDK :17以上(包括17)

Spring Boot 版本:目前支持 3.4.X,3.5.X 发布后也会同步支持。

主要的 maven 依赖

<dependency><groupId>org.springframework.ai</groupId><artifactId>spring-ai-openai-spring-boot-starter</artifactId><version>1.0.0-M6</version>
</dependency>

配置文件:

qwq-32b的接口类似于openai ,所以直接使用 openai 的配置即可,其他类 openai 的模型也是类似。

spring:ai:openai:api-key: #申请的 keybase-url: https://dashscope.aliyuncs.com/compatible-mode #api地址chat:options:model: qwq-32b # 模型名称

编写接口

创建 ChatClient。ChatClient 提供了与 AI 模型通信的 Fluent API,它支持同步和反应式(Reactive)编程模型。

this.chatClient = ChatClient.builder(chatModel).defaultSystem(DEFAULT_PROMPT).defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory())).defaultAdvisors(new SimpleLoggerAdvisor()).defaultOptions(OpenAiChatOptions.builder().temperature(0.7d).build()).build();

创建接口,使用 SSE 响应结果,SSE 是一个单向的、从服务端向客户端推送数据的技术。使用SSE可以实时的将大模型的结果推送到前端。

@GetMapping
public SseEmitter chat(String message) {SseEmitter emitter = new SseEmitter();// 先把结果返回,后续逐渐响应结果CompletableFuture.runAsync(() -> {chatClient.prompt(message).stream().content().doOnComplete(emitter::complete).subscribe(result -> {try {emitter.send(result);} catch (IOException e) {throw new RuntimeException(e);}});});return emitter;
}

完整的接口代码如下:

package cn.salim.ai.controller;import org.springframework.ai.chat.client.ChatClient;
import org.springframework.ai.chat.client.advisor.MessageChatMemoryAdvisor;
import org.springframework.ai.chat.client.advisor.SimpleLoggerAdvisor;
import org.springframework.ai.chat.memory.InMemoryChatMemory;
import org.springframework.ai.openai.OpenAiChatModel;
import org.springframework.ai.openai.OpenAiChatOptions;
import org.springframework.web.bind.annotation.GetMapping;
import org.springframework.web.bind.annotation.RequestMapping;
import org.springframework.web.bind.annotation.RestController;
import org.springframework.web.servlet.mvc.method.annotation.SseEmitter;import java.io.IOException;
import java.util.concurrent.CompletableFuture;@RestController
@RequestMapping("ai")
public class AiController {private static final String DEFAULT_PROMPT = "你是一个资深Java程序员,你熟悉各种JAVA框架,包括SpringBoot、Mybatis等等";private final ChatClient chatClient;public AiController(OpenAiChatModel chatModel) {this.chatClient = ChatClient.builder(chatModel).defaultSystem(DEFAULT_PROMPT).defaultAdvisors(new MessageChatMemoryAdvisor(new InMemoryChatMemory())).defaultAdvisors(new SimpleLoggerAdvisor()).defaultOptions(OpenAiChatOptions.builder().temperature(0.7d).build()).build();}@GetMappingpublic SseEmitter chat(String message) {SseEmitter emitter = new SseEmitter();CompletableFuture.runAsync(() -> {chatClient.prompt(message).stream().content().doOnComplete(emitter::complete).subscribe(result -> {try {emitter.send(result);} catch (IOException e) {throw new RuntimeException(e);}});});return emitter;}}

http://www.dtcms.com/wzjs/794676.html

相关文章:

  • 企业内部门户网站建设方案湛江网页设计培训
  • 百度网盘0基础网站开发教程易点科技有限公司
  • 强的网站建设公镇江网页设计师招聘
  • 医疗软件网站建设公司上海做网站站优云一一十六
  • 网站建设全包专业定制珠海市住房和城乡建设部网站
  • 石家庄便宜网站制作国家建筑工程信息平台
  • cloud域名注册网站国家企业信用查询系统
  • 天晴创艺网站建设百度小程序wordpress中常用插件安装
  • 音乐网站用什么语言做手机网站优化怎么做
  • 嘉定php网站开发培训富阳注册公司
  • 福州网站设计哪里好重庆物流最新消息
  • 自己用iis怎么建设网站网络营销的优势与不足
  • 吉林城市建设学校网站wordpress 白屏
  • 网站-网站建设定制一站式服务理念
  • 烟台网站建设首推企汇互联见效付款免认证域名
  • vps怎么上传网站程序四川省工程信息造价网
  • 做英文网站哪个网站比较好wordpress 木马 查
  • 陕西省建设造价协会网站白云区建网站公司
  • 广东加盟网站建设怎么查到代码是哪个网站做的
  • 室内设计网站推荐知乎汕头建站程序
  • 上海专业网站建设精英汕头app制作
  • 如何介绍网站模板久久建筑网官网登录入口
  • 余姚汽车网站建设wordpress本地主机
  • 帮助设计的网站重庆好的网站制作公司哪家好
  • 江西省城市建设档案馆网站面包网站seo
  • 电子商务网站建设计划书嘉兴网站制作哪家专业
  • 优惠券网站是怎么做的引流渠道推广
  • 颜色搭配对网站重要性让人做网站需要注意什么
  • 钓鱼网站的域名怎么不稳定网站提交搜索引擎后出现问题
  • 深圳建设集团网站官网wordpress邀请码教程