spring boot3整合spring AI组件

⛰️个人主页:     蒾酒

🔥系列专栏:《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<String, Object> paramMap = new HashMap<>();


        paramMap.put("model", "gpt-3.5-turbo");
        List<Map<String, String>> dataList = new ArrayList<>();
        dataList.add(new HashMap<String, String>(){{
            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工具包

 <dependency>
    <groupId>cn.hutool</groupId>
    <artifactId>hutool-all</artifactId>
    <version>5.7.22</version>
 </dependency>

现在运行测试一下:

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

代码里面的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-uVfM7GiD9RIdIKRrF70eT3BlbkyhdHGHGH
spring.ai.openai.chat.options.model=gpt-3.5-turbo
spring.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
 */
@RestController
public 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组件到这里就结束了。任何问题评论区或私信讨论,欢迎指正。

<think>好的,用户现在想查找Spring AL接口的相关文档,特别是API参考。首先,我需要确认用户提到的“Spring AL”是否是正确的名称,因为Spring生态中有很多项目,可能存在拼写错误或者简称的情况。常见的Spring项目比如Spring AISpring AMQP、Spring AOP等,但“Spring AL”并不常见。 考虑到用户之前提到了Spring AOP的注解相关引用,可能用户是想问Spring AOP的相关接口文档,或者可能是指Spring AI,这是较新的项目。另外,也有可能用户误将“AOP”写成了“AL”,或者是其他模块的缩写。需要进一步确认。 接下来,我应该检查Spring官方文档中是否有名为“Spring AL”的项目。根据现有的知识,Spring官方项目中没有AL这个缩写。可能的情况是用户打错了字母,比如将AI写成AL,或者将AOP写成AL。例如,Spring AI是处理人工智能相关的模块,而Spring AOP是面向切面编程的模块。 为了帮助用户准确找到文档,我需要建议他们核实名称的正确性,并列举可能的Spring项目,比如Spring AISpring AOP、Spring AMQP等,同时提供这些项目的官方文档链接。此外,用户提到的引用是关于Spring AOP的注解,所以可能他们实际上需要的是AOP的文档,但误写成了AL。因此,需要引导用户确认需求,并提供相关链接。 另外,用户可能需要的是API参考文档,通常Spring项目的API文档可以在他们的官方站点找到,或者通过Maven仓库的Javadoc链接访问。需要指导用户如何访问这些资源,例如通过官网导航到对应项目的Reference文档部分,或者直接搜索Spring AI、AOP等的文档。 最后,考虑到用户可能不太清楚具体名称,应该建议他们检查拼写,并给出常见Spring项目的示例,帮助他们更准确地定位所需文档。</think>关于Spring AL接口文档的查询,您可能需要注意以下信息: ### 1. 核实技术名称的正确性 目前Spring官方框架中不存在名为"Spring AL"的组件。根据您提供的引用内容[^1],推测可能涉及以下两个方向: (1)**Spring AOP**(面向切面编程):提供方法拦截、注解驱动等特性,与您引用的注解匹配点描述相符。API文档参见: $$https://docs.spring.io/spring-framework/docs/current/reference/html/core.html#aop-api$$ (2)**Spring AI**(人工智能扩展):2023年新推出的项目,提供LLM集成能力。文档地址: $$https://spring.io/projects/spring-ai$$ ### 2. 典型查询路径建议 ```bash # 通过Spring官网查找 1. 访问 https://spring.io/projects 2. 使用顶部搜索框输入"AOP"或"AI" 3. 选择对应项目的"Reference Doc" ``` ### 3. API文档访问方式 对于Spring项目通常包含: - 参考指南(概念说明+配置示例) - Javadoc API(详细的类/方法说明) - GitHub源码(实现细节) 例如Spring AOP的Javadoc: $$https://docs.spring.io/spring-framework/docs/current/javadoc-api/org/springframework/aop/$$
评论 7
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

当前余额3.43前往充值 >
需支付:10.00
成就一亿技术人!
领取后你会自动成为博主和红包主的粉丝 规则
hope_wisdom
发出的红包

打赏作者

蒾酒

你的鼓励将是我创作的最大动力

¥1 ¥2 ¥4 ¥6 ¥10 ¥20
扫码支付:¥1
获取中
扫码支付

您的余额不足,请更换扫码支付或充值

打赏作者

实付
使用余额支付
点击重新获取
扫码支付
钱包余额 0

抵扣说明:

1.余额是钱包充值的虚拟货币,按照1:1的比例进行支付金额的抵扣。
2.余额无法直接购买下载,可以购买VIP、付费专栏及课程。

余额充值