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

网站首页默认的文件名一般为阜阳网站建设推广

网站首页默认的文件名一般为,阜阳网站建设推广,东莞网站页设计制作,连云港网站定制开发先看效果 项目搭建 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/801601.html

相关文章:

  • 没有网站如何做天天联盟海安房产网
  • 网站规划与网页设计总结余姚企业网站建设公司
  • 广州电商网站建设赣州有做网站推广的公司吗
  • 手机网站建设实验报告火狐显示网站开发
  • 龙江网站建设phpcms 网站根目录
  • 怎样设计网站或网页沈阳城市建设招生网站
  • 查网站怎么做的企业查找
  • 烟台做网站哪里好wordpress自定义字段
  • 网站开发用什么开发工具好呢网站建设 镇江
  • 成品ppt的网站免费观看网页游戏电脑版
  • asp网站变慢做异形建筑的网站
  • 电商网站开发常用代码网站设置不安全
  • 领优惠券的网站是怎么做的字体排版设计网站
  • 哪个网站有做形象墙深圳市建设信息网官网
  • 如何在企业版社保网站做增员漳州 网站建设公司哪家好
  • 动易网站内容管理系统长沙做网站 青创互联
  • 建立淘宝客网站永久免费国外vps无需信用卡
  • 烟台开发区做网站2019wordpress使用手册
  • 山东省建设厅网站电话查询商务网站建设服务商
  • 老电脑做网站服务器查看网站是什么空间
  • 珠海网站品牌设计公司简介游戏平台网站
  • 安阳网站公司哪家好工程建设举报网有哪些网站
  • 黄金路网站建设公司全国企业网查询
  • 织梦网站导航固定外贸网站推广怎么样
  • 榆林免费做网站公司网站手机版绑定域名
  • 网站多个页面要加引导开发者是什么职业
  • 闲鱼钓鱼网站怎么制作网站源码天堂
  • 如何做的网站手机可以用湘潭注册公司
  • 做网站一般图片的比例网络营销产品概念的五个层次
  • 珠海市建设局网站广东省建设厅信息网