SpringBoot整合Spring AI实现项目访问chatgpt

前言

随着AI技术的快速发展,越来越多的应用开始整合AI能力,提供更智能、更个性化的体验。ChatGPT等开放式大型语言模型的出现,使得自然语言处理和对话系统的开发变得更加容易和流行。这些技术在社交媒体、客户服务、教育等方面显示出巨大的潜力,对于改善用户体验和生产力至关重要。

优势

过去,open ai已经提供了相应的Java集成解决方案:https://github.com/TheoKanning/openai-java,但Spring AI beta版的发布为我们提供了一个新的集成方向,与原来的方法相比,Spring AI有以下优势:

  1. 更快的开发周期:Spring AI的原生生态系统封装使开发人员能够更快地集成AI功能并加快项目迭代周期。
  2. 与现有技术栈无缝集成:如果您的项目已经构建在SpringBoot上,那么使用Spring AI将更容易,而无需引入额外的技术栈,并更好地利用您已经拥有的技术和资源。
  3. 强大的社区支持:Spring Framework拥有庞大的支持社区和活跃的开发者社区,可以为开发者提供更多的技术支持和解决方案。

简介

本文的目的是为读者提供一个基本的用例,以帮助学习如何将Spring AI集成到SpringBoot应用程序中以实现智能功能。通过本文,读者将学习如何利用现有的人工智能技术为应用程序添加自动化和智能,从而改善用户体验和应用程序的价值。接下来,我们将详细介绍如何在SpringBoot项目中配置和使用Spring AI,为您带来更智能的应用体验。

环境准备

  • jdk 17
  • springboot3.2.0
  • maven 3.9

步骤

1. Import dependencies

pom.xml编写以下代码:

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

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

<dependencies>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-web</artifactId>
        </dependency>
        <dependency>
            <groupId>org.springframework.ai</groupId>
            <artifactId>spring-ai-openai-spring-boot-starter</artifactId>
        </dependency>
        <dependency>
            <groupId>org.projectlombok</groupId>
            <artifactId>lombok</artifactId>
            <optional>true</optional>
        </dependency>
        <dependency>
            <groupId>org.springframework.boot</groupId>
            <artifactId>spring-boot-starter-test</artifactId>
            <scope>test</scope>
        </dependency>
    </dependencies>

2.配置自己的api-key和base-url

application.yml:

yaml 复制代码
server:
  port: 9876

spring:
  ai:
    openai:
      api-key: sk-xxx # The api-key of the application
      base-url: https://api.openai.com/ # default
      chat:
        # Specifying an API Configuration (Overriding the Global Configuration)
        api-key: sk-xxx
        base-url: https://api.openai.com/
        options:
          model: gpt-3.5-turbo 

3.配置您自己的OpenAI聊天客户端

这里需要说明的是,api-key和base-url在application.yml文件中配置好后,可以直接在服务层自动组装,但只能配置客户端的一种参数类型参考](https://docs.spring.io/spring-ai/reference/api/clients/openai-chat.html#_chat_properties)>%3E)

OpenAiChatConfig.java

kotlin 复制代码
@Configuration
public class OpenAiChatConfig {

    @Value("${spring.ai.openai.chat.api-key}")
    private String apiKey;
    @Value("${spring.ai.openai.chat.base-url}")
    private String baseUrl;

    @Bean("myOpenAiChatClient")
    public OpenAiChatClient myOpenAiChatClient(){
        OpenAiApi openAiApi = new OpenAiApi(baseUrl, apiKey);
        return new OpenAiChatClient(openAiApi);
    }
}

4. API调用

OpenAiChatService.java

arduino 复制代码
public interface OpenAiChatService {
    String easyChat(String message);
}

OpenAiChatServiceImpl.java

typescript 复制代码
@Service
public class OpenAiChatServiceImpl implements OpenAiChatService {
    @Resource(name = "myOpenAiChatClient")
    private OpenAiChatClient chatClient;

    @Override
    public String easyChat(String message) {
        Prompt prompt = new Prompt(message);
        return chatClient.call(prompt).getResult().getOutput().getContent();
    }
}

ChatController.java

less 复制代码
@RestController
@RequestMapping("/ai")
public class ChatController {
    @Resource
    private OpenAiChatService openAiChatService;

    @GetMapping(value = "/easyChat",params = "message")
    public String easyChat(@RequestParam String message){
        return openAiChatService.easyChat(message);
    }
}

5.成果展示

总结

Spring AI是一种原生封装,旨在为SpringBoot应用程序提供快速集成AI功能的解决方案。通过与Spring框架的完美集成,Spring AI可以利用Spring提供的依赖注入,使集成AI功能变得更加简单和灵活。借助Spring AI,开发团队能够更快地实现智能应用程序,并为用户提供更好的体验。

相关推荐
用户2986985301412 分钟前
.NET 文档自动化:Spire.Doc 设置奇偶页页眉/页脚的最佳实践
后端·c#·.net
序安InToo43 分钟前
第6课|注释与代码风格
后端·操作系统·嵌入式
xyy12343 分钟前
C#: Newtonsoft.Json 到 System.Text.Json 迁移避坑指南
后端
洋洋技术笔记1 小时前
Spring Boot Web MVC配置详解
spring boot·后端
JxWang051 小时前
VS Code 配置 Markdown 环境
后端
navms1 小时前
搞懂线程池,先把 Worker 机制啃明白
后端
JxWang051 小时前
离线数仓的优化及重构
后端
Nyarlathotep01131 小时前
gin01:初探gin的启动
后端·go
JxWang051 小时前
安卓手机配置通用多屏协同及自动化脚本
后端
JxWang051 小时前
Windows Terminal 配置 oh-my-posh
后端