AI 赋能:Spring AI 系列课程(1)

在微信中阅读,关注公众号:CodeFit

创作不易,如果你觉得这篇文章对你有帮助,请不要忘了 点赞分享关注 我的公众号:CodeFit,为我的持续创作提供一些动力。


这是我准备写的 Spring AI 系列文章,这是第一篇

Spring AI 项目还非常新,在写本文的时候版本是 0.8.1,预计 1.0 也快了。

主要内容参考了官方文档,然后经过我的实践进行一些修改,以便大家由浅入深地学习。
https://docs.spring.io/spring-ai/reference/index.html

内容侧重实践,下面直接开撸。

1. 添加依赖

目前使用 Spring AI,推荐引入 Spring snapshot 或 milestone 版本存储库,当然同时引入也可以。

<repositories>
    <repository>
        <id>spring-snapshots</id>
        <name>Spring Snapshots</name>
        <url>https://repo.spring.io/snapshot</url>
        <releases>
            <enabled>false</enabled>
        </releases>
    </repository>
    <repository>
        <id>spring-milestones</id>
        <name>Spring Milestones</name>
        <url>https://repo.spring.io/milestone</url>
        <snapshots>
            <enabled>false</enabled>
        </snapshots>
    </repository>
</repositories>

Spring 还提供了 spring-ai-bom 来避免我们自己指定和维护 spring-ai 的版本。

所以,建议把 BOM 添加到 pom.xmml 中:

<dependencyManagement>
    <dependencies>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-bom</artifactId>
            <version>${spring-ai.version}</version>
            <type>pom</type>
            <scope>import</scope>
        </dependency>
    </dependencies>
</dependencyManagement>

目前的版本是 0.81,添加 properties 配置项中添加对应版本号:

<properties>
    <java.version>21</java.version>
    <spring-ai.version>0.8.1</spring-ai.version>
</properties>

然后是引入 OpenAI 依赖,添加如下依赖:

<dependency>
   <groupId>org.springframework.experimental.ai</groupId>
   <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
</dependency>

另外一种选择是 Azure OpenAI,如下依赖:

<dependency>
   <groupId>org.springframework.experimental.ai</groupId>
   <artifactId>spring-ai-azure-openai-spring-boot-starter</artifactId>
</dependency>

我们以 spring-ai-openai 举例。

2. 获取 OpenAI API 密钥

由于接入的是 OpenAI,所以肯定要先获取 OpenAI 的 API 密钥啦,否则没法通过连接调用 OpenAI 的 API。

没有申请过的同学,需要进入 https://platform.openai.com/ 进行申请。
在这里插入图片描述

然后你会得到一个密钥:

在这里插入图片描述

把密钥添加到项目的配置文件中,同时,同时设置默认使用最新的 gpt-4o 模型。

spring:
  ai:
    openai:
      api-key: {your key}
      chat:
        options:
          model: gpt-4o

3. 项目结构

在这里插入图片描述

4. 在 service 包下创建 AiService

@Service
public class AiService {

    ChatClient chatClient;

    @Autowired
    public AiService(ChatClient chatClient) {
        this.chatClient = chatClient;
    }

    public Completion generateJoke(String message) {
        return new Completion() {
            @Override
            public String getValue() {
                return chatClient.call(message);
            }

            @Override
            public String getMessage() {
                return chatClient.call(message);
            }
        };
    }

    public String generateFiveName() {
        ChatResponse response = chatClient.call(
                new Prompt(
                        "Generate the names of 5 famous pirates.",
                        OpenAiChatOptions.builder()
                                .withModel("gpt-4o")
                                .withTemperature(0.4f)
                                .build()
                ));
        System.out.println(response);
        return response.getResult().toString();
    }
}

我们来看看代码涉及了哪些内容:

  1. 注入了 ChatClient 实例,这是与 OpenAI 服务器通信的接口。

  2. 创建 generateJoke 方法,调用 ChatClientcall 方法和 OpenAI 进行通信,接收 String 类型参数,这里会直接返回字符串文本。

  3. 创建 generateFiveName 方法,和上一个方法类似,不同的是传递的是 Prompt 类型参数。OpenAiChatOptions 类提供了对模型的配置,它在运行时可以通过 Prompt 调用添加新的配置,它会覆盖全局配置。例如,覆盖全局默认的 ModelTemperature 设置。

5. 在 controller 包下创建 AiController

@RestController
@RequestMapping("/api/v1/ai")
public class AiController {

    AiService aiService;

    @Autowired
    public AiController(AiService aiService) {
        this.aiService = aiService;
    }

    @GetMapping("/joke")
    public String getJoke(@RequestParam(value = "message", defaultValue = "Tell me a joke") String message) {
        return aiService.generateJoke(message);
    }

    @GetMapping("/five_name")
    public String getFiveName() {
        return aiService.generateFiveName();
    }

}

这里创建了两个 endpoints,分别调用刚才我们写的 service 方法。

  1. /api/v1/ai/joke
    在这里插入图片描述

  2. /api/v1/ai/five_name
    在这里插入图片描述

总结

我们讲了如何设置依赖、获取 API 密钥、创建服务和接口,并通过实际案例展示如何调用 OpenAI 的 API。


感谢你的阅读!

如果你觉得这篇文章对你有帮助,请点赞、分享,并关注 CodeFit,这样你就不会错过更多的精彩内容。

同时,你的 支持反馈 对我非常重要,欢迎在评论区留言,与我互动。

谢谢大家,下次见!

评论
添加红包

请填写红包祝福语或标题

红包个数最小为10个

红包金额最低5元

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

打赏作者

CodeFit

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

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

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

打赏作者

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

抵扣说明:

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

余额充值