小工具知识网

当前位置: 首页 > 行业知识 > spring boot3整合spring AI组件

行业知识

spring boot3整合spring AI组件

2026-11-01 04:46:31 来源:互联网转载

⛰️个人主页:     蒾酒

系列专栏:《spring boot实战》


目录

写在前面

spring ai简介

单独整合al接口

整合Spring AI组件

起步条件

​编辑

进行必要配置

写在最后 


 最近发现了一个巨牛的人工智能学习网站,通俗易懂,风趣幽默,忍不住分享一下给大家。

    点击跳转到学习网站

写在前面

本文介绍了springboot开发后端服务中,AI组件(Spring AI)的整合与使用。坚持看完相信对你有帮助。

同时欢迎订阅springboot系列专栏,持续分享spring boot的使用经验。

spring ai简介

先看官网介绍:

翻译:

Spring AI 是 AI 工程的应用框架。其目标是将 Spring 生态系统设计原则(如可移植性和模块化设计)应用于 AI,并推广使用 POJO 作为 AI 领域应用程序的构建块。

翻译:

特征

跨 AI 提供商的可移植 API 支持,适用于聊天、文本到图像和嵌入模型。支持同步和流 API 选项。还支持下拉以访问特定于模型的功能。

在spring-ai组件没发布前,我们在spring boot中对接各种ai接口,由于接口规范格式的不同,我们通常每种接口都得单独去写代码去对接,最后通过实现策略模式来实现灵活切换ai接口源。这样是比较麻烦的。而spring-ai组件就是帮我们做了类似的封装,使得我们对接多种ai接口变得十分方便。

单独整合al接口

我们先来看spring boot简单整合经典的chatGPT 3.5接口

代码如下:

import cn.hutool.http.HttpRequest;import cn.hutool.json.JSONArray;import cn.hutool.json.JSONObject;import cn.hutool.json.JSONUtil;import java.util.ArrayList;import java.util.HashMap;import java.util.List;import java.util.Map;/** * @author mijiu * ClassName:OpenAIAPI.java * date:2024-05-06 16:49 * Description: */public class OpenAIAPI {    /**     * 聊天端点     */    private final static String CHAT_ENDPOINT = "https://api.openai.com/v1/chat/completions";//官网接口地址    private final static  String PROXY_ENDPOINT ="https://www.chatgp.fun/v1/chat/completions";//国内代理接口    private final static  String API_KEY = "Bearer sk-pbatvlgKeYScAS3kD4820bA1CcE741F996E0BaAb205421D1";    /**     * 需要代理服务器访问     *     * @param txt 内容     * @return {@link String}     */    public static String chat(String txt) {        Map paramMap = new HashMap();        paramMap.put("model", "gpt-3.5-turbo");        List dataList = new ArrayList();        dataList.add(new HashMap(){{            put("role", "user");            put("content", txt);        }});        paramMap.put("messages", dataList);        System.out.println(JSONUtil.toJsonStr(paramMap));        JSONObject message = null;        try {            String body = HttpRequest.post(PROXY_ENDPOINT)                    .header("Authorization", API_KEY)                    .header("Content-Type", "application/json")                    .body(JSONUtil.toJsonStr(paramMap))                    .execute()                    .body();            JSONObject jsonObject = JSONUtil.parseObj(body);            System.out.println(jsonObject);            JSONArray choices = jsonObject.getJSONArray("choices");            JSONObject result = choices.get(0, JSONObject.class, Boolean.TRUE);            message = result.getJSONObject("message");        } catch (Exception e) {            return "抱歉,我无法回答你的问题。";        }        return message.getStr("content");    }    public static void main(String[] args) {        System.out.println(chat("你是?"));    }}

这段代码依赖hutool工具包的http工具包

     cn.hutool    hutool-all    5.7.22 

现在运行测试一下:

可以看到目前整合调用测试成功了。

代码里面的api-key有一定量的token新手可以复制代码运行下试试。言归正传下面开始介绍核心内容。

整合Spring AI组件

起步条件

  • jdk不低于17
  • spring boot 3x

    我们直接新建一个demo项目

    为何直接新建一个项目的,主要是为了避开一些麻烦。如,阿里云maven镜像没有此依赖,需要到中央仓库下载。

    一定要选不低于Java17的jdk

    选择这两个依赖就够了

    • Spring Web
    • OpenAI

      spring boot的版本不要低于3.0

      等待依赖下载完成。

      进行必要配置

      这个api-key需要你去openal官网去申请购买,或者在一些购物软件直接购买现成的用。

      共需要配置:

      1. spring.ai.openai.api-key: 这是你的 OpenAI API 密钥,它是用于通过 API 访问 OpenAI 服务的凭证。密钥应该是一个长字符串,用于标识你的账户并授权访问。

      2. spring.ai.openai.chat.options.model: 这是用于设置对话系统所使用的 OpenAI 模型的选项之一。在这种情况下,模型选择为 GPT-3.5 Turbo,这是 OpenAI 提供的一种强大的自然语言处理模型,适用于生成对话。

      3. spring.ai.openai.chat.options.temperature: 这是对话系统生成响应时的温度参数。温度参数控制着生成文本的多样性,值越高,生成文本的多样性越大。在这里,温度设置为 0.7,这意味着对话系统生成的文本会相对保守,但仍具有一定的多样性。

      application.properties:

      spring.ai.openai.api-key=sk-uVfM7GiD9RIdIKRrF70eT3BlbkyhdHGHGHspring.ai.openai.chat.options.model=gpt-3.5-turbospring.ai.openai.chat.options.temperature=0.7

      代码里面的api-key是我随意写的一个,需要换成你自己的且有效的 。

      测试控制器

      import org.springframework.ai.embedding.EmbeddingClient;import org.springframework.ai.embedding.EmbeddingResponse;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 java.util.List;import java.util.Map;/** * @author mijiupro */@RestControllerpublic class EmbeddingController {    private final EmbeddingClient embeddingClient;    @Autowired    public EmbeddingController(EmbeddingClient embeddingClient) {        this.embeddingClient = embeddingClient;    }    @GetMapping("/ai/embedding")    public Map embed(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {        EmbeddingResponse embeddingResponse = this.embeddingClient.embedForResponse(List.of(message));        return Map.of("embedding", embeddingResponse);    }}

      最后启动项目浏览器地址栏访问测试接口即可。

      http://localhost:8080/ai/embedding

      写在最后 

      spring boot3整合AI组件到这里就结束了。任何问题评论区或私信讨论,欢迎指正。

上一篇:金融网站源码深度解析,揭秘专业金融平台的构建秘诀!

下一篇:网站忘记服务器怎么查找?