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,开发团队能够更快地实现智能应用程序,并为用户提供更好的体验。

相关推荐
2401_857622661 小时前
SpringBoot框架下校园资料库的构建与优化
spring boot·后端·php
2402_857589361 小时前
“衣依”服装销售平台:Spring Boot框架的设计与实现
java·spring boot·后端
哎呦没3 小时前
大学生就业招聘:Spring Boot系统的架构分析
java·spring boot·后端
_.Switch3 小时前
Python Web 应用中的 API 网关集成与优化
开发语言·前端·后端·python·架构·log4j
杨哥带你写代码4 小时前
足球青训俱乐部管理:Spring Boot技术驱动
java·spring boot·后端
AskHarries5 小时前
读《show your work》的一点感悟
后端
A尘埃5 小时前
SpringBoot的数据访问
java·spring boot·后端
yang-23075 小时前
端口冲突的解决方案以及SpringBoot自动检测可用端口demo
java·spring boot·后端
Marst Code5 小时前
(Django)初步使用
后端·python·django
代码之光_19805 小时前
SpringBoot校园资料分享平台:设计与实现
java·spring boot·后端