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

相关推荐
Victor35616 分钟前
MongoDB(2)MongoDB与传统关系型数据库的主要区别是什么?
后端
JaguarJack17 分钟前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端·php·服务端
BingoGo18 分钟前
PHP 应用遭遇 DDoS 攻击时会发生什么 从入门到进阶的防护指南
后端
Victor35619 分钟前
MongoDB(3)什么是文档(Document)?
后端
牛奔2 小时前
Go 如何避免频繁抢占?
开发语言·后端·golang
想用offer打牌7 小时前
MCP (Model Context Protocol) 技术理解 - 第二篇
后端·aigc·mcp
KYGALYX9 小时前
服务异步通信
开发语言·后端·微服务·ruby
掘了9 小时前
「2025 年终总结」在所有失去的人中,我最怀念我自己
前端·后端·年终总结
爬山算法9 小时前
Hibernate(90)如何在故障注入测试中使用Hibernate?
java·后端·hibernate
Moment10 小时前
富文本编辑器在 AI 时代为什么这么受欢迎
前端·javascript·后端