跨境派

跨境派

跨境派,专注跨境行业新闻资讯、跨境电商知识分享!

当前位置:首页 > 综合服务 > 电商平台 > 官方助力:SpringAI快速尝鲜体验(SpringBoot3+Gradle8+JDK17)

官方助力:SpringAI快速尝鲜体验(SpringBoot3+Gradle8+JDK17)

时间:2024-04-18 14:10:22 来源:网络cs 作者:纳雷武 栏目:电商平台 阅读:

标签: 体验  官方 

SpringAI

自从OpenAIChatGPT爆火之后,各种AI大模型开始席卷互联网,作为知名框架的Spring官方也是小小的顺应了一波潮流,就在不久前官方推出了针对AI的部分,称为SpringAI目前最新版本为0.8.1,下面是官网的截图。

直通车https://spring.io/projects/spring-ai

image-20240416200020731

根据官方的介绍,这个Spring AI 是一个人工智能工程应用框架。其目标是将 Spring 生态系统的设计原则(如可移植性和模块化设计)应用于人工智能领域,并推广使用 POJO 作为人工智能领域应用程序的构建模块。之前我们开发一个AI项目,都是自己找API,写接口,零开始一步一步开发,但是现在有了SpringAI,它可以帮我们快速整合各大主流的AI模型,并支持常规方式和流式输出以及图片处理等基本功能,快速开发一个AI项目可谓是有手手就行了,降低了一定的门槛;

目前支持的AI模型有:

image-20240416200746080

想要了解更多相关的信息可以去官网看看,下面就以OpenAI模型为例,快速体验一把SpringAI;对于模型的支持上,对国内玩家来说,美中不足的大概就是还不支持国内的一些模型,比如阿里的通义千问,百度的文心一言等等;


快速尝鲜

项目创建

使用SpringBoot初始化器创建一个SpringBoot项目,记得添加对应的AI依赖;

image-20240416202013313

我的项目配置信息参考:

JDK:17Gradle:8.7SpringBoot:3.2.4

注意,如果你要使用Snapshot版本,可能需要做一些小变动,具体看官方文档:https://docs.spring.io/spring-ai/reference/getting-started.html


属性配置

由于这里需要用到OpenAIkey,所以默认你已经拥有了这个前提;

确定使用的AI模型之后,我们需要在配置文件中添加一些必要的配置,比如OpenAikey等信息;不同的模型配置会有差异,这里始终以OpenAI为例,其他模型请自行移步官网,后文就不再赘述。

spring:  application:    name: DemonSpringAI  ai:    openai:      api-key: #你的key      chat:        options:          model: gpt-3.5-turbo          temperature: 0.7

接口开发

controller包下直接创建一个ChatController,内容如下:

/** * ===================我亦无它================================ * project name: SortingAlgorithms * author: Gemini48 * date: 2024/4/10 * blog: <a href="https://www.ilikexff.cn/">八尺妖剑</a> * description default * ====================唯手熟尔=============================== **/package cn.ilikexff.demonspringai.controller;import org.springframework.ai.chat.ChatResponse;import org.springframework.ai.chat.messages.UserMessage;import org.springframework.ai.chat.prompt.Prompt;import org.springframework.ai.openai.OpenAiChatClient;import org.springframework.beans.factory.annotation.Autowired;import org.springframework.web.bind.annotation.GetMapping;import org.springframework.web.bind.annotation.RequestParam;import org.springframework.web.bind.annotation.RestController;import reactor.core.publisher.Flux;import java.util.Map;@RestControllerpublic class ChatController {        @GetMapping("/hello")    public String hello() {        return "hello!";    }        private final OpenAiChatClient chatClient;    @Autowired    public ChatController(OpenAiChatClient chatClient) {        this.chatClient = chatClient;    }   @GetMapping("/ai/generate")    public Map generate(@RequestParam(value = "message",defaultValue = "自我介绍并给我讲个笑话。") String message) {        return Map.of("AI的回答:",chatClient.call(message));    }    @GetMapping("/ai/streams")    public Flux<ChatResponse> generateStream(@RequestParam(value = "message",defaultValue = "请自我介绍并给我讲个笑话。") String message) {        Prompt prompt = new Prompt(new UserMessage(message));        return chatClient.stream(prompt);    }}

注意,上面的接口中,除了第一个/hello是我写的测试接口,其他两个分别是SpringAI提供的controller,分别支持一般的文本内容输出(即请求会等待所有响应完毕之后再将回答一次性打印出来返回)与流式输出,这个就不用过多解释了吧,AI回答的每一个字都会实时的打印,这也是如今很常见的响应模式,比如OpenAI的官方提供的ChatGPT就是基于这种流的形式进行输出的;

下面我们使用postman分别对两个接口进行简单的测试,看看是否可以正常得到AI的回答:

常规接口测试

image-20240416225738515

流式接口测试

由于是流式的实时输出,因此无法通过截图的方式很好的展现,因此这里直接使用内置的http请求来进行测试并展现一部分截图:

image-20240416230239741

image-20240416230152465

到此为止,我们就完成了使用SpringAI快速体验,有一说一,确实节约了不少的开发时间;

注意

关于代理,由于国内访问openai成功的概率几乎为0,所以如果想成功走完这整个流程,提供两种方式:

使用国内镜像站代替官方默认的 api.openai.com

如果使用这种方式,请在.yml配置文件中新增一个base-url字段,修改后的内容如下:

spring:  ai:    openai:      api-key: # 你的 key      chat:        options:          model: gpt-3.5-turbo          temperature: 0.7      base-url: # 镜像站地址

使用代理访问

我这里采用的是代理的方式进行的,下面是参考代码:当然,至于如何处理代理,那就不是这篇文章讨论的重点了,靠自己的野路子去摸索吧。

image-20240417000048657


Vue3前端部分

时间不早了,看评论区各位同学的需求吧,如果需要前端实现的呼声够多,再抽时间补齐这部分,感谢阅读!

本文链接:https://www.kjpai.cn/news/2024-04-18/160058.html,文章来源:网络cs,作者:纳雷武,版权归作者所有,如需转载请注明来源和作者,否则将追究法律责任!

版权声明:本文内容由互联网用户自发贡献,该文观点仅代表作者本人。本站仅提供信息存储空间服务,不拥有所有权,不承担相关法律责任。如发现本站有涉嫌抄袭侵权/违法违规的内容,一经查实,本站将立刻删除。

文章评论